@dynamic-labs/sdk-react-core 0.18.0-RC.13 → 0.18.0-RC.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/package.cjs +2 -2
  3. package/package.js +2 -2
  4. package/package.json +9 -9
  5. package/src/index.cjs +2 -0
  6. package/src/index.js +1 -0
  7. package/src/lib/Main.cjs +46 -7
  8. package/src/lib/Main.js +46 -7
  9. package/src/lib/assets/no-wallet-found.cjs +8 -8
  10. package/src/lib/assets/no-wallet-found.js +8 -8
  11. package/src/lib/components/PoweredByDynamic/PoweredByDynamic.cjs +8 -1
  12. package/src/lib/components/PoweredByDynamic/PoweredByDynamic.js +8 -1
  13. package/src/lib/components/SendBalancePageLayout/SendBalancePageLayout.cjs +1 -1
  14. package/src/lib/components/SendBalancePageLayout/SendBalancePageLayout.js +1 -1
  15. package/src/lib/components/Toolkit/Toolkit.cjs +3 -3
  16. package/src/lib/components/Toolkit/Toolkit.js +3 -3
  17. package/src/lib/components/Toolkit/components/MultiWalletSwitch.cjs +18 -0
  18. package/src/lib/components/Toolkit/components/MultiWalletSwitch.d.ts +8 -0
  19. package/src/lib/components/Toolkit/components/MultiWalletSwitch.js +14 -0
  20. package/src/lib/components/Toolkit/components/index.d.ts +1 -1
  21. package/src/lib/components/TransactionConfirmationPageLayout/TransactionConfirmationPageLayout.cjs +1 -1
  22. package/src/lib/components/TransactionConfirmationPageLayout/TransactionConfirmationPageLayout.js +1 -1
  23. package/src/lib/components/TransactionStatusLayout/TransactionStatusLayout.cjs +1 -1
  24. package/src/lib/components/TransactionStatusLayout/TransactionStatusLayout.js +1 -1
  25. package/src/lib/context/DynamicContext/DynamicContext.cjs +51 -23
  26. package/src/lib/context/DynamicContext/DynamicContext.d.ts +6 -3
  27. package/src/lib/context/DynamicContext/DynamicContext.js +52 -25
  28. package/src/lib/context/DynamicContext/helpers.cjs +5 -4
  29. package/src/lib/context/DynamicContext/helpers.d.ts +3 -1
  30. package/src/lib/context/DynamicContext/helpers.js +5 -4
  31. package/src/lib/context/DynamicContext/useCustomerCallbacks/types.d.ts +1 -0
  32. package/src/lib/context/DynamicContext/useCustomerCallbacks/useCustomerCallbacks.cjs +1 -1
  33. package/src/lib/context/DynamicContext/useCustomerCallbacks/useCustomerCallbacks.d.ts +2 -2
  34. package/src/lib/context/DynamicContext/useCustomerCallbacks/useCustomerCallbacks.js +1 -1
  35. package/src/lib/context/DynamicContext/useDynamicContext.cjs +2 -2
  36. package/src/lib/context/DynamicContext/useDynamicContext.d.ts +1 -1
  37. package/src/lib/context/DynamicContext/useDynamicContext.js +2 -2
  38. package/src/lib/layout/DynamicAuthLayout/HelpContent/WalletListHelpContent/NewToWeb3WalletItem/NewToWeb3WalletItem.cjs +1 -1
  39. package/src/lib/layout/DynamicAuthLayout/HelpContent/WalletListHelpContent/NewToWeb3WalletItem/NewToWeb3WalletItem.js +1 -1
  40. package/src/lib/shared/types/index.d.ts +1 -0
  41. package/src/lib/shared/utils/classes/storage/localStorage.cjs +36 -24
  42. package/src/lib/shared/utils/classes/storage/localStorage.d.ts +16 -3
  43. package/src/lib/shared/utils/classes/storage/localStorage.js +37 -25
  44. package/src/lib/shared/utils/hooks/index.d.ts +1 -0
  45. package/src/lib/shared/utils/hooks/useEffectOnce/index.d.ts +1 -0
  46. package/src/lib/shared/utils/hooks/useEffectOnce/useEffectOnce.cjs +27 -0
  47. package/src/lib/shared/utils/hooks/useEffectOnce/useEffectOnce.d.ts +17 -0
  48. package/src/lib/shared/utils/hooks/useEffectOnce/useEffectOnce.js +23 -0
  49. package/src/lib/styles/index.shadow.cjs +1 -1
  50. package/src/lib/styles/index.shadow.js +1 -1
  51. package/src/lib/utils/functions/getAuthToken/getAuthToken.cjs +2 -1
  52. package/src/lib/utils/functions/getAuthToken/getAuthToken.d.ts +1 -1
  53. package/src/lib/utils/functions/getAuthToken/getAuthToken.js +2 -1
  54. package/src/lib/utils/functions/isSelectedWalletAlreadyConnected/isSelectedWalletAlreadyConnected.cjs +2 -2
  55. package/src/lib/utils/functions/isSelectedWalletAlreadyConnected/isSelectedWalletAlreadyConnected.d.ts +1 -1
  56. package/src/lib/utils/functions/isSelectedWalletAlreadyConnected/isSelectedWalletAlreadyConnected.js +2 -2
  57. package/src/lib/utils/functions/storeAuthToken/index.cjs +1 -3
  58. package/src/lib/utils/functions/storeAuthToken/index.js +1 -3
  59. package/src/lib/utils/hooks/index.d.ts +2 -0
  60. package/src/lib/utils/hooks/multiWallet/useMultiWallet/index.d.ts +1 -0
  61. package/src/lib/utils/hooks/multiWallet/useMultiWallet/useMultiWallet.cjs +17 -0
  62. package/src/lib/utils/hooks/multiWallet/useMultiWallet/useMultiWallet.d.ts +8 -0
  63. package/src/lib/utils/hooks/multiWallet/useMultiWallet/useMultiWallet.js +13 -0
  64. package/src/lib/utils/hooks/useApplyWalletConnectorNetwork/useApplyWalletConnectorNetwork.cjs +29 -0
  65. package/src/lib/utils/hooks/useApplyWalletConnectorNetwork/useApplyWalletConnectorNetwork.d.ts +5 -0
  66. package/src/lib/utils/hooks/useApplyWalletConnectorNetwork/useApplyWalletConnectorNetwork.js +25 -0
  67. package/src/lib/utils/hooks/useConnectWallet/useConnectWallet.cjs +20 -5
  68. package/src/lib/utils/hooks/useConnectWallet/useConnectWallet.d.ts +5 -2
  69. package/src/lib/utils/hooks/useConnectWallet/useConnectWallet.js +20 -5
  70. package/src/lib/utils/hooks/useConnectedAccountWallet/useConnectedAccountWallet.cjs +11 -18
  71. package/src/lib/utils/hooks/useConnectedAccountWallet/useConnectedAccountWallet.js +11 -18
  72. package/src/lib/utils/hooks/useEventListener/index.d.ts +1 -0
  73. package/src/lib/utils/hooks/useEventListener/useEventListener.cjs +25 -0
  74. package/src/lib/utils/hooks/useEventListener/useEventListener.d.ts +1 -0
  75. package/src/lib/utils/hooks/useEventListener/useEventListener.js +21 -0
  76. package/src/lib/utils/hooks/usePromise/usePromise.cjs +71 -18
  77. package/src/lib/utils/hooks/usePromise/usePromise.d.ts +14 -0
  78. package/src/lib/utils/hooks/usePromise/usePromise.js +72 -19
  79. package/src/lib/utils/hooks/useWalletItemActions/useWalletItemActions.cjs +3 -3
  80. package/src/lib/utils/hooks/useWalletItemActions/useWalletItemActions.js +3 -3
  81. package/src/lib/views/EmailConfirmationWaitingView/EmailConfirmationWaitingView.cjs +1 -1
  82. package/src/lib/views/EmailConfirmationWaitingView/EmailConfirmationWaitingView.js +1 -1
  83. package/src/lib/views/LoginWithEmailView/components/LoginWithEmailWalletList/LoginWithEmailWalletList.cjs +2 -2
  84. package/src/lib/views/LoginWithEmailView/components/LoginWithEmailWalletList/LoginWithEmailWalletList.js +2 -2
  85. package/src/lib/views/NetworkNotSupported/NetworkNotSupported.cjs +9 -8
  86. package/src/lib/views/NetworkNotSupported/NetworkNotSupported.js +9 -8
  87. package/src/lib/views/NetworkNotSupportedSwitchManual/NetworkNotSupportedSwitchManual.cjs +5 -9
  88. package/src/lib/views/NetworkNotSupportedSwitchManual/NetworkNotSupportedSwitchManual.js +5 -9
  89. package/src/lib/views/WalletList/SearchNotFoundMessage/SearchNotFoundMessage.cjs +2 -1
  90. package/src/lib/views/WalletList/SearchNotFoundMessage/SearchNotFoundMessage.d.ts +2 -2
  91. package/src/lib/views/WalletList/SearchNotFoundMessage/SearchNotFoundMessage.js +2 -1
  92. package/src/lib/views/WalletList/WalletList.cjs +2 -2
  93. package/src/lib/views/WalletList/WalletList.js +2 -2
  94. package/src/lib/views/WalletList/WalletListItem/WalletListItem.types.d.ts +1 -2
  95. package/src/lib/components/Toolkit/components/BrandStyleSwitch.cjs +0 -22
  96. package/src/lib/components/Toolkit/components/BrandStyleSwitch.d.ts +0 -2
  97. package/src/lib/components/Toolkit/components/BrandStyleSwitch.js +0 -18
