diff --git a/web/app.react.js b/web/app.react.js --- a/web/app.react.js +++ b/web/app.react.js @@ -29,7 +29,7 @@ import { TunnelbrokerProvider } from 'lib/tunnelbroker/tunnelbroker-context.js'; import type { LoadingStatus } from 'lib/types/loading-types.js'; import type { Dispatch } from 'lib/types/redux-types.js'; -import { registerConfig } from 'lib/utils/config.js'; +import { getConfig, registerConfig } from 'lib/utils/config.js'; import { useDispatch } from 'lib/utils/redux-utils.js'; import { infoFromURL } from 'lib/utils/url-utils.js'; import { AlchemyENSCacheProvider, wagmiConfig } from 'lib/utils/wagmi-utils.js'; @@ -42,6 +42,7 @@ import { EditModalProvider } from './chat/edit-message-provider.js'; import NavigationArrows from './components/navigation-arrows.react.js'; import { initOpaque } from './crypto/opaque-utils.js'; +import { getDatabaseModule } from './database/database-module-provider.js'; import electron from './electron.js'; import InputStateContainer from './input/input-state-container.react.js'; import InviteLinkHandler from './invite-links/invite-link-handler.react.js'; @@ -101,6 +102,17 @@ }, }); +const versionBroadcast = new BroadcastChannel('comm_version'); +versionBroadcast.postMessage(getConfig().platformDetails.codeVersion); +versionBroadcast.onmessage = (event: MessageEvent) => { + if (event.data && event.data !== getConfig().platformDetails.codeVersion) { + location.reload(); + } +}; + +// Start initializing the database immediately +void getDatabaseModule(); + type BaseProps = { +location: { +pathname: string, diff --git a/web/database/database-module-provider.js b/web/database/database-module-provider.js --- a/web/database/database-module-provider.js +++ b/web/database/database-module-provider.js @@ -3,6 +3,8 @@ import invariant from 'invariant'; import localforage from 'localforage'; +import { getConfig } from 'lib/utils/config.js'; + import { DATABASE_WORKER_PATH, WORKERS_MODULES_DIR_PATH, @@ -68,7 +70,10 @@ }); } - this.worker = new SharedWorker(DATABASE_WORKER_PATH); + const codeVersion = getConfig().platformDetails.codeVersion ?? ''; + const workerName = `comm-app-database-${codeVersion}`; + + this.worker = new SharedWorker(DATABASE_WORKER_PATH, workerName); this.worker.onerror = console.error; this.workerProxy = new WorkerConnectionProxy( this.worker.port, @@ -153,7 +158,5 @@ await newModule.init({ clearDatabase: false }); return newModule; } -// Start initializing the database immediately -void getDatabaseModule(); export { getDatabaseModule };