From bfb97e034f4791d64266e782d820d7ffc4dfe605 Mon Sep 17 00:00:00 2001 From: Reckless_Satoshi Date: Sat, 30 Dec 2023 16:45:45 +0000 Subject: [PATCH] Fix update coordinators urls on network change --- .../src/components/RobotAvatar/robohash.worker.ts | 2 +- frontend/src/components/SettingsForm/index.tsx | 6 +++++- frontend/src/models/Coordinator.model.ts | 12 +++++++++--- frontend/src/models/Federation.model.ts | 8 ++++++++ 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/frontend/src/components/RobotAvatar/robohash.worker.ts b/frontend/src/components/RobotAvatar/robohash.worker.ts index a7549235..11616755 100644 --- a/frontend/src/components/RobotAvatar/robohash.worker.ts +++ b/frontend/src/components/RobotAvatar/robohash.worker.ts @@ -9,7 +9,7 @@ self.addEventListener('message', async (event) => { const avatarB64 = await async_generate_robohash(hash, size == 'small' ? 80 : 256); const imageUrl = `data:image/png;base64,${avatarB64}`; const t1 = performance.now(); - console.log(`Worker ${workerIndex} :: Time to generate avatar: ${t1 - t0} ms`); + console.log(`Avatar generated in: ${t1 - t0} ms`); // Send the result back to the main thread self.postMessage({ cacheKey, imageUrl }); }); diff --git a/frontend/src/components/SettingsForm/index.tsx b/frontend/src/components/SettingsForm/index.tsx index 79d04e3c..f720cf28 100644 --- a/frontend/src/components/SettingsForm/index.tsx +++ b/frontend/src/components/SettingsForm/index.tsx @@ -29,13 +29,16 @@ import { } from '@mui/icons-material'; import { systemClient } from '../../services/System'; import SwapCalls from '@mui/icons-material/SwapCalls'; +import { FederationContext, UseFederationStoreType } from '../../contexts/FederationContext'; interface SettingsFormProps { dense?: boolean; } const SettingsForm = ({ dense = false }: SettingsFormProps): JSX.Element => { - const { fav, setFav, settings, setSettings } = useContext(AppContext); + const { fav, setFav, origin, hostUrl, settings, setSettings } = + useContext(AppContext); + const { federation } = useContext(FederationContext); const theme = useTheme(); const { t } = useTranslation(); const fontSizes = [ @@ -223,6 +226,7 @@ const SettingsForm = ({ dense = false }: SettingsFormProps): JSX.Element => { value={settings.network} onChange={(e, network) => { setSettings({ ...settings, network }); + federation.updateUrls(origin, { ...settings, network }, hostUrl); systemClient.setItem('settings_network', network); }} > diff --git a/frontend/src/models/Coordinator.model.ts b/frontend/src/models/Coordinator.model.ts index ae745756..5623858e 100644 --- a/frontend/src/models/Coordinator.model.ts +++ b/frontend/src/models/Coordinator.model.ts @@ -133,7 +133,13 @@ export class Coordinator { onStarted: (shortAlias: string) => void = () => {}, ): Promise => { if (this.enabled !== true) return; + void this.updateUrl(settings, origin, hostUrl); + void this.update(() => { + onStarted(this.shortAlias); + }); + }; + updateUrl = async (settings: Settings, origin: Origin, hostUrl: string): Promise => { if (settings.selfhostedClient && this.shortAlias !== 'local') { this.url = hostUrl; this.basePath = `/${settings.network}/${this.shortAlias}`; @@ -141,9 +147,6 @@ export class Coordinator { this.url = String(this[settings.network][origin]); this.basePath = ''; } - void this.update(() => { - onStarted(this.shortAlias); - }); }; update = async (onUpdate: (shortAlias: string) => void = () => {}): Promise => { @@ -170,6 +173,7 @@ export class Coordinator { loadBook = (onDataLoad: () => void = () => {}): void => { if (!this.enabled) return; + if (this.url === '') return; if (this.loadingBook) return; this.loadingBook = true; @@ -196,6 +200,7 @@ export class Coordinator { loadLimits = (onDataLoad: () => void = () => {}): void => { if (!this.enabled) return; + if (this.url === '') return; if (this.loadingLimits) return; this.loadingLimits = true; @@ -224,6 +229,7 @@ export class Coordinator { loadInfo = (onDataLoad: () => void = () => {}): void => { if (!this.enabled) return; + if (this.url === '') return; if (this.loadingInfo) return; this.loadingInfo = true; diff --git a/frontend/src/models/Federation.model.ts b/frontend/src/models/Federation.model.ts index 09286162..ca4ec54e 100644 --- a/frontend/src/models/Federation.model.ts +++ b/frontend/src/models/Federation.model.ts @@ -81,6 +81,14 @@ export class Federation { } }; + // On Testnet/Mainnet change + updateUrls = async (origin: Origin, settings: Settings, hostUrl: string): Promise => { + this.loading = true; + for (const coor of Object.values(this.coordinators)) { + await coor.updateUrl(settings, origin, hostUrl); + } + }; + update = async (): Promise => { this.loading = false; for (const coor of Object.values(this.coordinators)) {