@@ -1,6 +1,6 @@
1
1
  import { __awaiter } from '../../../../_virtual/_tslib.js';
2
2
  import { jsx, jsxs } from 'react/jsx-runtime';
3
- import { createContext, useState, useEffect, useCallback, useMemo } from 'react';
3
+ import { createContext, useState, useCallback, useEffect, useMemo } from 'react';
4
4
  import { useWalletBookCdn, getWalletBookCdnUrl, WalletBookContextProvider } from '@dynamic-labs/wallet-book';
5
5
  import { logger as logger$1 } from '@dynamic-labs/wallet-connector-core';
6
6
  import { ICONIC_SPRITE_URL } from '@dynamic-labs/iconic';
@@ -15,6 +15,7 @@ import { LocalStorage } from '../../shared/utils/classes/storage/localStorage.js
15
15
  import 'ethers';
16
16
  import { useLocalStorage } from '../../shared/utils/hooks/useLocalStorage/useLocalStorage.js';
17
17
  import { useGlobalLoading } from '../../shared/utils/hooks/useGlobalLoading/useGlobalLoading.js';
18
+ import { useEffectOnce } from '../../shared/utils/hooks/useEffectOnce/useEffectOnce.js';
18
19
  import '../../shared/consts/index.js';
19
20
  import { useFetchProjectSettings } from '../../utils/hooks/useFetchProjectSettings/useFetchProjectSettings.js';
20
21
  import { useFetchNonce } from '../../utils/hooks/useFetchNonce/useFetchNonce.js';
@@ -32,6 +33,8 @@ import '../MockContext/MockContext.js';
32
33
  import { CaptchaContextProvider } from '../CaptchaContext/CaptchaContext.js';
33
34
  import '../../utils/hooks/useUserUpdateRequest/useUserUpdateRequest.js';
34
35
  import { ThemeContextProvider } from '../ThemeContext/ThemeContext.js';
36
+ import { useValidateSession } from '../../utils/hooks/useValidateSession/useValidateSession.js';
37
+ import { useEventListener } from '../../utils/hooks/useEventListener/useEventListener.js';
35
38
  import ApiEndpoint from '../../config/ApiEndpoint.js';
36
39
  import { useFetchNetworkConfigurations } from '../../utils/hooks/useFetchNetworkConfigurations/useFetchNetworkConfigurations.js';
37
40
  import { useMultiWalletWidgetState } from '../../utils/hooks/multiWallet/useMultiWalletWidgetState/useMultiWalletWidgetState.js';
@@ -74,8 +77,8 @@ import { SendBalanceContextProvider } from '../SendBalanceContext/SendBalanceCon
74
77
  import { usePrimaryWalletId } from '../../utils/hooks/usePrimaryWalletId/usePrimaryWalletId.js';
75
78
  import { WalletGroupContextProvider } from '../WalletGroupContext/WalletGroupContext.js';
76
79
  import { WalletContextProvider } from '../WalletContext/WalletContext.js';
77
- import { useValidateSession } from '../../utils/hooks/useValidateSession/useValidateSession.js';
78
80
  import { getMissingChains } from '../../utils/functions/getMissingChains/getMissingChains.js';
81
+ import { useMultiWallet } from '../../utils/hooks/multiWallet/useMultiWallet/useMultiWallet.js';
79
82
  import { initExpirationTime, getInitialView } from './helpers.js';
80
83
  import { validateAuthUser } from './validators.js';
81
84
  import { useCustomerCallbacks } from './useCustomerCallbacks/useCustomerCallbacks.js';
@@ -85,15 +88,19 @@ import { useDisplayOrderState } from './hooks/useDisplayOrderState/useDisplayOrd
85
88
  import { useNameService } from './hooks/useNameService/useNameService.js';
