diff --git a/packages/core-app-api/src/apis/implementations/StorageApi/WebStorage.ts b/packages/core-app-api/src/apis/implementations/StorageApi/WebStorage.ts index b0cbfbd883..c17cc56494 100644 --- a/packages/core-app-api/src/apis/implementations/StorageApi/WebStorage.ts +++ b/packages/core-app-api/src/apis/implementations/StorageApi/WebStorage.ts @@ -89,9 +89,19 @@ export class WebStorage implements StorageApi { observe$( key: string, ): Observable> { + this.addStorageEventListener(); return this.observable.filter(({ key: messageKey }) => messageKey === key); } + private addStorageEventListener() { + window.addEventListener('storage', event => { + if (event.key?.includes(this.namespace)) { + const key = event.key.replace(`${this.namespace}/`, ''); + this.notifyChanges(key); + } + }); + } + private getKeyName(key: string) { return `${this.namespace}/${encodeURIComponent(key)}`; }