@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.
- package/CHANGELOG.md +41 -0
- package/package.cjs +2 -2
- package/package.js +2 -2
- package/package.json +9 -9
- package/src/index.cjs +2 -0
- package/src/index.js +1 -0
- package/src/lib/Main.cjs +46 -7
- package/src/lib/Main.js +46 -7
- package/src/lib/assets/no-wallet-found.cjs +8 -8
- package/src/lib/assets/no-wallet-found.js +8 -8
- package/src/lib/components/PoweredByDynamic/PoweredByDynamic.cjs +8 -1
- package/src/lib/components/PoweredByDynamic/PoweredByDynamic.js +8 -1
- package/src/lib/components/SendBalancePageLayout/SendBalancePageLayout.cjs +1 -1
- package/src/lib/components/SendBalancePageLayout/SendBalancePageLayout.js +1 -1
- package/src/lib/components/Toolkit/Toolkit.cjs +3 -3
- package/src/lib/components/Toolkit/Toolkit.js +3 -3
- package/src/lib/components/Toolkit/components/MultiWalletSwitch.cjs +18 -0
- package/src/lib/components/Toolkit/components/MultiWalletSwitch.d.ts +8 -0
- package/src/lib/components/Toolkit/components/MultiWalletSwitch.js +14 -0
- package/src/lib/components/Toolkit/components/index.d.ts +1 -1
- package/src/lib/components/TransactionConfirmationPageLayout/TransactionConfirmationPageLayout.cjs +1 -1
- package/src/lib/components/TransactionConfirmationPageLayout/TransactionConfirmationPageLayout.js +1 -1
- package/src/lib/components/TransactionStatusLayout/TransactionStatusLayout.cjs +1 -1
- package/src/lib/components/TransactionStatusLayout/TransactionStatusLayout.js +1 -1
- package/src/lib/context/DynamicContext/DynamicContext.cjs +51 -23
- package/src/lib/context/DynamicContext/DynamicContext.d.ts +6 -3
- package/src/lib/context/DynamicContext/DynamicContext.js +52 -25
- package/src/lib/context/DynamicContext/helpers.cjs +5 -4
- package/src/lib/context/DynamicContext/helpers.d.ts +3 -1
- package/src/lib/context/DynamicContext/helpers.js +5 -4
- package/src/lib/context/DynamicContext/useCustomerCallbacks/types.d.ts +1 -0
- package/src/lib/context/DynamicContext/useCustomerCallbacks/useCustomerCallbacks.cjs +1 -1
- package/src/lib/context/DynamicContext/useCustomerCallbacks/useCustomerCallbacks.d.ts +2 -2
- package/src/lib/context/DynamicContext/useCustomerCallbacks/useCustomerCallbacks.js +1 -1
- package/src/lib/context/DynamicContext/useDynamicContext.cjs +2 -2
- package/src/lib/context/DynamicContext/useDynamicContext.d.ts +1 -1
- package/src/lib/context/DynamicContext/useDynamicContext.js +2 -2
- package/src/lib/layout/DynamicAuthLayout/HelpContent/WalletListHelpContent/NewToWeb3WalletItem/NewToWeb3WalletItem.cjs +1 -1
- package/src/lib/layout/DynamicAuthLayout/HelpContent/WalletListHelpContent/NewToWeb3WalletItem/NewToWeb3WalletItem.js +1 -1
- package/src/lib/shared/types/index.d.ts +1 -0
- package/src/lib/shared/utils/classes/storage/localStorage.cjs +36 -24
- package/src/lib/shared/utils/classes/storage/localStorage.d.ts +16 -3
- package/src/lib/shared/utils/classes/storage/localStorage.js +37 -25
- package/src/lib/shared/utils/hooks/index.d.ts +1 -0
- package/src/lib/shared/utils/hooks/useEffectOnce/index.d.ts +1 -0
- package/src/lib/shared/utils/hooks/useEffectOnce/useEffectOnce.cjs +27 -0
- package/src/lib/shared/utils/hooks/useEffectOnce/useEffectOnce.d.ts +17 -0
- package/src/lib/shared/utils/hooks/useEffectOnce/useEffectOnce.js +23 -0
- package/src/lib/styles/index.shadow.cjs +1 -1
- package/src/lib/styles/index.shadow.js +1 -1
- package/src/lib/utils/functions/getAuthToken/getAuthToken.cjs +2 -1
- package/src/lib/utils/functions/getAuthToken/getAuthToken.d.ts +1 -1
- package/src/lib/utils/functions/getAuthToken/getAuthToken.js +2 -1
- package/src/lib/utils/functions/isSelectedWalletAlreadyConnected/isSelectedWalletAlreadyConnected.cjs +2 -2
- package/src/lib/utils/functions/isSelectedWalletAlreadyConnected/isSelectedWalletAlreadyConnected.d.ts +1 -1
- package/src/lib/utils/functions/isSelectedWalletAlreadyConnected/isSelectedWalletAlreadyConnected.js +2 -2
- package/src/lib/utils/functions/storeAuthToken/index.cjs +1 -3
- package/src/lib/utils/functions/storeAuthToken/index.js +1 -3
- package/src/lib/utils/hooks/index.d.ts +2 -0
- package/src/lib/utils/hooks/multiWallet/useMultiWallet/index.d.ts +1 -0
- package/src/lib/utils/hooks/multiWallet/useMultiWallet/useMultiWallet.cjs +17 -0
- package/src/lib/utils/hooks/multiWallet/useMultiWallet/useMultiWallet.d.ts +8 -0
- package/src/lib/utils/hooks/multiWallet/useMultiWallet/useMultiWallet.js +13 -0
- package/src/lib/utils/hooks/useApplyWalletConnectorNetwork/useApplyWalletConnectorNetwork.cjs +29 -0
- package/src/lib/utils/hooks/useApplyWalletConnectorNetwork/useApplyWalletConnectorNetwork.d.ts +5 -0
- package/src/lib/utils/hooks/useApplyWalletConnectorNetwork/useApplyWalletConnectorNetwork.js +25 -0
- package/src/lib/utils/hooks/useConnectWallet/useConnectWallet.cjs +20 -5
- package/src/lib/utils/hooks/useConnectWallet/useConnectWallet.d.ts +5 -2
- package/src/lib/utils/hooks/useConnectWallet/useConnectWallet.js +20 -5
- package/src/lib/utils/hooks/useConnectedAccountWallet/useConnectedAccountWallet.cjs +11 -18
- package/src/lib/utils/hooks/useConnectedAccountWallet/useConnectedAccountWallet.js +11 -18
- package/src/lib/utils/hooks/useEventListener/index.d.ts +1 -0
- package/src/lib/utils/hooks/useEventListener/useEventListener.cjs +25 -0
- package/src/lib/utils/hooks/useEventListener/useEventListener.d.ts +1 -0
- package/src/lib/utils/hooks/useEventListener/useEventListener.js +21 -0
- package/src/lib/utils/hooks/usePromise/usePromise.cjs +71 -18
- package/src/lib/utils/hooks/usePromise/usePromise.d.ts +14 -0
- package/src/lib/utils/hooks/usePromise/usePromise.js +72 -19
- package/src/lib/utils/hooks/useWalletItemActions/useWalletItemActions.cjs +3 -3
- package/src/lib/utils/hooks/useWalletItemActions/useWalletItemActions.js +3 -3
- package/src/lib/views/EmailConfirmationWaitingView/EmailConfirmationWaitingView.cjs +1 -1
- package/src/lib/views/EmailConfirmationWaitingView/EmailConfirmationWaitingView.js +1 -1
- package/src/lib/views/LoginWithEmailView/components/LoginWithEmailWalletList/LoginWithEmailWalletList.cjs +2 -2
- package/src/lib/views/LoginWithEmailView/components/LoginWithEmailWalletList/LoginWithEmailWalletList.js +2 -2
- package/src/lib/views/NetworkNotSupported/NetworkNotSupported.cjs +9 -8
- package/src/lib/views/NetworkNotSupported/NetworkNotSupported.js +9 -8
- package/src/lib/views/NetworkNotSupportedSwitchManual/NetworkNotSupportedSwitchManual.cjs +5 -9
- package/src/lib/views/NetworkNotSupportedSwitchManual/NetworkNotSupportedSwitchManual.js +5 -9
- package/src/lib/views/WalletList/SearchNotFoundMessage/SearchNotFoundMessage.cjs +2 -1
- package/src/lib/views/WalletList/SearchNotFoundMessage/SearchNotFoundMessage.d.ts +2 -2
- package/src/lib/views/WalletList/SearchNotFoundMessage/SearchNotFoundMessage.js +2 -1
- package/src/lib/views/WalletList/WalletList.cjs +2 -2
- package/src/lib/views/WalletList/WalletList.js +2 -2
- package/src/lib/views/WalletList/WalletListItem/WalletListItem.types.d.ts +1 -2
- package/src/lib/components/Toolkit/components/BrandStyleSwitch.cjs +0 -22
- package/src/lib/components/Toolkit/components/BrandStyleSwitch.d.ts +0 -2
- 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,
|
|
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
|
|
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
|
-
|
|
181
|
+
useEffectOnce(() => {
|
|
160
182
|
const missingChains = getMissingChains(walletsByChain, connectedWalletsInfo);
|
|
161
183
|
setWalletsToConnectByChain(missingChains);
|
|
162
|
-
}
|
|
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 = (
|
|
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
|
|
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 ((
|
|
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
|
-
(
|
|
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
|
-
((
|
|
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
|
|
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
|
-
|
|
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, ((
|
|
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
|
-
|
|
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(
|
|
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
|
|
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(
|
|
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';
|
|
@@ -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,
|
|
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' | '
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
|
@@ -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
|
-
|
|
20
|
-
|
|
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
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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
|
-
|
|
44
|
-
return JSON.parse(value);
|
|
45
|
-
}
|
|
44
|
+
return JSON.parse(value);
|
|
46
45
|
}
|
|
47
|
-
catch (
|
|
48
|
-
logger.logger.
|
|
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
|
-
|
|
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
|
-
|
|
7
|
-
|
|
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
|
-
|
|
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;
|