From 55ae941bfca394b04918450a49ab161a174b3970 Mon Sep 17 00:00:00 2001 From: Sam Holmes Date: Mon, 23 Sep 2024 15:36:50 -0700 Subject: [PATCH 1/4] Make cognitive-load improvement in hasServerListChanged function --- src/common/plugin/PluginState.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/common/plugin/PluginState.ts b/src/common/plugin/PluginState.ts index 54b06743..d499dff4 100644 --- a/src/common/plugin/PluginState.ts +++ b/src/common/plugin/PluginState.ts @@ -235,8 +235,7 @@ export function makePluginState(settings: PluginStateSettings): PluginState { const existingServers = new Set(currentCustomServers) if (newServers.size !== existingServers.size) return true for (const server of settings.blockbookServers) { - if (existingServers.has(server)) continue - return true + if (!existingServers.has(server)) return true } return false } From fbad5516606500093535843628f64fa2b86e5dd5 Mon Sep 17 00:00:00 2001 From: Sam Holmes Date: Mon, 23 Sep 2024 15:37:43 -0700 Subject: [PATCH 2/4] Rename updateServers parameter --- src/common/plugin/PluginState.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/common/plugin/PluginState.ts b/src/common/plugin/PluginState.ts index d499dff4..22bbe7b2 100644 --- a/src/common/plugin/PluginState.ts +++ b/src/common/plugin/PluginState.ts @@ -228,13 +228,13 @@ export function makePluginState(settings: PluginStateSettings): PluginState { } }, - async updateServers(settings: UtxoUserSettings): Promise { + async updateServers(newSettings: UtxoUserSettings): Promise { const hasServerListChanged = (): boolean => { const currentCustomServers = Object.keys(serverCache.customServers) - const newServers = new Set(settings.blockbookServers) + const newServers = new Set(newSettings.blockbookServers) const existingServers = new Set(currentCustomServers) if (newServers.size !== existingServers.size) return true - for (const server of settings.blockbookServers) { + for (const server of newSettings.blockbookServers) { if (!existingServers.has(server)) return true } return false @@ -242,7 +242,7 @@ export function makePluginState(settings: PluginStateSettings): PluginState { // If no changes to the user settings, then exit early if ( - settings.enableCustomServers === serverCache.enableCustomServers && + newSettings.enableCustomServers === serverCache.enableCustomServers && !hasServerListChanged() ) { return @@ -263,12 +263,12 @@ export function makePluginState(settings: PluginStateSettings): PluginState { // only using the exact customServers provided. serverCache = { ...serverCache, - enableCustomServers: settings.enableCustomServers, + enableCustomServers: newSettings.enableCustomServers, customServers: {} } serverCacheDirty = true await saveServerCache() - await instance.refreshServers(settings.blockbookServers) + await instance.refreshServers(newSettings.blockbookServers) for (const engine of enginesToBeStarted) { await engine.start() } From 8724c84c86f5cc87a8822702a850fcabfb15b612 Mon Sep 17 00:00:00 2001 From: Sam Holmes Date: Mon, 23 Sep 2024 15:54:36 -0700 Subject: [PATCH 3/4] Remove negation operator to lower cognitive-load --- src/common/plugin/PluginState.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/common/plugin/PluginState.ts b/src/common/plugin/PluginState.ts index 22bbe7b2..630f6698 100644 --- a/src/common/plugin/PluginState.ts +++ b/src/common/plugin/PluginState.ts @@ -229,21 +229,21 @@ export function makePluginState(settings: PluginStateSettings): PluginState { }, async updateServers(newSettings: UtxoUserSettings): Promise { - const hasServerListChanged = (): boolean => { + const isServerListMatching = (): boolean => { const currentCustomServers = Object.keys(serverCache.customServers) const newServers = new Set(newSettings.blockbookServers) const existingServers = new Set(currentCustomServers) - if (newServers.size !== existingServers.size) return true + if (newServers.size !== existingServers.size) return false for (const server of newSettings.blockbookServers) { - if (!existingServers.has(server)) return true + if (!existingServers.has(server)) return false } - return false + return true } // If no changes to the user settings, then exit early if ( newSettings.enableCustomServers === serverCache.enableCustomServers && - !hasServerListChanged() + isServerListMatching() ) { return } From f672fd14b92e371ccaeda0503446e1f07facb3a3 Mon Sep 17 00:00:00 2001 From: Sam Holmes Date: Mon, 23 Sep 2024 15:45:09 -0700 Subject: [PATCH 4/4] Force enableCustomServers to false server list is empty --- CHANGELOG.md | 2 ++ src/common/plugin/PluginState.ts | 16 +++++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 98b43193..bb996deb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +- changed: No longer allow for the custom server list to be empty; fallback to default servers if no custom servers are provided. + ## 3.3.2 (2024-09-09) - fixed: Fix incorrect `EdgeTransaction.nativeAmount` returned by `EdgeCurrencyEngine.sweepPrivateKey` diff --git a/src/common/plugin/PluginState.ts b/src/common/plugin/PluginState.ts index 630f6698..42bfec73 100644 --- a/src/common/plugin/PluginState.ts +++ b/src/common/plugin/PluginState.ts @@ -248,6 +248,20 @@ export function makePluginState(settings: PluginStateSettings): PluginState { return } + // Force enableCustomServers to false server list is empty because + // an empty server list would cause the wallets to never sync, and + // this is unlikely the user's intention. + // This means policy change was decided later, which makes + // `enableCustomServers` functionally only useful for disabling custom + // servers entirely even when passing a list of servers (which could have + // been done by passing an empty list to begin with). + // In other words, this field is more of an internal field to track whether + // to treat the list a static or not (whether to fetch serve lists outside + // of the list provided by the user or not). + const enableCustomServers = + newSettings.enableCustomServers && + newSettings.blockbookServers.length !== 0 + // Stop all engines and clear the server list: const enginesToBeStarted = [] const disconnects = [] @@ -263,7 +277,7 @@ export function makePluginState(settings: PluginStateSettings): PluginState { // only using the exact customServers provided. serverCache = { ...serverCache, - enableCustomServers: newSettings.enableCustomServers, + enableCustomServers, customServers: {} } serverCacheDirty = true