From 2bd1505a0eda9f9348b838ee8b768fafa67ce7fc Mon Sep 17 00:00:00 2001 From: Aaron S Date: Fri, 6 Jan 2023 14:41:24 -0600 Subject: [PATCH 1/2] fix: For bug when cookies are disabled using window side-effects --- packages/pubsub/package.json | 4 ++- .../src/Providers/MqttOverWSProvider.ts | 4 +++ .../pubsub/src/utils/PatchLocalStorage.ts | 34 +++++++++++++++++++ 3 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 packages/pubsub/src/utils/PatchLocalStorage.ts diff --git a/packages/pubsub/package.json b/packages/pubsub/package.json index fef30fa2690..d53b9925620 100644 --- a/packages/pubsub/package.json +++ b/packages/pubsub/package.json @@ -10,7 +10,9 @@ }, "sideEffects": [ "./lib/PubSub.js", - "./lib-esm/PubSub.js" + "./lib-esm/PubSub.js", + "./lib/utils/PatchLocalStorage.js", + "./lib-esm/utils/PatchLocalStorage.js" ], "publishConfig": { "access": "public" diff --git a/packages/pubsub/src/Providers/MqttOverWSProvider.ts b/packages/pubsub/src/Providers/MqttOverWSProvider.ts index f9b4da16186..92a23715821 100644 --- a/packages/pubsub/src/Providers/MqttOverWSProvider.ts +++ b/packages/pubsub/src/Providers/MqttOverWSProvider.ts @@ -1,5 +1,7 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 + +import { reinstateLocalStorageError } from '../utils/PatchLocalStorage'; import * as Paho from 'paho-mqtt'; import { v4 as uuid } from 'uuid'; import Observable, { ZenObservable } from 'zen-observable-ts'; @@ -20,6 +22,8 @@ import { AMPLIFY_SYMBOL, CONNECTION_STATE_CHANGE } from './constants'; const logger = new Logger('MqttOverWSProvider'); +reinstateLocalStorageError(); + export function mqttTopicMatch(filter: string, topic: string) { const filterArray = filter.split('/'); const length = filterArray.length; diff --git a/packages/pubsub/src/utils/PatchLocalStorage.ts b/packages/pubsub/src/utils/PatchLocalStorage.ts new file mode 100644 index 00000000000..190a83eb365 --- /dev/null +++ b/packages/pubsub/src/utils/PatchLocalStorage.ts @@ -0,0 +1,34 @@ +import { ConsoleLogger as Logger } from '@aws-amplify/core'; + +const logger = new Logger('PatchLocalStorage'); + +let error = undefined; + +function patchLocalStorage() { + try { + console.log('before'); + const x = window['localStorage']; + console.log('after'); + window.localStorage; + } catch (e) { + logger.error(e); + error = e; + Object.defineProperty(window, 'localStorage', { + value: null, + }); + } +} + +export function reinstateLocalStorageError() { + console.log('Put back?'); + if (error) { + console.log('Putting it back'); + Object.defineProperty(window, 'localStorage', { + get: () => { + throw error; + }, + }); + } +} + +patchLocalStorage(); From 702b94fa2cff33f3f138f68109909c5b82b75f10 Mon Sep 17 00:00:00 2001 From: Aaron S Date: Fri, 6 Jan 2023 14:42:52 -0600 Subject: [PATCH 2/2] fix: Remove debug log lines --- packages/pubsub/src/utils/PatchLocalStorage.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/packages/pubsub/src/utils/PatchLocalStorage.ts b/packages/pubsub/src/utils/PatchLocalStorage.ts index 190a83eb365..187a1a81a90 100644 --- a/packages/pubsub/src/utils/PatchLocalStorage.ts +++ b/packages/pubsub/src/utils/PatchLocalStorage.ts @@ -6,9 +6,6 @@ let error = undefined; function patchLocalStorage() { try { - console.log('before'); - const x = window['localStorage']; - console.log('after'); window.localStorage; } catch (e) { logger.error(e); @@ -20,9 +17,7 @@ function patchLocalStorage() { } export function reinstateLocalStorageError() { - console.log('Put back?'); if (error) { - console.log('Putting it back'); Object.defineProperty(window, 'localStorage', { get: () => { throw error;