From ee6def9836331193851da996bd1f9fe5d610db05 Mon Sep 17 00:00:00 2001 From: Daniel La Rocque Date: Fri, 2 Aug 2024 14:55:43 -0400 Subject: [PATCH 1/4] Remove LocalStorage synchronization on storage events in Safari --- .../persistence/local_storage.ts | 29 ------------------- 1 file changed, 29 deletions(-) diff --git a/packages/auth/src/platform_browser/persistence/local_storage.ts b/packages/auth/src/platform_browser/persistence/local_storage.ts index b4126120828..d732d2a2a8c 100644 --- a/packages/auth/src/platform_browser/persistence/local_storage.ts +++ b/packages/auth/src/platform_browser/persistence/local_storage.ts @@ -17,7 +17,6 @@ import { Persistence } from '../../model/public_types'; -import { getUA } from '@firebase/util'; import { _isSafari, _isIOS, @@ -33,11 +32,6 @@ import { } from '../../core/persistence'; import { BrowserPersistenceClass } from './browser'; -function _iframeCannotSyncWebStorage(): boolean { - const ua = getUA(); - return _isSafari(ua) || _isIOS(ua); -} - // The polling period in case events are not supported export const _POLLING_INTERVAL_MS = 1000; @@ -64,9 +58,6 @@ class BrowserLocalPersistence // eslint-disable-next-line @typescript-eslint/no-explicit-any private pollTimer: any | null = null; - // Safari or iOS browser and embedded in an iframe. - private readonly safariLocalStorageNotSynced = - _iframeCannotSyncWebStorage() && _isIframe(); // Whether to use polling instead of depending on window events private readonly fallbackToPolling = _isMobileBrowser(); readonly _shouldAllowMigration = true; @@ -112,26 +103,6 @@ class BrowserLocalPersistence this.stopPolling(); } - // Safari embedded iframe. Storage event will trigger with the delta - // changes but no changes will be applied to the iframe localStorage. - if (this.safariLocalStorageNotSynced) { - // Get current iframe page value. - const storedValue = this.storage.getItem(key); - // Value not synchronized, synchronize manually. - if (event.newValue !== storedValue) { - if (event.newValue !== null) { - // Value changed from current value. - this.storage.setItem(key, event.newValue); - } else { - // Current value deleted. - this.storage.removeItem(key); - } - } else if (this.localCache[key] === event.newValue && !poll) { - // Already detected and processed, do not trigger listeners again. - return; - } - } - const triggerListeners = (): void => { // Keep local map up to date in case storage event is triggered before // poll. From 0a74735f3e2a599b83384b02289dba493704c16e Mon Sep 17 00:00:00 2001 From: Daniel La Rocque Date: Tue, 6 Aug 2024 12:06:25 -0400 Subject: [PATCH 2/4] Remove unused imports --- .../auth/src/platform_browser/persistence/local_storage.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/packages/auth/src/platform_browser/persistence/local_storage.ts b/packages/auth/src/platform_browser/persistence/local_storage.ts index d732d2a2a8c..9f83ab3eb06 100644 --- a/packages/auth/src/platform_browser/persistence/local_storage.ts +++ b/packages/auth/src/platform_browser/persistence/local_storage.ts @@ -18,9 +18,6 @@ import { Persistence } from '../../model/public_types'; import { - _isSafari, - _isIOS, - _isIframe, _isMobileBrowser, _isIE10 } from '../../core/util/browser'; From c9e8bb6fd0fad41c9d9720d5e68a26bbb4e3fc59 Mon Sep 17 00:00:00 2001 From: Daniel La Rocque Date: Tue, 6 Aug 2024 12:13:58 -0400 Subject: [PATCH 3/4] Run formatter --- .../auth/src/platform_browser/persistence/local_storage.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/packages/auth/src/platform_browser/persistence/local_storage.ts b/packages/auth/src/platform_browser/persistence/local_storage.ts index 9f83ab3eb06..94b8322d0a9 100644 --- a/packages/auth/src/platform_browser/persistence/local_storage.ts +++ b/packages/auth/src/platform_browser/persistence/local_storage.ts @@ -17,10 +17,7 @@ import { Persistence } from '../../model/public_types'; -import { - _isMobileBrowser, - _isIE10 -} from '../../core/util/browser'; +import { _isMobileBrowser, _isIE10 } from '../../core/util/browser'; import { PersistenceInternal as InternalPersistence, PersistenceType, From 7d069bcb2ec28ac81bd0c2cfc966b11de1ba47a5 Mon Sep 17 00:00:00 2001 From: Daniel La Rocque Date: Tue, 6 Aug 2024 14:51:40 -0400 Subject: [PATCH 4/4] Add changeset --- .changeset/mighty-shirts-pump.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/mighty-shirts-pump.md diff --git a/.changeset/mighty-shirts-pump.md b/.changeset/mighty-shirts-pump.md new file mode 100644 index 00000000000..ca513c438c7 --- /dev/null +++ b/.changeset/mighty-shirts-pump.md @@ -0,0 +1,5 @@ +--- +'@firebase/auth': patch +--- + +Remove localStorage synchronization on storage events in Safari iframes. See [GitHub PR #8408](https://github.com/firebase/firebase-js-sdk/pull/8408).