86
89
  import { useSetShowAuthFlowWithInit } from './hooks/useSetShowAuthFlowWithInit/useSetShowAuthFlowWithInit.js';
87
90
 
91
+ const PUBLIC_PROJECT_LIVE_ENVIRONMENT_ID = '2762a57b-faa4-41ce-9f16-abff9300e2c9';
88
92
  const EMPTY_INITIAL_USER = undefined;
89
93
  const DynamicContext = createContext(undefined);
90
94
  const DynamicContextProvider = ({ settings: { accessDeniedMessagePrimary, accessDeniedMessageSecondary, accessDeniedButton, apiBaseUrl, appLogoUrl = 'https://demo.dynamic.xyz/assets/dynamic-logo.svg', appName = 'Dynamic Example', walletsByChain, cssOverrides, defaultNumberOfWalletsToShow = DEFAULT_NUMBER_OF_WALLETS_TO_SHOW, flowNetwork, initialAuthenticationMode = 'connect-and-sign', debugError = false, displayTermsOfService = true, newToWeb3WalletChainMap, enableVisitTrackingOnConnectOnly = true, environmentId, localStorageSuffix, eventsCallbacks, evmNetworks, walletsFilter, logLevel = 'WARN', multiWallet: deprecatedMultiWallet, notInTheListImageUrl, onboardingImageUrl, policiesConsentInnerComponent, customPrivacyPolicy, privacyPolicyUrl, signWithEmailWalletName, socialMediaLinkText, socialMediaIconUrl, socialMediaUrl, customTermsOfServices, termsOfServiceUrl, toolkitEnabled, siweStatement, shadowDOMEnabled = true, walletConnectV1Bridge, walletConnectors: walletConnectorsProp, socialProvidersFilter, }, children, theme, }) => {
91
- var _a, _b, _c, _d, _e, _f, _g;
95
+ var _a, _b, _c, _d, _e, _f, _g, _h;
92
96
  if (!environmentId) {
93
97
  throw new MissingEnvironmentIdError();
94
98
  }
95
99
  logger.setLogLevel(logLevel);
96
100
  logger$1.setLogLevel(logLevel);
101
+ if (environmentId === PUBLIC_PROJECT_LIVE_ENVIRONMENT_ID) {
102
+ logger.warn(`WARNING: DYNAMIC is using a test environment ID ${environmentId}. Please sign up on https://app.dynamic.xyz/ to get your production environment ID.`);
103
+ }
97
104
  ApiEndpoint.setBaseUrl((_a = process.env.DYNAMIC_API_BASE_URL) !== null && _a !== void 0 ? _a : apiBaseUrl);
98
105
  LocalStorage.setSuffix(localStorageSuffix);
99
106
  const isAuthenticated = Boolean(getAuthToken());
@@ -115,7 +122,18 @@ const DynamicContextProvider = ({ settings: { accessDeniedMessagePrimary, access
115
122
  const [multiWalletWidgetState, setMultiWalletWidgetState, { awaiting_account_switch: [accountSwitchState], awaiting_signature: [awaitingSignatureState], },] = useMultiWalletWidgetState();
116
123
  const [isVerifying, setIsVerifying] = useState(false);
117
124
  const { projectSettings, isLoading: isProjectSettingsLoading } = useFetchProjectSettings({ authToken: getAuthToken(), environmentId });
118
- const multiWallet = (_c = deprecatedMultiWallet !== null && deprecatedMultiWallet !== void 0 ? deprecatedMultiWallet : (_b = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _b === void 0 ? void 0 : _b.multiWallet) !== null && _c !== void 0 ? _c : false;
125
+ const { multiWallet, setMultiWallet } = useMultiWallet({
126
+ deprecatedMultiWallet,
127
+ multiWalletSettings: (_b = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _b === void 0 ? void 0 : _b.multiWallet,
128
+ });
129
+ // for demo proposes when running single wallet
130
+ // it should not use bridge even having walletConnectV1Bridge set on settings
131
+ // but v2 if enabled
132
+ if (toolkitEnabled &&
133
+ ((_d = (_c = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _c === void 0 ? void 0 : _c.walletConnect) === null || _d === void 0 ? void 0 : _d.v2Enabled) &&
134
+ !multiWallet) {
135
+ walletConnectV1Bridge = undefined;
136
+ }
119
137
  // ensures that when user comes back to site and primary wallet is out of sync, we don't show widget popup
120
138
  const [showWidgetStatePopup, setShowWidgetStatePopup] = useState(!multiWallet);
121
139
  const walletBook = useWalletBookCdn();
@@ -147,19 +165,23 @@ const DynamicContextProvider = ({ settings: { accessDeniedMessagePrimary, access
147
165
  });
148
166
  const [authMode, setAuthMode] = useLocalStorage(AUTH_MODE, initialAuthenticationMode);
149
167
  const { clearPrimaryWalletId, primaryWalletId, setPrimaryWalletId } = usePrimaryWalletId();
150
- const { connectWallet, removeConnectedWalletsInfo, connectedWalletsInfo, connectedWallet, getConnectedWalletById, connectedWallets, connectWalletByAddressAndChain, unlinkConnectedWallet, } = useConnectWallet({
168
+ const { connectWallet, removeConnectedWalletsInfo, connectedWalletsInfo, connectedWallet, getConnectedWalletById, connectedWallets, connectWalletByAddressAndChain, unlinkConnectedWallet, updateConnectedWalletById, } = useConnectWallet({
151
169
  authMode,
152
170
  clearPrimaryWalletId,
153
171
  enableVisitTrackingOnConnectOnly,
154
172
  environmentId,
173
+ onUnlink: (walletId, connectedWalletsInfo) => {
174
+ const missingChains = getMissingChains(walletsByChain, connectedWalletsInfo);
175
+ setWalletsToConnectByChain(missingChains);
176
+ },
155
177
  primaryWalletId,
156
178
  setPrimaryWalletId,
157
179
  wallets,
158
180
  });
159
- useEffect(() => {
181
+ useEffectOnce(() => {
160
182
  const missingChains = getMissingChains(walletsByChain, connectedWalletsInfo);
161
183
  setWalletsToConnectByChain(missingChains);
162
- }, [connectedWalletsInfo, walletsByChain]);
184
+ });
163
185
  const [selectedWalletConnector, setSelectedWalletConnector] = useState(null);
164
186
  //selected wallet to perform an action (become primary, unlink, etc)
165
187
  const [selectedWalletWithAction, setSelectedWalletWithAction] = useState(null);
@@ -193,7 +215,7 @@ const DynamicContextProvider = ({ settings: { accessDeniedMessagePrimary, access
193
215
  wallets,
194
216
  });
195
217
  // until user completes onboarding, jwt is only stored in onboardingOnlyJwt
196
- const authToken = (_d = getAuthToken()) !== null && _d !== void 0 ? _d : onboardingOnlyJwt;
218
+ const authToken = (_e = getAuthToken()) !== null && _e !== void 0 ? _e : onboardingOnlyJwt;
197
219
  const { getNameService, removeConnectedNameService } = useNameService({
198
220
  authToken,
199
221
  currentWallet: primaryWallet !== null && primaryWallet !== void 0 ? primaryWallet : connectedWallet,
@@ -205,7 +227,7 @@ const DynamicContextProvider = ({ settings: { accessDeniedMessagePrimary, access
205
227
  clearOphanedWalletConnectSessions,
206
228
  ]);
207
229
  const handleLogOut = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
208
- var _h, _j;
230
+ var _j, _k;
209
231
  clearAllWalletConnectSessions();
210
232
  setWalletsToConnectByChain(walletsByChain);
211
233
  setShowBridgeWidget(false);
@@ -218,7 +240,7 @@ const DynamicContextProvider = ({ settings: { accessDeniedMessagePrimary, access
218
240
  for (const connector of walletConnectors) {
219
241
  yield connector.endSession();
220
242
  }
221
- yield ((_h = connectedWallet === null || connectedWallet === void 0 ? void 0 : connectedWallet.connector) === null || _h === void 0 ? void 0 : _h.endSession());
243
+ yield ((_j = connectedWallet === null || connectedWallet === void 0 ? void 0 : connectedWallet.connector) === null || _j === void 0 ? void 0 : _j.endSession());
222
244
  setAuthMode(initialAuthenticationMode);
223
245
  setShowAuthFlow(false);
224
246
  setMultiWalletWidgetState('idle');
@@ -229,7 +251,7 @@ const DynamicContextProvider = ({ settings: { accessDeniedMessagePrimary, access
229
251
  removeConnectedUser();
230
252
  clearPrimaryWalletId();
231
253
  removeConnectedNameService();
232
- (_j = eventsCallbacks === null || eventsCallbacks === void 0 ? void 0 : eventsCallbacks.onLogout) === null || _j === void 0 ? void 0 : _j.call(eventsCallbacks, user);
254
+ (_k = eventsCallbacks === null || eventsCallbacks === void 0 ? void 0 : eventsCallbacks.onLogout) === null || _k === void 0 ? void 0 : _k.call(eventsCallbacks, user);
233
255
  }), [
234
256
  clearAllWalletConnectSessions,
235
257
  walletsByChain,
@@ -248,10 +270,11 @@ const DynamicContextProvider = ({ settings: { accessDeniedMessagePrimary, access
248
270
  environmentId,
249
271
  walletConnectors,
250
272
  ]);
273
+ useEventListener('logOut', handleLogOut);
251
274
  let wcVersion;
252
275
  if (projectSettings) {
253
276
  wcVersion =
254
- ((_f = (_e = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _e === void 0 ? void 0 : _e.walletConnect) === null || _f === void 0 ? void 0 : _f.v2Enabled) && !walletConnectV1Bridge
277
+ ((_g = (_f = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _f === void 0 ? void 0 : _f.walletConnect) === null || _g === void 0 ? void 0 : _g.v2Enabled) && !walletConnectV1Bridge
255
278
  ? 2
256
279
  : 1;
257
280
  }
@@ -303,6 +326,7 @@ const DynamicContextProvider = ({ settings: { accessDeniedMessagePrimary, access
303
326
  onLinkSuccess: eventsCallbacks === null || eventsCallbacks === void 0 ? void 0 : eventsCallbacks.onLinkSuccess,
304
327
  onUserProfileUpdate: eventsCallbacks === null || eventsCallbacks === void 0 ? void 0 : eventsCallbacks.onUserProfileUpdate,
305
328
  },
329
+ connectedWallets,
306
330
  handleLogOut,
307
331
  isAuthenticated,
308
332
  primaryWallet,
@@ -356,10 +380,7 @@ const DynamicContextProvider = ({ settings: { accessDeniedMessagePrimary, access
356
380
  computeConnectedStateForWallets,
357
381
  connectWallet,
358
382
  connectedWallet,
359
- connectedWallets: primaryWallet
360
- ? [primaryWallet, ...secondaryWallets]
361
- : [],
362
- connectedWalletsInfo,
383
+ connectedWallets,
363
384
  consumeNonce,
364
385
  cssOverrides,
365
386
  customPrivacyPolicy,
@@ -384,6 +405,7 @@ const DynamicContextProvider = ({ settings: { accessDeniedMessagePrimary, access
384
405
  isSingleWalletAccount,
385
406
  isUserConnected,
386
407
  isVerifying,
408
+ linkedWallets: primaryWallet ? [primaryWallet, ...secondaryWallets] : [],
387
409
  loadingNetwork,
388
410
  loginWithEmail,
389
411
  multiWallet,
@@ -415,6 +437,7 @@ const DynamicContextProvider = ({ settings: { accessDeniedMessagePrimary, access
415
437
  setIsSingleWalletAccount,
416
438
  setIsVerifying,
417
439
  setLogInWithEmail,
440
+ setMultiWallet,
418
441
  setMultiWalletWidgetState,
419
442
  setNetwork,
420
443
  setOnboardingOnlyJwt,
@@ -447,6 +470,7 @@ const DynamicContextProvider = ({ settings: { accessDeniedMessagePrimary, access
447
470
  theme,
448
471
  toolkitEnabled,
449
472
  unlinkConnectedWallet,
473
+ updateConnectedWalletById,
450
474
  user,
451
475
  walletConnector: (_b = primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector) !== null && _b !== void 0 ? _b : null,
452
476
  walletUiUtils,
@@ -456,7 +480,6 @@ const DynamicContextProvider = ({ settings: { accessDeniedMessagePrimary, access
456
480
  walletsToConnectByChain,
457
481
  });
458
482
  }, [
459
- socialProvidersFilter,
460
483
  accessDeniedButton,
461
484
  accessDeniedMessagePrimary,
462
485
  accessDeniedMessageSecondary,
@@ -471,13 +494,11 @@ const DynamicContextProvider = ({ settings: { accessDeniedMessagePrimary, access
471
494
  computeConnectedStateForWallets,
472
495
  connectWallet,
473
496
  connectedWallet,
474
- customPrivacyPolicy,
475
- customTermsOfServices,
476
- primaryWallet,
477
- secondaryWallets,
478
- connectedWalletsInfo,
497
+ connectedWallets,
479
498
  consumeNonce,
480
499
  cssOverrides,
500
+ customPrivacyPolicy,
501
+ customTermsOfServices,
481
502
  debugError,
482
503
  onboardingOnlyJwt,
483
504
  defaultNumberOfWalletsToShow,
@@ -488,6 +509,7 @@ const DynamicContextProvider = ({ settings: { accessDeniedMessagePrimary, access
488
509
  getConnectedWalletById,
489
510
  getNameService,
490
511
  handleLogOut,
512
+ unlinkConnectedWallet,
491
513
  handleUnlinkWallet,
492
514
  isAuthenticated,
493
515
  isBridgeFlow,
@@ -495,6 +517,8 @@ const DynamicContextProvider = ({ settings: { accessDeniedMessagePrimary, access
495
517
  isSingleWalletAccount,
496
518
  isUserConnected,
497
519
  isVerifying,
520
+ primaryWallet,
521
+ secondaryWallets,
498
522
  loadingNetwork,
499
523
  loginWithEmail,
500
524
  multiWallet,
@@ -521,6 +545,7 @@ const DynamicContextProvider = ({ settings: { accessDeniedMessagePrimary, access
521
545
  setCallback,
522
546
  setConnectedUser,
523
547
  setLogInWithEmail,
548
+ setMultiWallet,
524
549
  setMultiWalletWidgetState,
525
550
  setNetwork,
526
551
  setPrimaryWallet,
@@ -540,16 +565,17 @@ const DynamicContextProvider = ({ settings: { accessDeniedMessagePrimary, access
540
565
  socialMediaIconUrl,
541
566
  socialMediaLinkText,
542
567
  socialMediaUrl,
568
+ socialProvidersFilter,
543
569
  termsOfServiceUrl,
544
570
  theme,
545
571
  toolkitEnabled,
546
- unlinkConnectedWallet,
547
572
  user,
548
573
  walletUiUtils,
549
574
  wallets,
550
575
  walletsByChain,
551
576
  walletsFilter,
552
577
  walletsToConnectByChain,
578
+ updateConnectedWalletById,
553
579
  ]);
554
580
  useEffect(() => {
555
581
  const addPrefetch = (attr) => {
@@ -593,11 +619,12 @@ const DynamicContextProvider = ({ settings: { accessDeniedMessagePrimary, access
593
619
  setShowDynamicUserProfile(true);
594
620
  }
595
621
  }, [multiWallet, multiWalletWidgetState, showDynamicUserProfile, user]);
596
- return (jsx(DynamicContext.Provider, Object.assign({ value: value }, { children: jsx(WalletBookContextProvider, Object.assign({ walletBook: walletBook }, { children: jsx(ThemeContextProvider, Object.assign({ customerTheme: parseTheme(theme, ((_g = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.design) === null || _g === void 0 ? void 0 : _g.modal) || undefined), designSettings: projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.design }, { children: jsx(LoadingContextProvider, { children: jsx(ViewContextProvider, Object.assign({ initialView: getInitialView({
622
+ return (jsx(DynamicContext.Provider, Object.assign({ value: value }, { children: jsx(WalletBookContextProvider, Object.assign({ walletBook: walletBook }, { children: jsx(ThemeContextProvider, Object.assign({ customerTheme: parseTheme(theme, ((_h = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.design) === null || _h === void 0 ? void 0 : _h.modal) || undefined), designSettings: projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.design }, { children: jsx(LoadingContextProvider, { children: jsx(ViewContextProvider, Object.assign({ initialView: getInitialView({
623
+ connectedWallets,
597
624
  isBridgeFlow,
598
625
  isUserConnected,
599
626
  loginWithEmail,
600
627
  }) }, { children: jsx(WalletContextProvider, Object.assign({ canSync: didConnectedStateLoad, connectWalletByAddressAndChain: connectWalletByAddressAndChain }, { children: jsx(QrCodeContextProvider, { children: jsx(EmailVerificationContextProvider, { children: jsx(ErrorContextProvider, { children: jsx(DynamicWidgetContextProvider, { children: jsx(DynamicBridgeWidgetContextProvider, { children: jsx(CaptchaContextProvider, { children: jsx(FundingContextProvider, { children: jsx(AccessDeniedContextProvider, { children: jsx(SendBalanceContextProvider, { children: jsxs(WalletGroupContextProvider, { children: [jsx(DynamicAuthFlow, {}), jsx(Toolkit, {}), jsx(FundingWidget, {}), confirmationModal, children] }) }) }) }) }) }) }) }) }) }) })) })) }) })) })) })));
601
628
  };
602
629
 
603
- export { DynamicContext, DynamicContextProvider };
630
+ export { DynamicContext, DynamicContextProvider, PUBLIC_PROJECT_LIVE_ENVIRONMENT_ID };
@@ -12,8 +12,9 @@ require('../../shared/logger.cjs');
12
12
  require('@dynamic-labs/wallet-book');
13
13
  require('@dynamic-labs/utils');
14
14
  require('../../utils/constants/colors.cjs');
15
- var localStorage = require('../../shared/utils/classes/storage/localStorage.cjs');
15
+ require('../../shared/utils/classes/storage/localStorage.cjs');
16
16
  require('ethers');
17
+ var getAuthToken = require('../../utils/functions/getAuthToken/getAuthToken.cjs');
17
18
 
18
19
  let logoutTimer;
19
20
  const isAuthTokenExpired = (token) => {
@@ -32,7 +33,7 @@ const isAuthTokenExpired = (token) => {
32
33
  return false;
33
34
  };
34
35
  const initExpirationTime = (logout) => {
35
- const decodedJwt = decodeJwt.decodeJwt(localStorage.LocalStorage.getAuthTokenValue());
36
+ const decodedJwt = decodeJwt.decodeJwt(getAuthToken.getAuthToken());
36
37
  if (!decodedJwt)
37
38
  return clearTimeout(logoutTimer);
38
39
  const tokenExp = decodedJwt === null || decodedJwt === void 0 ? void 0 : decodedJwt.exp;
@@ -53,14 +54,14 @@ const initExpirationTime = (logout) => {
53
54
  const expiryTimeout = Math.min(expirationTimeInMs, 2147483647);
54
55
  logoutTimer = setTimeout(logout, expiryTimeout);
55
56
  };
56
- const getInitialView = ({ loginWithEmail, isBridgeFlow, isUserConnected, }) => {
57
+ const getInitialView = ({ connectedWallets, loginWithEmail, isBridgeFlow, isUserConnected, }) => {
57
58
  if (loginWithEmail) {
58
59
  return 'login-with-email-or-wallet';
59
60
  }
60
61
  if (isUserConnected) {
61
62
  return 'wallet-list';
62
63
  }
63
- if (isBridgeFlow) {
64
+ if (isBridgeFlow && !connectedWallets.length) {
64
65
  return 'bridge-welcome';
65
66
  }
66
67
  return 'wallet-list';
@@ -1,7 +1,9 @@
1
+ import { Wallet } from '../../shared';
1
2
  import { ViewType } from '../ViewContext';
2
3
  export declare const isAuthTokenExpired: (token: string) => boolean;
3
4
  export declare const initExpirationTime: (logout: VoidFunction) => void;
4
- export declare const getInitialView: ({ loginWithEmail, isBridgeFlow, isUserConnected, }: {
5
+ export declare const getInitialView: ({ connectedWallets, loginWithEmail, isBridgeFlow, isUserConnected, }: {
6
+ connectedWallets: Wallet[];
5
7
  loginWithEmail: boolean;
6
8
  isBridgeFlow: boolean;
7
9
  isUserConnected: boolean;
@@ -8,8 +8,9 @@ import '../../shared/logger.js';
8
8
  import '@dynamic-labs/wallet-book';
9
9
  import '@dynamic-labs/utils';
10
10
  import '../../utils/constants/colors.js';
11
- import { LocalStorage } from '../../shared/utils/classes/storage/localStorage.js';
11
+ import '../../shared/utils/classes/storage/localStorage.js';
12
12
  import 'ethers';
13
+ import { getAuthToken } from '../../utils/functions/getAuthToken/getAuthToken.js';
13
14
 
14
15
  let logoutTimer;
15
16
  const isAuthTokenExpired = (token) => {
@@ -28,7 +29,7 @@ const isAuthTokenExpired = (token) => {
28
29
  return false;
29
30
  };
30
31
  const initExpirationTime = (logout) => {
31
- const decodedJwt = decodeJwt(LocalStorage.getAuthTokenValue());
32
+ const decodedJwt = decodeJwt(getAuthToken());
32
33
  if (!decodedJwt)
33
34
  return clearTimeout(logoutTimer);
34
35
  const tokenExp = decodedJwt === null || decodedJwt === void 0 ? void 0 : decodedJwt.exp;
@@ -49,14 +50,14 @@ const initExpirationTime = (logout) => {
49
50
  const expiryTimeout = Math.min(expirationTimeInMs, 2147483647);
50
51
  logoutTimer = setTimeout(logout, expiryTimeout);
51
52
  };
52
- const getInitialView = ({ loginWithEmail, isBridgeFlow, isUserConnected, }) => {
53
+ const getInitialView = ({ connectedWallets, loginWithEmail, isBridgeFlow, isUserConnected, }) => {
53
54
  if (loginWithEmail) {
54
55
  return 'login-with-email-or-wallet';
55
56
  }
56
57
  if (isUserConnected) {
57
58
  return 'wallet-list';
58
59
  }
59
- if (isBridgeFlow) {
60
+ if (isBridgeFlow && !connectedWallets.length) {
60
61
  return 'bridge-welcome';
61
62
  }
62
63
  return 'wallet-list';
@@ -12,4 +12,5 @@ export type UseCustomerCallbacksArgs = {
12
12
  isAuthenticated: boolean;
13
13
  primaryWallet: Wallet | null;
14
14
  user: UserProfile | undefined;
15
+ connectedWallets: Wallet[];
15
16
  };
@@ -19,7 +19,7 @@ require('@dynamic-labs/multi-wallet');
19
19
  var getAuthToken = require('../../../utils/functions/getAuthToken/getAuthToken.cjs');
20
20
  var isConnectOnly = require('../../../utils/hooks/authenticationHooks/helpers/isConnectOnly.cjs');
21
21
 
22
- const useCustomerCallbacks = ({ callbacks: { onAuthSuccess, onLinkSuccess, onUserProfileUpdate, onConnectSuccess, }, handleLogOut, primaryWallet, user, isAuthenticated, authMode, }) => {
22
+ const useCustomerCallbacks = ({ callbacks: { onAuthSuccess, onLinkSuccess, onUserProfileUpdate, onConnectSuccess, }, handleLogOut, primaryWallet, user, isAuthenticated, authMode, connectedWallets, }) => {
23
23
  const [callbackQueue, setCallbackQueue] = React.useState([]);
24
24
  const isConnectOnlyAndCallbackIsConnectSuccess = React.useCallback((next) => isConnectOnly.isConnectOnly(user, authMode) && next === 'connectSuccess', [authMode, user]);
25
25
  React.useEffect(() => {
@@ -1,4 +1,4 @@
1
- import { Callback, UseCustomerCallbacksArgs } from './types';
2
- export declare const useCustomerCallbacks: ({ callbacks: { onAuthSuccess, onLinkSuccess, onUserProfileUpdate, onConnectSuccess, }, handleLogOut, primaryWallet, user, isAuthenticated, authMode, }: UseCustomerCallbacksArgs) => {
1
+ import type { Callback, UseCustomerCallbacksArgs } from './types';
2
+ export declare const useCustomerCallbacks: ({ callbacks: { onAuthSuccess, onLinkSuccess, onUserProfileUpdate, onConnectSuccess, }, handleLogOut, primaryWallet, user, isAuthenticated, authMode, connectedWallets, }: UseCustomerCallbacksArgs) => {
3
3
  setCallback: (callback: Callback) => void;
4
4
  };
@@ -15,7 +15,7 @@ import '@dynamic-labs/multi-wallet';
15
15
  import { getAuthToken } from '../../../utils/functions/getAuthToken/getAuthToken.js';
16
16
  import { isConnectOnly } from '../../../utils/hooks/authenticationHooks/helpers/isConnectOnly.js';
17
17
 
18
- const useCustomerCallbacks = ({ callbacks: { onAuthSuccess, onLinkSuccess, onUserProfileUpdate, onConnectSuccess, }, handleLogOut, primaryWallet, user, isAuthenticated, authMode, }) => {
18
+ const useCustomerCallbacks = ({ callbacks: { onAuthSuccess, onLinkSuccess, onUserProfileUpdate, onConnectSuccess, }, handleLogOut, primaryWallet, user, isAuthenticated, authMode, connectedWallets, }) => {
19
19
  const [callbackQueue, setCallbackQueue] = useState([]);
20
20
  const isConnectOnlyAndCallbackIsConnectSuccess = useCallback((next) => isConnectOnly(user, authMode) && next === 'connectSuccess', [authMode, user]);
21
21
  useEffect(() => {
@@ -11,19 +11,19 @@ const useDynamicContext = () => {
11
11
  if (context === undefined) {
12
12
  throw new Error('useDynamicContext must be used within a DynamicContextProvider');
13
13
  }
14
- const { accountSwitchState, awaitingSignatureState, authMode, authToken, isUserConnected, connectedWallets, connectedWalletsInfo, getNameService, handleLogOut, handleUnlinkWallet, isAuthenticated, loadingNetwork, multiWalletWidgetState, network, networkConfigurations, primaryWallet, qrcodeUri, rpcProviders, sdkHasLoaded, secondaryWallets, setShowAuthFlow, setNetwork, showAuthFlow, showQrcodeModal, setMultiWalletWidgetState, setShowQrcodeModal, setPrimaryWallet, setShowDynamicUserProfile, user, walletConnector, wallets, shadowDOMEnabled, walletsToConnectByChain, walletsByChain, loginWithEmail, setLogInWithEmail, } = context;
14
+ const { accountSwitchState, authMode, authToken, awaitingSignatureState, connectedWallets, getNameService, handleLogOut, handleUnlinkWallet, isAuthenticated, isUserConnected, linkedWallets, loadingNetwork, loginWithEmail, multiWalletWidgetState, network, networkConfigurations, primaryWallet, qrcodeUri, rpcProviders, sdkHasLoaded, secondaryWallets, setLogInWithEmail, setMultiWalletWidgetState, setNetwork, setPrimaryWallet, setShowAuthFlow, setShowDynamicUserProfile, setShowQrcodeModal, shadowDOMEnabled, showAuthFlow, showQrcodeModal, user, walletConnector, wallets, walletsByChain, walletsToConnectByChain, } = context;
15
15
  return {
16
16
  accountSwitchState,
17
17
  authMode,
18
18
  authToken,
19
19
  awaitingSignatureState,
20
20
  connectedWallets,
21
- connectedWalletsInfo,
22
21
  getNameService,
23
22
  handleLogOut,
24
23
  handleUnlinkWallet,
25
24
  isAuthenticated,
26
25
  isUserConnected,
26
+ linkedWallets,
27
27
  loadingNetwork,
28
28
  loginWithEmail,
29
29
  multiWalletWidgetState,
@@ -1,3 +1,3 @@
1
1
  import { IDynamicContext } from './DynamicContext';
2
- export type UseDynamicContext = Pick<IDynamicContext, 'accountSwitchState' | 'authMode' | 'authToken' | 'awaitingSignatureState' | 'connectedWallets' | 'getNameService' | 'handleLogOut' | 'handleUnlinkWallet' | 'isAuthenticated' | 'loadingNetwork' | 'multiWalletWidgetState' | 'network' | 'networkConfigurations' | 'primaryWallet' | 'qrcodeUri' | 'rpcProviders' | 'secondaryWallets' | 'setMultiWalletWidgetState' | 'setNetwork' | 'setPrimaryWallet' | 'setShowAuthFlow' | 'setShowQrcodeModal' | 'shadowDOMEnabled' | 'sdkHasLoaded' | 'showAuthFlow' | 'showQrcodeModal' | 'setShowDynamicUserProfile' | 'user' | 'walletConnector' | 'wallets' | 'walletsToConnectByChain' | 'connectedWalletsInfo' | 'walletsByChain' | 'isUserConnected' | 'loginWithEmail' | 'setLogInWithEmail'>;
2
+ export type UseDynamicContext = Pick<IDynamicContext, 'accountSwitchState' | 'authMode' | 'authToken' | 'awaitingSignatureState' | 'connectedWallets' | 'getNameService' | 'handleLogOut' | 'handleUnlinkWallet' | 'isAuthenticated' | 'isUserConnected' | 'linkedWallets' | 'loadingNetwork' | 'loginWithEmail' | 'multiWalletWidgetState' | 'network' | 'networkConfigurations' | 'primaryWallet' | 'qrcodeUri' | 'rpcProviders' | 'sdkHasLoaded' | 'secondaryWallets' | 'setLogInWithEmail' | 'setMultiWalletWidgetState' | 'setNetwork' | 'setPrimaryWallet' | 'setShowAuthFlow' | 'setShowDynamicUserProfile' | 'setShowQrcodeModal' | 'shadowDOMEnabled' | 'showAuthFlow' | 'showQrcodeModal' | 'user' | 'walletConnector' | 'wallets' | 'walletsByChain' | 'walletsToConnectByChain'>;
3
3
  export declare const useDynamicContext: () => UseDynamicContext;
@@ -7,19 +7,19 @@ const useDynamicContext = () => {
7
7
  if (context === undefined) {
8
8
  throw new Error('useDynamicContext must be used within a DynamicContextProvider');
9
9
  }
10
- const { accountSwitchState, awaitingSignatureState, authMode, authToken, isUserConnected, connectedWallets, connectedWalletsInfo, getNameService, handleLogOut, handleUnlinkWallet, isAuthenticated, loadingNetwork, multiWalletWidgetState, network, networkConfigurations, primaryWallet, qrcodeUri, rpcProviders, sdkHasLoaded, secondaryWallets, setShowAuthFlow, setNetwork, showAuthFlow, showQrcodeModal, setMultiWalletWidgetState, setShowQrcodeModal, setPrimaryWallet, setShowDynamicUserProfile, user, walletConnector, wallets, shadowDOMEnabled, walletsToConnectByChain, walletsByChain, loginWithEmail, setLogInWithEmail, } = context;
10
+ const { accountSwitchState, authMode, authToken, awaitingSignatureState, connectedWallets, getNameService, handleLogOut, handleUnlinkWallet, isAuthenticated, isUserConnected, linkedWallets, loadingNetwork, loginWithEmail, multiWalletWidgetState, network, networkConfigurations, primaryWallet, qrcodeUri, rpcProviders, sdkHasLoaded, secondaryWallets, setLogInWithEmail, setMultiWalletWidgetState, setNetwork, setPrimaryWallet, setShowAuthFlow, setShowDynamicUserProfile, setShowQrcodeModal, shadowDOMEnabled, showAuthFlow, showQrcodeModal, user, walletConnector, wallets, walletsByChain, walletsToConnectByChain, } = context;
11
11
  return {
12
12
  accountSwitchState,
13
13
  authMode,
14
14
  authToken,
15
15
  awaitingSignatureState,
16
16
  connectedWallets,
17
- connectedWalletsInfo,
18
17
  getNameService,
19
18
  handleLogOut,
20
19
  handleUnlinkWallet,
21
20
  isAuthenticated,
22
21
  isUserConnected,
22
+ linkedWallets,
23
23
  loadingNetwork,
24
24
  loginWithEmail,
25
25
  multiWalletWidgetState,
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var jsxRuntime = require('react/jsx-runtime');
6
6
  var WalletListItem = require('../../../../../views/WalletList/WalletListItem/WalletListItem.cjs');
7
7
 
8
- const NewToWeb3WalletItem = ({ children, style, wallet, }) => (jsxRuntime.jsx(WalletListItem.WalletListItem, { wallet: wallet, connectedWallets: [], usingMultiWallet: false, tile: children
8
+ const NewToWeb3WalletItem = ({ children, style, wallet, }) => (jsxRuntime.jsx(WalletListItem.WalletListItem, { wallet: wallet, usingMultiWallet: false, tile: children
9
9
  ? ({ onClick }) => (jsxRuntime.jsx("button", Object.assign({ className: 'new-to-web3--button', style: style, onClick: onClick }, { children: children })))
10
10
  : undefined }));
11
11
 
@@ -1,7 +1,7 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { WalletListItem } from '../../../../../views/WalletList/WalletListItem/WalletListItem.js';
3
3
 
4
- const NewToWeb3WalletItem = ({ children, style, wallet, }) => (jsx(WalletListItem, { wallet: wallet, connectedWallets: [], usingMultiWallet: false, tile: children
4
+ const NewToWeb3WalletItem = ({ children, style, wallet, }) => (jsx(WalletListItem, { wallet: wallet, usingMultiWallet: false, tile: children
5
5
  ? ({ onClick }) => (jsx("button", Object.assign({ className: 'new-to-web3--button', style: style, onClick: onClick }, { children: children })))
6
6
  : undefined }));
7
7
 
@@ -10,6 +10,7 @@ export type Wallet = {
10
10
  connected: boolean;
11
11
  connector: WalletConnector;
12
12
  id: string;
13
+ network?: string | number;
13
14
  };
14
15
  export type WalletAction = 'select' | 'unlink';
15
16
  export type WalletWithAction = {
@@ -6,46 +6,50 @@ var localStorage = require('../../../../utils/constants/localStorage.cjs');
6
6
  require('../../../../utils/constants/colors.cjs');
7
7
  var logger = require('../../../logger.cjs');
8
8
 
9
+ const connectedKeys = {
10
+ [localStorage.AUTH_TOKEN]: [localStorage.AUTH_USER],
11
+ [localStorage.AUTH_USER]: [localStorage.AUTH_TOKEN],
12
+ };
9
13
  class LocalStorage {
10
14
  static getDynamicLSKey(key) {
11
15
  return `${key}${LocalStorage.getSuffix()}`;
12
16
  }
17
+ static validateRequest(key, fromAuxiliarAuthFunctions) {
18
+ if (key === localStorage.AUTH_TOKEN && !fromAuxiliarAuthFunctions) {
19
+ throw new Error('You cannot access AUTH_TOKEN through localStorage. Use getAuthToken/ storeAuthToken helper functions instead');
20
+ }
21
+ }
13
22
  static setSuffix(localStorageSuffix) {
14
23
  if (!LocalStorage.__suffix__) {
15
24
  const suffix = (localStorageSuffix && `_${localStorageSuffix}`) || '';
16
25
  LocalStorage.__suffix__ = suffix;
17
26
  }
18
27
  }
19
- // Will be refactored on INC-155
20
- static getAuthTokenValue() {
28
+ /**
29
+ *
30
+ * @param key
31
+ * @param getAuth - verifies if the request to get AUTH_TOKEN is comming from getAuthToken and not directly
32
+ * @returns
33
+ */
34
+ static getFromLS(key, getAuth = false) {
21
35
  if (typeof window === 'undefined') {
22
36
  return undefined;
23
37
  }
24
- const value = window.localStorage.getItem(LocalStorage.getDynamicLSKey(localStorage.AUTH_TOKEN));
25
- try {
26
- if (value) {
27
- return JSON.parse(value);
28
- }
29
- }
30
- catch (e) {
31
- logger.logger.debug(e);
32
- // Return auth token string for backwards compatibility
33
- return value || undefined;
34
- }
35
- return undefined;
36
- }
37
- static getFromLS(key) {
38
- if (typeof window === 'undefined') {
38
+ LocalStorage.validateRequest(key, getAuth);
39
+ const value = window.localStorage.getItem(LocalStorage.getDynamicLSKey(key));
40
+ if (!value) {
39
41
  return undefined;
40
42
  }
41
- const value = window.localStorage.getItem(LocalStorage.getDynamicLSKey(key));
42
43
  try {
43
- if (value) {
44
- return JSON.parse(value);
45
- }
44
+ return JSON.parse(value);
46
45
  }
47
- catch (e) {
48
- logger.logger.error(e);
46
+ catch (error) {
47
+ logger.logger.debug(`Error while parsing ${key} from local storage`, { value });
48
+ // keep it in case handleLogOut is not yet loaded when calling this method
49
+ [key]
50
+ .concat(connectedKeys[key] || [])
51
+ .forEach((_key) => LocalStorage.removeFromLS(_key));
52
+ window.dispatchEvent(new Event('logOut'));
49
53
  }
50
54
  return undefined;
51
55
  }
@@ -55,10 +59,18 @@ class LocalStorage {
55
59
  }
56
60
  return window.localStorage.removeItem(LocalStorage.getDynamicLSKey(key));
57
61
  }
58
- static setToLS(key, value) {
62
+ /**
63
+ *
64
+ * @param key
65
+ * @param value
66
+ * @param storeAuth - verifies if the request to get AUTH_TOKEN is comming from getAuthToken and not directly
67
+ * @returns
68
+ */
69
+ static setToLS(key, value, storeAuth = false) {
59
70
  if (typeof window === 'undefined') {
60
71
  return;
61
72
  }
73
+ LocalStorage.validateRequest(key, storeAuth);
62
74
  window.localStorage.setItem(LocalStorage.getDynamicLSKey(key), JSON.stringify(value));
63
75
  }
64
76
  static getKeys() {
@@ -2,11 +2,24 @@ export declare class LocalStorage {
2
2
  private static __suffix__;
3
3
  static getSuffix: () => string;
4
4
  private static getDynamicLSKey;
5
+ private static validateRequest;
5
6
  static setSuffix(localStorageSuffix?: string): void;
6
- static getAuthTokenValue(): string | undefined;
7
- static getFromLS<T = any>(key: string): T | undefined;
7
+ /**
8
+ *
9
+ * @param key
10
+ * @param getAuth - verifies if the request to get AUTH_TOKEN is comming from getAuthToken and not directly
11
+ * @returns
12
+ */
13
+ static getFromLS<T = any>(key: string, getAuth?: boolean): T | undefined;
8
14
  static removeFromLS(key: string): void;
9
- static setToLS<T = any>(key: string, value: T): void;
15
+ /**
16
+ *
17
+ * @param key
18
+ * @param value
19
+ * @param storeAuth - verifies if the request to get AUTH_TOKEN is comming from getAuthToken and not directly
20
+ * @returns
21
+ */
22
+ static setToLS<T = any>(key: string, value: T, storeAuth?: boolean): void;
10
23
  static getKeys(): string[];
11
24
  }
12
25
  export default LocalStorage;