@dynamic-labs/sdk-react-core 0.19.0-alpha.25 → 0.19.0-alpha.26
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 +15 -0
- package/package.cjs +1 -1
- package/package.js +1 -1
- package/package.json +8 -8
- package/src/lib/components/SocialSignIn/SocialSignIn.cjs +8 -3
- package/src/lib/components/SocialSignIn/SocialSignIn.js +8 -3
- package/src/lib/context/SocialRedirectContext/SocialRedirectContext.cjs +8 -8
- package/src/lib/context/SocialRedirectContext/SocialRedirectContext.js +8 -8
- package/src/lib/shared/utils/hooks/useOnClickOutside/index.cjs +2 -2
- package/src/lib/shared/utils/hooks/useOnClickOutside/index.js +2 -2
- package/src/lib/utils/functions/getUserWalletsFromVerifiedCredentials/getUserWalletsFromVerifiedCredentials.cjs +26 -0
- package/src/lib/utils/functions/getUserWalletsFromVerifiedCredentials/getUserWalletsFromVerifiedCredentials.d.ts +1 -0
- package/src/lib/utils/functions/getUserWalletsFromVerifiedCredentials/getUserWalletsFromVerifiedCredentials.js +22 -0
- package/src/lib/utils/functions/getUserWalletsFromVerifiedCredentials/index.d.ts +1 -0
- package/src/lib/utils/functions/index.d.ts +1 -0
- package/src/lib/utils/hooks/multiWallet/useSyncPrimaryWallet/useSyncPrimaryWallet.cjs +2 -5
- package/src/lib/utils/hooks/multiWallet/useSyncPrimaryWallet/useSyncPrimaryWallet.js +2 -5
- package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.cjs +12 -6
- package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.js +12 -6
- package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.cjs +3 -8
- package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.js +3 -8
- package/src/lib/views/LoginView/sections/SocialSignInSection/MagicSocialSignIn/MagicSocialSignIn.cjs +2 -4
- package/src/lib/views/LoginView/sections/SocialSignInSection/MagicSocialSignIn/MagicSocialSignIn.js +2 -4
- package/src/lib/views/LoginView/useLoginView.cjs +31 -17
- package/src/lib/views/LoginView/useLoginView.js +32 -18
- package/src/lib/utils/hooks/useWalletEventListeners/utils/index.d.ts +0 -1
- package/src/lib/utils/hooks/useWalletEventListeners/utils/sortAccountsByPrimaryWallet/index.d.ts +0 -1
- package/src/lib/utils/hooks/useWalletEventListeners/utils/sortAccountsByPrimaryWallet/sortAccountsByPrimaryWallet.cjs +0 -9
- package/src/lib/utils/hooks/useWalletEventListeners/utils/sortAccountsByPrimaryWallet/sortAccountsByPrimaryWallet.d.ts +0 -2
- package/src/lib/utils/hooks/useWalletEventListeners/utils/sortAccountsByPrimaryWallet/sortAccountsByPrimaryWallet.js +0 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,19 @@
|
|
|
1
1
|
|
|
2
|
+
## [0.19.0-alpha.26](https://github.com/dynamic-labs/DynamicAuth/compare/v0.19.0-alpha.25...v0.19.0-alpha.26) (2023-10-25)
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
* allow filtering social providers for Dynamic Social with socialProvidersFilter ([#3707](https://github.com/dynamic-labs/DynamicAuth/issues/3707)) ([e4c16f3](https://github.com/dynamic-labs/DynamicAuth/commit/e4c16f359946e278a372cb8153242946d4887dcc))
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
### Bug Fixes
|
|
11
|
+
|
|
12
|
+
* only create embedded wallet if user have no wallet ([#3715](https://github.com/dynamic-labs/DynamicAuth/issues/3715)) ([728e01a](https://github.com/dynamic-labs/DynamicAuth/commit/728e01ab8b5931eaa6fb7877c23847ac85947f52))
|
|
13
|
+
* Revert "fix(use-wallet-event-listener): handle switching wallet … ([#3699](https://github.com/dynamic-labs/DynamicAuth/issues/3699)) ([9b94737](https://github.com/dynamic-labs/DynamicAuth/commit/9b94737ecfa72cd047964254d806403b342433a1)), closes [#3626](https://github.com/dynamic-labs/DynamicAuth/issues/3626)
|
|
14
|
+
* undefined network edge case ([#3667](https://github.com/dynamic-labs/DynamicAuth/issues/3667)) ([12d4236](https://github.com/dynamic-labs/DynamicAuth/commit/12d42363f69b1dfd5babe05142bd03c501f62e5f))
|
|
15
|
+
* **useOnClickOutside:** prevent opening element on click while already open ([#3714](https://github.com/dynamic-labs/DynamicAuth/issues/3714)) ([1999dc5](https://github.com/dynamic-labs/DynamicAuth/commit/1999dc50b6e82eb5ee8d0919118e9dfbc39c2b67))
|
|
16
|
+
|
|
2
17
|
## [0.19.0-alpha.25](https://github.com/dynamic-labs/DynamicAuth/compare/v0.19.0-alpha.24...v0.19.0-alpha.25) (2023-10-25)
|
|
3
18
|
|
|
4
19
|
|
package/package.cjs
CHANGED
package/package.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dynamic-labs/sdk-react-core",
|
|
3
|
-
"version": "0.19.0-alpha.
|
|
3
|
+
"version": "0.19.0-alpha.26",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/dynamic-labs/DynamicAuth.git",
|
|
@@ -17,13 +17,13 @@
|
|
|
17
17
|
"react-focus-lock": "2.9.2",
|
|
18
18
|
"react-i18next": "^13.2.0",
|
|
19
19
|
"yup": "0.32.11",
|
|
20
|
-
"@dynamic-labs/logger": "0.19.0-alpha.
|
|
21
|
-
"@dynamic-labs/multi-wallet": "0.19.0-alpha.
|
|
22
|
-
"@dynamic-labs/rpc-providers": "0.19.0-alpha.
|
|
23
|
-
"@dynamic-labs/types": "0.19.0-alpha.
|
|
24
|
-
"@dynamic-labs/utils": "0.19.0-alpha.
|
|
25
|
-
"@dynamic-labs/wallet-book": "0.19.0-alpha.
|
|
26
|
-
"@dynamic-labs/wallet-connector-core": "0.19.0-alpha.
|
|
20
|
+
"@dynamic-labs/logger": "0.19.0-alpha.26",
|
|
21
|
+
"@dynamic-labs/multi-wallet": "0.19.0-alpha.26",
|
|
22
|
+
"@dynamic-labs/rpc-providers": "0.19.0-alpha.26",
|
|
23
|
+
"@dynamic-labs/types": "0.19.0-alpha.26",
|
|
24
|
+
"@dynamic-labs/utils": "0.19.0-alpha.26",
|
|
25
|
+
"@dynamic-labs/wallet-book": "0.19.0-alpha.26",
|
|
26
|
+
"@dynamic-labs/wallet-connector-core": "0.19.0-alpha.26",
|
|
27
27
|
"eventemitter3": "5.0.1"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
@@ -73,13 +73,18 @@ const SocialSignIn = ({ providers, onSelectProvider, isLoading, selectedProvider
|
|
|
73
73
|
const [showCard, setShowCard] = React.useState(false);
|
|
74
74
|
const closeCard = () => !isLoading && setShowCard(false);
|
|
75
75
|
const numberOfEnabledSocialProviders = providers.length;
|
|
76
|
-
|
|
76
|
+
// Set default provider as the first available provider if
|
|
77
|
+
if (
|
|
78
|
+
// Default provider isn't within the providers
|
|
79
|
+
(defaultProvider && !providers.includes(defaultProvider)) ||
|
|
80
|
+
// Or there's only one provider
|
|
81
|
+
numberOfEnabledSocialProviders === 1) {
|
|
77
82
|
// set first and only item in providers list as default provider
|
|
78
83
|
[defaultProvider] = providers;
|
|
79
84
|
}
|
|
80
85
|
else {
|
|
81
|
-
// put default provider at the
|
|
82
|
-
providers.sort((p1
|
|
86
|
+
// put default provider at the beginning of the list
|
|
87
|
+
providers.sort((p1) => (p1 === defaultProvider ? -1 : 0));
|
|
83
88
|
}
|
|
84
89
|
const defaultProviderOffset = defaultProvider ? 1 : 0;
|
|
85
90
|
// display number of items set in prop, with a max limit of MAX_INLINE_ITEMS
|
|
@@ -69,13 +69,18 @@ const SocialSignIn = ({ providers, onSelectProvider, isLoading, selectedProvider
|
|
|
69
69
|
const [showCard, setShowCard] = useState(false);
|
|
70
70
|
const closeCard = () => !isLoading && setShowCard(false);
|
|
71
71
|
const numberOfEnabledSocialProviders = providers.length;
|
|
72
|
-
|
|
72
|
+
// Set default provider as the first available provider if
|
|
73
|
+
if (
|
|
74
|
+
// Default provider isn't within the providers
|
|
75
|
+
(defaultProvider && !providers.includes(defaultProvider)) ||
|
|
76
|
+
// Or there's only one provider
|
|
77
|
+
numberOfEnabledSocialProviders === 1) {
|
|
73
78
|
// set first and only item in providers list as default provider
|
|
74
79
|
[defaultProvider] = providers;
|
|
75
80
|
}
|
|
76
81
|
else {
|
|
77
|
-
// put default provider at the
|
|
78
|
-
providers.sort((p1
|
|
82
|
+
// put default provider at the beginning of the list
|
|
83
|
+
providers.sort((p1) => (p1 === defaultProvider ? -1 : 0));
|
|
79
84
|
}
|
|
80
85
|
const defaultProviderOffset = defaultProvider ? 1 : 0;
|
|
81
86
|
// display number of items set in prop, with a max limit of MAX_INLINE_ITEMS
|
|
@@ -6,24 +6,24 @@ var _tslib = require('../../../../_virtual/_tslib.cjs');
|
|
|
6
6
|
var jsxRuntime = require('react/jsx-runtime');
|
|
7
7
|
var React = require('react');
|
|
8
8
|
var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
|
|
9
|
-
var useInternalDynamicContext = require('../DynamicContext/useInternalDynamicContext.cjs');
|
|
10
|
-
var ViewContext = require('../ViewContext/ViewContext.cjs');
|
|
11
|
-
require('@dynamic-labs/utils');
|
|
12
9
|
require('@dynamic-labs/sdk-api');
|
|
13
|
-
require('../../config/ApiEndpoint.cjs');
|
|
14
10
|
var logger = require('../../shared/logger.cjs');
|
|
15
11
|
require('@dynamic-labs/iconic');
|
|
12
|
+
var ViewContext = require('../ViewContext/ViewContext.cjs');
|
|
16
13
|
require('@dynamic-labs/wallet-book');
|
|
14
|
+
require('@dynamic-labs/utils');
|
|
17
15
|
require('../../utils/constants/colors.cjs');
|
|
18
16
|
require('../../shared/utils/classes/storage/localStorage.cjs');
|
|
19
17
|
require('viem');
|
|
20
18
|
require('../../shared/consts/index.cjs');
|
|
21
19
|
require('@dynamic-labs/multi-wallet');
|
|
20
|
+
var getReferencedAccount = require('../../utils/functions/getReferencedAccount/getReferencedAccount.cjs');
|
|
21
|
+
require('../../config/ApiEndpoint.cjs');
|
|
22
22
|
require('@dynamic-labs/rpc-providers');
|
|
23
23
|
require('../../utils/hooks/useWallets/utils/verifyMagicIsSetup/verifyMagicIsSetup.cjs');
|
|
24
|
-
var getReferencedAccount = require('../../utils/functions/getReferencedAccount/getReferencedAccount.cjs');
|
|
25
24
|
var useVerifyWallet = require('../../utils/hooks/useVerifyWallet/useVerifyWallet.cjs');
|
|
26
25
|
require('react-dom');
|
|
26
|
+
var useInternalDynamicContext = require('../DynamicContext/useInternalDynamicContext.cjs');
|
|
27
27
|
require('../../components/ShadowDOM/ShadowDOM.cjs');
|
|
28
28
|
require('../ThemeContext/ThemeContext.cjs');
|
|
29
29
|
require('react-focus-lock');
|
|
@@ -62,7 +62,7 @@ require('../UserFieldEditorContext/UserFieldEditorContext.cjs');
|
|
|
62
62
|
const SocialRedirectContext = React.createContext(undefined);
|
|
63
63
|
const SocialRedirectContextProvider = ({ children, }) => {
|
|
64
64
|
var _a, _b, _c, _d;
|
|
65
|
-
const { setShowAuthFlow, wallets, setSelectedWalletConnector, walletUiUtils, consumeNonce, displaySiweStatement, environmentId, projectSettings, setIsSingleWalletAccount, setShowDynamicUserProfile, isAuthenticated, setPrimaryWalletId, secondaryWallets, sdkHasLoaded, authToken, connectWallet, primaryWallet, } = useInternalDynamicContext.useInternalDynamicContext();
|
|
65
|
+
const { setShowAuthFlow, wallets, setSelectedWalletConnector, walletUiUtils, consumeNonce, displaySiweStatement, environmentId, projectSettings, setIsSingleWalletAccount, setShowDynamicUserProfile, isAuthenticated, setPrimaryWalletId, secondaryWallets, sdkHasLoaded, authToken, connectWallet, primaryWallet, socialProvidersFilter = (providers) => providers, } = useInternalDynamicContext.useInternalDynamicContext();
|
|
66
66
|
const { setErrorMessage } = ErrorContext.useErrorContext();
|
|
67
67
|
const { setView } = ViewContext.useViewContext();
|
|
68
68
|
const verifyWallet = useVerifyWallet.useVerifyWallet({
|
|
@@ -74,9 +74,9 @@ const SocialRedirectContextProvider = ({ children, }) => {
|
|
|
74
74
|
});
|
|
75
75
|
const signInProvider = (_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.socialSignIn) === null || _a === void 0 ? void 0 : _a.signInProvider;
|
|
76
76
|
const enabledSocialProvidersInDb = (_c = (_b = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.socialSignIn) === null || _b === void 0 ? void 0 : _b.providers) !== null && _c !== void 0 ? _c : [];
|
|
77
|
-
const enabledSocialProviders = (_d = enabledSocialProvidersInDb
|
|
77
|
+
const enabledSocialProviders = (_d = socialProvidersFilter(enabledSocialProvidersInDb
|
|
78
78
|
.filter((provider) => provider.enabled)
|
|
79
|
-
.map((provider) => provider.provider)) !== null && _d !== void 0 ? _d : [];
|
|
79
|
+
.map((provider) => provider.provider))) !== null && _d !== void 0 ? _d : [];
|
|
80
80
|
const socialWalletConnector = wallets
|
|
81
81
|
.map(({ walletConnector }) => walletConnector)
|
|
82
82
|
.find(walletConnectorCore.isSocialWalletConnector);
|
|
@@ -2,24 +2,24 @@ import { __awaiter } from '../../../../_virtual/_tslib.js';
|
|
|
2
2
|
import { jsx } from 'react/jsx-runtime';
|
|
3
3
|
import { createContext, useState, useMemo, useCallback, useEffect, useContext } from 'react';
|
|
4
4
|
import { isSocialWalletConnector } from '@dynamic-labs/wallet-connector-core';
|
|
5
|
-
import { useInternalDynamicContext } from '../DynamicContext/useInternalDynamicContext.js';
|
|
6
|
-
import { useViewContext } from '../ViewContext/ViewContext.js';
|
|
7
|
-
import '@dynamic-labs/utils';
|
|
8
5
|
import '@dynamic-labs/sdk-api';
|
|
9
|
-
import '../../config/ApiEndpoint.js';
|
|
10
6
|
import { logger } from '../../shared/logger.js';
|
|
11
7
|
import '@dynamic-labs/iconic';
|
|
8
|
+
import { useViewContext } from '../ViewContext/ViewContext.js';
|
|
12
9
|
import '@dynamic-labs/wallet-book';
|
|
10
|
+
import '@dynamic-labs/utils';
|
|
13
11
|
import '../../utils/constants/colors.js';
|
|
14
12
|
import '../../shared/utils/classes/storage/localStorage.js';
|
|
15
13
|
import 'viem';
|
|
16
14
|
import '../../shared/consts/index.js';
|
|
17
15
|
import '@dynamic-labs/multi-wallet';
|
|
16
|
+
import { getReferencedAccount } from '../../utils/functions/getReferencedAccount/getReferencedAccount.js';
|
|
17
|
+
import '../../config/ApiEndpoint.js';
|
|
18
18
|
import '@dynamic-labs/rpc-providers';
|
|
19
19
|
import '../../utils/hooks/useWallets/utils/verifyMagicIsSetup/verifyMagicIsSetup.js';
|
|
20
|
-
import { getReferencedAccount } from '../../utils/functions/getReferencedAccount/getReferencedAccount.js';
|
|
21
20
|
import { useVerifyWallet } from '../../utils/hooks/useVerifyWallet/useVerifyWallet.js';
|
|
22
21
|
import 'react-dom';
|
|
22
|
+
import { useInternalDynamicContext } from '../DynamicContext/useInternalDynamicContext.js';
|
|
23
23
|
import '../../components/ShadowDOM/ShadowDOM.js';
|
|
24
24
|
import '../ThemeContext/ThemeContext.js';
|
|
25
25
|
import 'react-focus-lock';
|
|
@@ -58,7 +58,7 @@ import '../UserFieldEditorContext/UserFieldEditorContext.js';
|
|
|
58
58
|
const SocialRedirectContext = createContext(undefined);
|
|
59
59
|
const SocialRedirectContextProvider = ({ children, }) => {
|
|
60
60
|
var _a, _b, _c, _d;
|
|
61
|
-
const { setShowAuthFlow, wallets, setSelectedWalletConnector, walletUiUtils, consumeNonce, displaySiweStatement, environmentId, projectSettings, setIsSingleWalletAccount, setShowDynamicUserProfile, isAuthenticated, setPrimaryWalletId, secondaryWallets, sdkHasLoaded, authToken, connectWallet, primaryWallet, } = useInternalDynamicContext();
|
|
61
|
+
const { setShowAuthFlow, wallets, setSelectedWalletConnector, walletUiUtils, consumeNonce, displaySiweStatement, environmentId, projectSettings, setIsSingleWalletAccount, setShowDynamicUserProfile, isAuthenticated, setPrimaryWalletId, secondaryWallets, sdkHasLoaded, authToken, connectWallet, primaryWallet, socialProvidersFilter = (providers) => providers, } = useInternalDynamicContext();
|
|
62
62
|
const { setErrorMessage } = useErrorContext();
|
|
63
63
|
const { setView } = useViewContext();
|
|
64
64
|
const verifyWallet = useVerifyWallet({
|
|
@@ -70,9 +70,9 @@ const SocialRedirectContextProvider = ({ children, }) => {
|
|
|
70
70
|
});
|
|
71
71
|
const signInProvider = (_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.socialSignIn) === null || _a === void 0 ? void 0 : _a.signInProvider;
|
|
72
72
|
const enabledSocialProvidersInDb = (_c = (_b = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.socialSignIn) === null || _b === void 0 ? void 0 : _b.providers) !== null && _c !== void 0 ? _c : [];
|
|
73
|
-
const enabledSocialProviders = (_d = enabledSocialProvidersInDb
|
|
73
|
+
const enabledSocialProviders = (_d = socialProvidersFilter(enabledSocialProvidersInDb
|
|
74
74
|
.filter((provider) => provider.enabled)
|
|
75
|
-
.map((provider) => provider.provider)) !== null && _d !== void 0 ? _d : [];
|
|
75
|
+
.map((provider) => provider.provider))) !== null && _d !== void 0 ? _d : [];
|
|
76
76
|
const socialWalletConnector = wallets
|
|
77
77
|
.map(({ walletConnector }) => walletConnector)
|
|
78
78
|
.find(isSocialWalletConnector);
|
|
@@ -16,11 +16,11 @@ const useOnClickOutside = (ref, handler) => {
|
|
|
16
16
|
}
|
|
17
17
|
handler(event);
|
|
18
18
|
};
|
|
19
|
-
document.addEventListener('mousedown', listener);
|
|
20
19
|
document.addEventListener('touchstart', listener);
|
|
20
|
+
document.addEventListener('click', listener);
|
|
21
21
|
return () => {
|
|
22
|
-
document.removeEventListener('mousedown', listener);
|
|
23
22
|
document.removeEventListener('touchstart', listener);
|
|
23
|
+
document.removeEventListener('click', listener);
|
|
24
24
|
};
|
|
25
25
|
}, [ref, handler]);
|
|
26
26
|
};
|
|
@@ -12,11 +12,11 @@ const useOnClickOutside = (ref, handler) => {
|
|
|
12
12
|
}
|
|
13
13
|
handler(event);
|
|
14
14
|
};
|
|
15
|
-
document.addEventListener('mousedown', listener);
|
|
16
15
|
document.addEventListener('touchstart', listener);
|
|
16
|
+
document.addEventListener('click', listener);
|
|
17
17
|
return () => {
|
|
18
|
-
document.removeEventListener('mousedown', listener);
|
|
19
18
|
document.removeEventListener('touchstart', listener);
|
|
19
|
+
document.removeEventListener('click', listener);
|
|
20
20
|
};
|
|
21
21
|
}, [ref, handler]);
|
|
22
22
|
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var decodeJwt = require('../../../shared/utils/functions/decodeJwt/decodeJwt.cjs');
|
|
6
|
+
require('@dynamic-labs/iconic');
|
|
7
|
+
require('@dynamic-labs/wallet-connector-core');
|
|
8
|
+
require('react/jsx-runtime');
|
|
9
|
+
require('../../../context/ViewContext/ViewContext.cjs');
|
|
10
|
+
require('react');
|
|
11
|
+
require('../../../shared/logger.cjs');
|
|
12
|
+
require('@dynamic-labs/wallet-book');
|
|
13
|
+
require('@dynamic-labs/utils');
|
|
14
|
+
require('../../constants/colors.cjs');
|
|
15
|
+
require('../../../shared/utils/classes/storage/localStorage.cjs');
|
|
16
|
+
require('viem');
|
|
17
|
+
require('../../../shared/consts/index.cjs');
|
|
18
|
+
|
|
19
|
+
// verifies if user has any type of wallet
|
|
20
|
+
const getUserWalletsFromVerifiedCredentials = (jwt) => {
|
|
21
|
+
var _a;
|
|
22
|
+
const decodedJwt = decodeJwt.decodeJwt(jwt);
|
|
23
|
+
return (_a = decodedJwt === null || decodedJwt === void 0 ? void 0 : decodedJwt.verifiedCredentials) === null || _a === void 0 ? void 0 : _a.filter(({ walletProvider }) => walletProvider);
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
exports.getUserWalletsFromVerifiedCredentials = getUserWalletsFromVerifiedCredentials;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const getUserWalletsFromVerifiedCredentials: (jwt: string) => import("@dynamic-labs/sdk-api").JwtVerifiedCredential[] | undefined;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { decodeJwt } from '../../../shared/utils/functions/decodeJwt/decodeJwt.js';
|
|
2
|
+
import '@dynamic-labs/iconic';
|
|
3
|
+
import '@dynamic-labs/wallet-connector-core';
|
|
4
|
+
import 'react/jsx-runtime';
|
|
5
|
+
import '../../../context/ViewContext/ViewContext.js';
|
|
6
|
+
import 'react';
|
|
7
|
+
import '../../../shared/logger.js';
|
|
8
|
+
import '@dynamic-labs/wallet-book';
|
|
9
|
+
import '@dynamic-labs/utils';
|
|
10
|
+
import '../../constants/colors.js';
|
|
11
|
+
import '../../../shared/utils/classes/storage/localStorage.js';
|
|
12
|
+
import 'viem';
|
|
13
|
+
import '../../../shared/consts/index.js';
|
|
14
|
+
|
|
15
|
+
// verifies if user has any type of wallet
|
|
16
|
+
const getUserWalletsFromVerifiedCredentials = (jwt) => {
|
|
17
|
+
var _a;
|
|
18
|
+
const decodedJwt = decodeJwt(jwt);
|
|
19
|
+
return (_a = decodedJwt === null || decodedJwt === void 0 ? void 0 : decodedJwt.verifiedCredentials) === null || _a === void 0 ? void 0 : _a.filter(({ walletProvider }) => walletProvider);
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export { getUserWalletsFromVerifiedCredentials };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { getUserWalletsFromVerifiedCredentials } from './getUserWalletsFromVerifiedCredentials';
|
|
@@ -9,10 +9,9 @@ var isWalletLinked = require('../../../functions/isWalletLinked/isWalletLinked.c
|
|
|
9
9
|
var ViewContext = require('../../../../context/ViewContext/ViewContext.cjs');
|
|
10
10
|
var useInternalDynamicContext = require('../../../../context/DynamicContext/useInternalDynamicContext.cjs');
|
|
11
11
|
var errors = require('../../../constants/errors.cjs');
|
|
12
|
-
var sortAccountsByPrimaryWallet = require('../../useWalletEventListeners/utils/sortAccountsByPrimaryWallet/sortAccountsByPrimaryWallet.cjs');
|
|
13
12
|
|
|
14
13
|
const useSyncPrimaryWallet = (canSync = true) => {
|
|
15
|
-
const { setShowAuthFlow, isAuthenticated, authMode, computeConnectedStateForWallets, connectWallet, handleLogOut, multiWalletWidgetState, primaryWallet, secondaryWallets, setMultiWalletWidgetState, setPrimaryWallet, setShowWidgetStatePopup, showLockedWalletView, showWidgetStatePopup,
|
|
14
|
+
const { setShowAuthFlow, isAuthenticated, authMode, computeConnectedStateForWallets, connectWallet, handleLogOut, multiWalletWidgetState, primaryWallet, secondaryWallets, setMultiWalletWidgetState, setPrimaryWallet, setShowWidgetStatePopup, showLockedWalletView, showWidgetStatePopup, } = useInternalDynamicContext.useInternalDynamicContext();
|
|
16
15
|
const { setView } = ViewContext.useViewContext();
|
|
17
16
|
const handlePrimaryWalletNotActive = React.useCallback((connectedAddress) => {
|
|
18
17
|
if (!primaryWallet)
|
|
@@ -76,9 +75,7 @@ const useSyncPrimaryWallet = (canSync = true) => {
|
|
|
76
75
|
primaryWallet.connector
|
|
77
76
|
.getConnectedAccounts()
|
|
78
77
|
.then((accounts) => {
|
|
79
|
-
const [connectedAddress] =
|
|
80
|
-
? accounts
|
|
81
|
-
: sortAccountsByPrimaryWallet.sortAccountsByPrimaryWallet(accounts, primaryWallet);
|
|
78
|
+
const [connectedAddress] = accounts;
|
|
82
79
|
if (!connectedAddress) {
|
|
83
80
|
throw new utils.DynamicError('Missing wallet address', errors.MISSING_ADDRESS_ERROR);
|
|
84
81
|
}
|
|
@@ -5,10 +5,9 @@ import { isWalletLinked } from '../../../functions/isWalletLinked/isWalletLinked
|
|
|
5
5
|
import { useViewContext } from '../../../../context/ViewContext/ViewContext.js';
|
|
6
6
|
import { useInternalDynamicContext } from '../../../../context/DynamicContext/useInternalDynamicContext.js';
|
|
7
7
|
import { MISSING_ADDRESS_ERROR } from '../../../constants/errors.js';
|
|
8
|
-
import { sortAccountsByPrimaryWallet } from '../../useWalletEventListeners/utils/sortAccountsByPrimaryWallet/sortAccountsByPrimaryWallet.js';
|
|
9
8
|
|
|
10
9
|
const useSyncPrimaryWallet = (canSync = true) => {
|
|
11
|
-
const { setShowAuthFlow, isAuthenticated, authMode, computeConnectedStateForWallets, connectWallet, handleLogOut, multiWalletWidgetState, primaryWallet, secondaryWallets, setMultiWalletWidgetState, setPrimaryWallet, setShowWidgetStatePopup, showLockedWalletView, showWidgetStatePopup,
|
|
10
|
+
const { setShowAuthFlow, isAuthenticated, authMode, computeConnectedStateForWallets, connectWallet, handleLogOut, multiWalletWidgetState, primaryWallet, secondaryWallets, setMultiWalletWidgetState, setPrimaryWallet, setShowWidgetStatePopup, showLockedWalletView, showWidgetStatePopup, } = useInternalDynamicContext();
|
|
12
11
|
const { setView } = useViewContext();
|
|
13
12
|
const handlePrimaryWalletNotActive = useCallback((connectedAddress) => {
|
|
14
13
|
if (!primaryWallet)
|
|
@@ -72,9 +71,7 @@ const useSyncPrimaryWallet = (canSync = true) => {
|
|
|
72
71
|
primaryWallet.connector
|
|
73
72
|
.getConnectedAccounts()
|
|
74
73
|
.then((accounts) => {
|
|
75
|
-
const [connectedAddress] =
|
|
76
|
-
? accounts
|
|
77
|
-
: sortAccountsByPrimaryWallet(accounts, primaryWallet);
|
|
74
|
+
const [connectedAddress] = accounts;
|
|
78
75
|
if (!connectedAddress) {
|
|
79
76
|
throw new DynamicError('Missing wallet address', MISSING_ADDRESS_ERROR);
|
|
80
77
|
}
|
|
@@ -24,10 +24,11 @@ var isTurnkeyEnabled = require('../../functions/isTurnkeyEnabled/isTurnkeyEnable
|
|
|
24
24
|
var isEmbeddedWalletPresent = require('../../functions/isEmbeddedWalletPresent/isEmbeddedWalletPresent.cjs');
|
|
25
25
|
var findEmbeddedWalletFromVerifiedCredentials = require('../../functions/findEmbeddedWalletFromVerifiedCredentials/findEmbeddedWalletFromVerifiedCredentials.cjs');
|
|
26
26
|
var findTurnkeyWallet = require('../../functions/findTurnkeyWallet/findTurnkeyWallet.cjs');
|
|
27
|
+
var getUserWalletsFromVerifiedCredentials = require('../../functions/getUserWalletsFromVerifiedCredentials/getUserWalletsFromVerifiedCredentials.cjs');
|
|
27
28
|
|
|
28
29
|
// Hook exposed to customers and used internally to trigger embedded wallet creation
|
|
29
30
|
const useEmbeddedWallet = () => {
|
|
30
|
-
const { projectSettings, onboardingOnlyJwt, setPrimaryWalletId, wallets, internalSetShowAuthFlow, internalEvents, } = useInternalDynamicContext.useInternalDynamicContext();
|
|
31
|
+
const { projectSettings, onboardingOnlyJwt, setPrimaryWalletId, wallets, internalSetShowAuthFlow, internalEvents, primaryWallet, } = useInternalDynamicContext.useInternalDynamicContext();
|
|
31
32
|
const { setView } = ViewContext.useViewContext();
|
|
32
33
|
const userHasEmbeddedWallet = () => {
|
|
33
34
|
var _a;
|
|
@@ -46,9 +47,9 @@ const useEmbeddedWallet = () => {
|
|
|
46
47
|
if (!isTurnkeyEnabled.isTurnkeyEnabled(projectSettings)) {
|
|
47
48
|
throw new Error('Passkey embedded wallet is not enabled');
|
|
48
49
|
}
|
|
49
|
-
const
|
|
50
|
-
// if user doesn't have
|
|
51
|
-
if (!
|
|
50
|
+
const userWaletsCredentials = getUserWalletsFromVerifiedCredentials.getUserWalletsFromVerifiedCredentials(jwt);
|
|
51
|
+
// if user doesn't have a wallet yet, show the passkey view to create an embedded wallet
|
|
52
|
+
if (!(userWaletsCredentials === null || userWaletsCredentials === void 0 ? void 0 : userWaletsCredentials.length)) {
|
|
52
53
|
internalSetShowAuthFlow(true);
|
|
53
54
|
setView('passkey-intro');
|
|
54
55
|
return new Promise((resolve, reject) => {
|
|
@@ -56,14 +57,19 @@ const useEmbeddedWallet = () => {
|
|
|
56
57
|
internalEvents.current.once('embeddedWalletFailed', (error) => reject(error));
|
|
57
58
|
});
|
|
58
59
|
}
|
|
59
|
-
|
|
60
|
+
internalSetShowAuthFlow(false);
|
|
61
|
+
const embeddedWalletVerifiedCredential = findEmbeddedWalletFromVerifiedCredentials.findEmbeddedWalletFromVerifiedCredentials(jwt);
|
|
60
62
|
const turnkeyWallet = findTurnkeyWallet.findTurnkeyWallet(wallets);
|
|
63
|
+
// if user logged in with MM for example, just continue the flow
|
|
64
|
+
if (!embeddedWalletVerifiedCredential) {
|
|
65
|
+
return Promise.resolve(primaryWallet);
|
|
66
|
+
}
|
|
67
|
+
const decodedJwt = decodeJwt.decodeJwt(jwt);
|
|
61
68
|
// if user already has embedded wallet, set it as primary wallet
|
|
62
69
|
if (decodedJwt) {
|
|
63
70
|
(_b = turnkeyWallet === null || turnkeyWallet === void 0 ? void 0 : turnkeyWallet.walletConnector) === null || _b === void 0 ? void 0 : _b.setVerifiedCredentials(decodedJwt.verifiedCredentials);
|
|
64
71
|
setPrimaryWalletId(embeddedWalletVerifiedCredential.id);
|
|
65
72
|
}
|
|
66
|
-
internalSetShowAuthFlow(false);
|
|
67
73
|
const passkeyWallet = {
|
|
68
74
|
address: (yield ((_c = turnkeyWallet === null || turnkeyWallet === void 0 ? void 0 : turnkeyWallet.walletConnector) === null || _c === void 0 ? void 0 : _c.fetchPublicAddress())) || '',
|
|
69
75
|
chain: ((_d = turnkeyWallet === null || turnkeyWallet === void 0 ? void 0 : turnkeyWallet.walletConnector) === null || _d === void 0 ? void 0 : _d.connectedChain) || '',
|
|
@@ -20,10 +20,11 @@ import { isTurnkeyEnabled } from '../../functions/isTurnkeyEnabled/isTurnkeyEnab
|
|
|
20
20
|
import { isEmbeddedWalletPresent } from '../../functions/isEmbeddedWalletPresent/isEmbeddedWalletPresent.js';
|
|
21
21
|
import { findEmbeddedWalletFromVerifiedCredentials } from '../../functions/findEmbeddedWalletFromVerifiedCredentials/findEmbeddedWalletFromVerifiedCredentials.js';
|
|
22
22
|
import { findTurnkeyWallet } from '../../functions/findTurnkeyWallet/findTurnkeyWallet.js';
|
|
23
|
+
import { getUserWalletsFromVerifiedCredentials } from '../../functions/getUserWalletsFromVerifiedCredentials/getUserWalletsFromVerifiedCredentials.js';
|
|
23
24
|
|
|
24
25
|
// Hook exposed to customers and used internally to trigger embedded wallet creation
|
|
25
26
|
const useEmbeddedWallet = () => {
|
|
26
|
-
const { projectSettings, onboardingOnlyJwt, setPrimaryWalletId, wallets, internalSetShowAuthFlow, internalEvents, } = useInternalDynamicContext();
|
|
27
|
+
const { projectSettings, onboardingOnlyJwt, setPrimaryWalletId, wallets, internalSetShowAuthFlow, internalEvents, primaryWallet, } = useInternalDynamicContext();
|
|
27
28
|
const { setView } = useViewContext();
|
|
28
29
|
const userHasEmbeddedWallet = () => {
|
|
29
30
|
var _a;
|
|
@@ -42,9 +43,9 @@ const useEmbeddedWallet = () => {
|
|
|
42
43
|
if (!isTurnkeyEnabled(projectSettings)) {
|
|
43
44
|
throw new Error('Passkey embedded wallet is not enabled');
|
|
44
45
|
}
|
|
45
|
-
const
|
|
46
|
-
// if user doesn't have
|
|
47
|
-
if (!
|
|
46
|
+
const userWaletsCredentials = getUserWalletsFromVerifiedCredentials(jwt);
|
|
47
|
+
// if user doesn't have a wallet yet, show the passkey view to create an embedded wallet
|
|
48
|
+
if (!(userWaletsCredentials === null || userWaletsCredentials === void 0 ? void 0 : userWaletsCredentials.length)) {
|
|
48
49
|
internalSetShowAuthFlow(true);
|
|
49
50
|
setView('passkey-intro');
|
|
50
51
|
return new Promise((resolve, reject) => {
|
|
@@ -52,14 +53,19 @@ const useEmbeddedWallet = () => {
|
|
|
52
53
|
internalEvents.current.once('embeddedWalletFailed', (error) => reject(error));
|
|
53
54
|
});
|
|
54
55
|
}
|
|
55
|
-
|
|
56
|
+
internalSetShowAuthFlow(false);
|
|
57
|
+
const embeddedWalletVerifiedCredential = findEmbeddedWalletFromVerifiedCredentials(jwt);
|
|
56
58
|
const turnkeyWallet = findTurnkeyWallet(wallets);
|
|
59
|
+
// if user logged in with MM for example, just continue the flow
|
|
60
|
+
if (!embeddedWalletVerifiedCredential) {
|
|
61
|
+
return Promise.resolve(primaryWallet);
|
|
62
|
+
}
|
|
63
|
+
const decodedJwt = decodeJwt(jwt);
|
|
57
64
|
// if user already has embedded wallet, set it as primary wallet
|
|
58
65
|
if (decodedJwt) {
|
|
59
66
|
(_b = turnkeyWallet === null || turnkeyWallet === void 0 ? void 0 : turnkeyWallet.walletConnector) === null || _b === void 0 ? void 0 : _b.setVerifiedCredentials(decodedJwt.verifiedCredentials);
|
|
60
67
|
setPrimaryWalletId(embeddedWalletVerifiedCredential.id);
|
|
61
68
|
}
|
|
62
|
-
internalSetShowAuthFlow(false);
|
|
63
69
|
const passkeyWallet = {
|
|
64
70
|
address: (yield ((_c = turnkeyWallet === null || turnkeyWallet === void 0 ? void 0 : turnkeyWallet.walletConnector) === null || _c === void 0 ? void 0 : _c.fetchPublicAddress())) || '',
|
|
65
71
|
chain: ((_d = turnkeyWallet === null || turnkeyWallet === void 0 ? void 0 : turnkeyWallet.walletConnector) === null || _d === void 0 ? void 0 : _d.connectedChain) || '',
|
|
@@ -17,7 +17,6 @@ require('../../../shared/utils/classes/storage/localStorage.cjs');
|
|
|
17
17
|
require('viem');
|
|
18
18
|
require('../../../shared/consts/index.cjs');
|
|
19
19
|
var useWalletConnectorEvent = require('../useWalletConnectorEvent/useWalletConnectorEvent.cjs');
|
|
20
|
-
var sortAccountsByPrimaryWallet = require('./utils/sortAccountsByPrimaryWallet/sortAccountsByPrimaryWallet.cjs');
|
|
21
20
|
|
|
22
21
|
const useWalletEventListeners = ({ computeConnectedStateForWallets, handleLogOut, multiWallet, multiWalletWidgetState, primaryWallet, secondaryWallets, selectedWalletConnector, selectedWalletWithAction, setSelectedWalletConnector, setSelectedWalletWithAction, setMultiWalletWidgetState, user, setPrimaryWalletId, authMode, refreshConnectedWallet, }) => {
|
|
23
22
|
const [loadingNetwork, setLoadingNetwork] = React.useState(true);
|
|
@@ -25,7 +24,7 @@ const useWalletEventListeners = ({ computeConnectedStateForWallets, handleLogOut
|
|
|
25
24
|
React.useEffect(() => {
|
|
26
25
|
const fetchNetwork = () => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
27
26
|
try {
|
|
28
|
-
if (!primaryWallet)
|
|
27
|
+
if (!(primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector))
|
|
29
28
|
return;
|
|
30
29
|
const network = yield primaryWallet.connector.getNetwork();
|
|
31
30
|
setNetwork(network);
|
|
@@ -39,7 +38,7 @@ const useWalletEventListeners = ({ computeConnectedStateForWallets, handleLogOut
|
|
|
39
38
|
}
|
|
40
39
|
});
|
|
41
40
|
fetchNetwork();
|
|
42
|
-
}, [primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.
|
|
41
|
+
}, [primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector]);
|
|
43
42
|
useWalletConnectorEvent.useWalletConnectorEvent(primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector, 'disconnect', () => {
|
|
44
43
|
logger.logger.debug('primary wallet disconnect');
|
|
45
44
|
handleLogOut();
|
|
@@ -65,11 +64,7 @@ const useWalletEventListeners = ({ computeConnectedStateForWallets, handleLogOut
|
|
|
65
64
|
// change the api here
|
|
66
65
|
if (!primaryWallet)
|
|
67
66
|
return;
|
|
68
|
-
|
|
69
|
-
// when multiWallet is disabled to ensure we find the primary address
|
|
70
|
-
const [newAddress] = multiWallet
|
|
71
|
-
? accounts
|
|
72
|
-
: sortAccountsByPrimaryWallet.sortAccountsByPrimaryWallet(accounts, primaryWallet);
|
|
67
|
+
const [newAddress] = accounts;
|
|
73
68
|
const newWallet = secondaryWallets.find((wallet) => walletConnectorCore.isSameAddress(wallet.address, newAddress, wallet.chain));
|
|
74
69
|
if (authMode === 'connect-only') {
|
|
75
70
|
refreshConnectedWallet(primaryWallet.id, primaryWallet.connector);
|
|
@@ -13,7 +13,6 @@ import '../../../shared/utils/classes/storage/localStorage.js';
|
|
|
13
13
|
import 'viem';
|
|
14
14
|
import '../../../shared/consts/index.js';
|
|
15
15
|
import { useWalletConnectorEvent } from '../useWalletConnectorEvent/useWalletConnectorEvent.js';
|
|
16
|
-
import { sortAccountsByPrimaryWallet } from './utils/sortAccountsByPrimaryWallet/sortAccountsByPrimaryWallet.js';
|
|
17
16
|
|
|
18
17
|
const useWalletEventListeners = ({ computeConnectedStateForWallets, handleLogOut, multiWallet, multiWalletWidgetState, primaryWallet, secondaryWallets, selectedWalletConnector, selectedWalletWithAction, setSelectedWalletConnector, setSelectedWalletWithAction, setMultiWalletWidgetState, user, setPrimaryWalletId, authMode, refreshConnectedWallet, }) => {
|
|
19
18
|
const [loadingNetwork, setLoadingNetwork] = useState(true);
|
|
@@ -21,7 +20,7 @@ const useWalletEventListeners = ({ computeConnectedStateForWallets, handleLogOut
|
|
|
21
20
|
useEffect(() => {
|
|
22
21
|
const fetchNetwork = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
23
22
|
try {
|
|
24
|
-
if (!primaryWallet)
|
|
23
|
+
if (!(primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector))
|
|
25
24
|
return;
|
|
26
25
|
const network = yield primaryWallet.connector.getNetwork();
|
|
27
26
|
setNetwork(network);
|
|
@@ -35,7 +34,7 @@ const useWalletEventListeners = ({ computeConnectedStateForWallets, handleLogOut
|
|
|
35
34
|
}
|
|
36
35
|
});
|
|
37
36
|
fetchNetwork();
|
|
38
|
-
}, [primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.
|
|
37
|
+
}, [primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector]);
|
|
39
38
|
useWalletConnectorEvent(primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector, 'disconnect', () => {
|
|
40
39
|
logger.debug('primary wallet disconnect');
|
|
41
40
|
handleLogOut();
|
|
@@ -61,11 +60,7 @@ const useWalletEventListeners = ({ computeConnectedStateForWallets, handleLogOut
|
|
|
61
60
|
// change the api here
|
|
62
61
|
if (!primaryWallet)
|
|
63
62
|
return;
|
|
64
|
-
|
|
65
|
-
// when multiWallet is disabled to ensure we find the primary address
|
|
66
|
-
const [newAddress] = multiWallet
|
|
67
|
-
? accounts
|
|
68
|
-
: sortAccountsByPrimaryWallet(accounts, primaryWallet);
|
|
63
|
+
const [newAddress] = accounts;
|
|
69
64
|
const newWallet = secondaryWallets.find((wallet) => isSameAddress(wallet.address, newAddress, wallet.chain));
|
|
70
65
|
if (authMode === 'connect-only') {
|
|
71
66
|
refreshConnectedWallet(primaryWallet.id, primaryWallet.connector);
|
package/src/lib/views/LoginView/sections/SocialSignInSection/MagicSocialSignIn/MagicSocialSignIn.cjs
CHANGED
|
@@ -16,7 +16,7 @@ require('../../../../../utils/constants/colors.cjs');
|
|
|
16
16
|
require('../../../../../shared/utils/classes/storage/localStorage.cjs');
|
|
17
17
|
require('viem');
|
|
18
18
|
require('../../../../../shared/consts/index.cjs');
|
|
19
|
-
|
|
19
|
+
require('../../../../../context/DynamicContext/DynamicContext.cjs');
|
|
20
20
|
require('@dynamic-labs/multi-wallet');
|
|
21
21
|
require('../../../../../components/ShadowDOM/ShadowDOM.cjs');
|
|
22
22
|
require('../../../../../context/ThemeContext/ThemeContext.cjs');
|
|
@@ -61,15 +61,13 @@ var SocialSignIn = require('../../../../../components/SocialSignIn/SocialSignIn.
|
|
|
61
61
|
var SocialRedirectContext = require('../../../../../context/SocialRedirectContext/SocialRedirectContext.cjs');
|
|
62
62
|
|
|
63
63
|
const MagicSocialSignIn = ({ defaultProvider, numOfItemsToDisplay, collapsedLayout, }) => {
|
|
64
|
-
const { socialProvidersFilter = (providers) => providers } = useInternalDynamicContext.useInternalDynamicContext();
|
|
65
64
|
const { socialProvider, setSocialProvider, socialWalletConnector, enabledSocialProviders, } = SocialRedirectContext.useSocialRedirectContext();
|
|
66
|
-
const socialProviders = socialProvidersFilter(enabledSocialProviders);
|
|
67
65
|
const { mutate: onClickProvider, isLoading } = useMutation.useMutation((provider) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
68
66
|
setSocialProvider(provider);
|
|
69
67
|
yield (socialWalletConnector === null || socialWalletConnector === void 0 ? void 0 : socialWalletConnector.endSession());
|
|
70
68
|
return socialWalletConnector === null || socialWalletConnector === void 0 ? void 0 : socialWalletConnector.connect(provider);
|
|
71
69
|
}));
|
|
72
|
-
return (jsxRuntime.jsx(SocialSignIn.SocialSignIn, { onSelectProvider: onClickProvider, providers:
|
|
70
|
+
return (jsxRuntime.jsx(SocialSignIn.SocialSignIn, { onSelectProvider: onClickProvider, providers: enabledSocialProviders, selectedProvider: socialProvider, isLoading: isLoading, testId: 'magic-social-sign-in', defaultProvider: defaultProvider, numOfItemsToDisplay: numOfItemsToDisplay, collapsedLayout: collapsedLayout }));
|
|
73
71
|
};
|
|
74
72
|
|
|
75
73
|
exports.MagicSocialSignIn = MagicSocialSignIn;
|
package/src/lib/views/LoginView/sections/SocialSignInSection/MagicSocialSignIn/MagicSocialSignIn.js
CHANGED
|
@@ -12,7 +12,7 @@ import '../../../../../utils/constants/colors.js';
|
|
|
12
12
|
import '../../../../../shared/utils/classes/storage/localStorage.js';
|
|
13
13
|
import 'viem';
|
|
14
14
|
import '../../../../../shared/consts/index.js';
|
|
15
|
-
import
|
|
15
|
+
import '../../../../../context/DynamicContext/DynamicContext.js';
|
|
16
16
|
import '@dynamic-labs/multi-wallet';
|
|
17
17
|
import '../../../../../components/ShadowDOM/ShadowDOM.js';
|
|
18
18
|
import '../../../../../context/ThemeContext/ThemeContext.js';
|
|
@@ -57,15 +57,13 @@ import { SocialSignIn } from '../../../../../components/SocialSignIn/SocialSignI
|
|
|
57
57
|
import { useSocialRedirectContext } from '../../../../../context/SocialRedirectContext/SocialRedirectContext.js';
|
|
58
58
|
|
|
59
59
|
const MagicSocialSignIn = ({ defaultProvider, numOfItemsToDisplay, collapsedLayout, }) => {
|
|
60
|
-
const { socialProvidersFilter = (providers) => providers } = useInternalDynamicContext();
|
|
61
60
|
const { socialProvider, setSocialProvider, socialWalletConnector, enabledSocialProviders, } = useSocialRedirectContext();
|
|
62
|
-
const socialProviders = socialProvidersFilter(enabledSocialProviders);
|
|
63
61
|
const { mutate: onClickProvider, isLoading } = useMutation((provider) => __awaiter(void 0, void 0, void 0, function* () {
|
|
64
62
|
setSocialProvider(provider);
|
|
65
63
|
yield (socialWalletConnector === null || socialWalletConnector === void 0 ? void 0 : socialWalletConnector.endSession());
|
|
66
64
|
return socialWalletConnector === null || socialWalletConnector === void 0 ? void 0 : socialWalletConnector.connect(provider);
|
|
67
65
|
}));
|
|
68
|
-
return (jsx(SocialSignIn, { onSelectProvider: onClickProvider, providers:
|
|
66
|
+
return (jsx(SocialSignIn, { onSelectProvider: onClickProvider, providers: enabledSocialProviders, selectedProvider: socialProvider, isLoading: isLoading, testId: 'magic-social-sign-in', defaultProvider: defaultProvider, numOfItemsToDisplay: numOfItemsToDisplay, collapsedLayout: collapsedLayout }));
|
|
69
67
|
};
|
|
70
68
|
|
|
71
69
|
export { MagicSocialSignIn };
|
|
@@ -6,6 +6,7 @@ var React = require('react');
|
|
|
6
6
|
var reactI18next = require('react-i18next');
|
|
7
7
|
var sdkApi = require('@dynamic-labs/sdk-api');
|
|
8
8
|
var useInternalDynamicContext = require('../../context/DynamicContext/useInternalDynamicContext.cjs');
|
|
9
|
+
var SocialRedirectContext = require('../../context/SocialRedirectContext/SocialRedirectContext.cjs');
|
|
9
10
|
require('../../shared/logger.cjs');
|
|
10
11
|
require('@dynamic-labs/iconic');
|
|
11
12
|
require('@dynamic-labs/wallet-connector-core');
|
|
@@ -24,7 +25,9 @@ var index = require('../../utils/functions/getEnabledProviders/index.cjs');
|
|
|
24
25
|
/* eslint-disable multiline-comment-style */
|
|
25
26
|
const NUMBER_OF_WALLETS = 3;
|
|
26
27
|
const useLoginView = () => {
|
|
28
|
+
var _a, _b, _c, _d;
|
|
27
29
|
const { projectSettings, authorizationViewDisplayOrder, loginWithEmail, wallets, walletsFilter, } = useInternalDynamicContext.useInternalDynamicContext();
|
|
30
|
+
const { enabledSocialProviders } = SocialRedirectContext.useSocialRedirectContext();
|
|
28
31
|
/** Takes from wallets only those that can be selected in the wallet list by the user.
|
|
29
32
|
* Should filter out embedded wallets
|
|
30
33
|
* WHY: when we decide whether to show wallets or not, we need to know how many wallets
|
|
@@ -55,46 +58,51 @@ const useLoginView = () => {
|
|
|
55
58
|
* build email and social view sections from project settings design.modal props - backwards compatibility
|
|
56
59
|
* @returns SdkViewSection[]
|
|
57
60
|
*/
|
|
58
|
-
const getEmailViewSectionDefinition = () => {
|
|
59
|
-
var _a, _b
|
|
61
|
+
const getEmailViewSectionDefinition = React.useCallback(() => {
|
|
62
|
+
var _a, _b;
|
|
60
63
|
const loginViewSections = [
|
|
61
64
|
{
|
|
62
65
|
type: sdkApi.SdkViewSectionType.Email,
|
|
63
66
|
},
|
|
64
67
|
];
|
|
65
|
-
const enabledSocialProviders = (_b = (_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.socialSignIn) === null || _a === void 0 ? void 0 : _a.providers) === null || _b === void 0 ? void 0 : _b.filter((provider) => provider.enabled);
|
|
66
68
|
if (enabledSocialProviders === null || enabledSocialProviders === void 0 ? void 0 : enabledSocialProviders.length) {
|
|
67
|
-
|
|
69
|
+
const socialSection = {
|
|
68
70
|
numOfItemsToDisplay: 5,
|
|
69
71
|
type: sdkApi.SdkViewSectionType.Social,
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
+
};
|
|
73
|
+
loginViewSections.push(socialSection);
|
|
74
|
+
if ((_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.design.modal) === null || _a === void 0 ? void 0 : _a.splitEmailAndSocial) {
|
|
72
75
|
loginViewSections.splice(1, 0, {
|
|
73
76
|
label: t('dyn_login.separators.default'),
|
|
74
77
|
type: sdkApi.SdkViewSectionType.Separator,
|
|
75
78
|
});
|
|
76
|
-
|
|
77
|
-
|
|
79
|
+
// eslint-disable-next-line prefer-destructuring
|
|
80
|
+
socialSection.defaultItem = enabledSocialProviders[0];
|
|
78
81
|
}
|
|
79
82
|
}
|
|
80
|
-
if ((
|
|
83
|
+
if ((_b = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.design.modal) === null || _b === void 0 ? void 0 : _b.socialAboveEmail) {
|
|
81
84
|
loginViewSections.reverse();
|
|
82
85
|
}
|
|
83
86
|
return loginViewSections;
|
|
84
|
-
}
|
|
87
|
+
}, [
|
|
88
|
+
enabledSocialProviders,
|
|
89
|
+
(_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.design.modal) === null || _a === void 0 ? void 0 : _a.socialAboveEmail,
|
|
90
|
+
(_b = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.design.modal) === null || _b === void 0 ? void 0 : _b.splitEmailAndSocial,
|
|
91
|
+
t,
|
|
92
|
+
]);
|
|
85
93
|
// TODO: https://linear.app/dynamic-labs/issue/GVTY-212/rethink-or-implement-toolkit-template-for-email-wallet-order
|
|
86
94
|
/**
|
|
87
95
|
* remove wallet view section from projectSettings?.sdk?.views if no wallet defined
|
|
88
96
|
* @param sections
|
|
89
97
|
* @returns
|
|
90
98
|
*/
|
|
91
|
-
const filterLoginViewSections = (sections) => {
|
|
99
|
+
const filterLoginViewSections = React.useCallback((sections) => {
|
|
92
100
|
if (selectableWallets === null || selectableWallets === void 0 ? void 0 : selectableWallets.length) {
|
|
93
101
|
return sections;
|
|
94
102
|
}
|
|
95
103
|
return sections.filter((section) => section.type !== 'wallet');
|
|
96
|
-
};
|
|
97
|
-
const addSeparator = (index
|
|
104
|
+
}, [selectableWallets === null || selectableWallets === void 0 ? void 0 : selectableWallets.length]);
|
|
105
|
+
const addSeparator = React.useCallback((index) => {
|
|
98
106
|
// if not the first index, no separator is needed
|
|
99
107
|
// if the first index but does not have wallets or providers,
|
|
100
108
|
// it'll show only one view section - no separator is needed
|
|
@@ -107,12 +115,12 @@ const useLoginView = () => {
|
|
|
107
115
|
type: sdkApi.SdkViewSectionType.Separator,
|
|
108
116
|
},
|
|
109
117
|
];
|
|
110
|
-
};
|
|
118
|
+
}, [hasEnabledProviders, selectableWallets === null || selectableWallets === void 0 ? void 0 : selectableWallets.length, t]);
|
|
111
119
|
/**
|
|
112
120
|
* build login view sections array from project settings design.modal props - backwards compatibility
|
|
113
121
|
* @returns SdkViewSection[]
|
|
114
122
|
*/
|
|
115
|
-
const buildLoginSections = () => {
|
|
123
|
+
const buildLoginSections = React.useCallback(() => {
|
|
116
124
|
let loginViewSections = [];
|
|
117
125
|
authorizationViewDisplayOrder === null || authorizationViewDisplayOrder === void 0 ? void 0 : authorizationViewDisplayOrder.forEach((loginItem, index) => {
|
|
118
126
|
var _a, _b;
|
|
@@ -139,7 +147,14 @@ const useLoginView = () => {
|
|
|
139
147
|
}
|
|
140
148
|
});
|
|
141
149
|
return loginViewSections;
|
|
142
|
-
}
|
|
150
|
+
}, [
|
|
151
|
+
addSeparator,
|
|
152
|
+
authorizationViewDisplayOrder,
|
|
153
|
+
getEmailViewSectionDefinition,
|
|
154
|
+
(_d = (_c = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.design) === null || _c === void 0 ? void 0 : _c.modal) === null || _d === void 0 ? void 0 : _d.showWalletsButton,
|
|
155
|
+
projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.providers,
|
|
156
|
+
selectableWallets === null || selectableWallets === void 0 ? void 0 : selectableWallets.length,
|
|
157
|
+
]);
|
|
143
158
|
/**
|
|
144
159
|
* returns the login view sections to be displayed in order from projectSettings?.sdk?.views
|
|
145
160
|
* and has backwards compatibility with project settings design.modal props
|
|
@@ -156,7 +171,6 @@ const useLoginView = () => {
|
|
|
156
171
|
return buildLoginSections();
|
|
157
172
|
}, [
|
|
158
173
|
projectSettings,
|
|
159
|
-
authorizationViewDisplayOrder,
|
|
160
174
|
getEmailViewSectionDefinition,
|
|
161
175
|
filterLoginViewSections,
|
|
162
176
|
buildLoginSections,
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { useMemo } from 'react';
|
|
1
|
+
import { useMemo, useCallback } from 'react';
|
|
2
2
|
import { useTranslation } from 'react-i18next';
|
|
3
3
|
import { SdkViewType, SdkViewSectionType } from '@dynamic-labs/sdk-api';
|
|
4
4
|
import { useInternalDynamicContext } from '../../context/DynamicContext/useInternalDynamicContext.js';
|
|
5
|
+
import { useSocialRedirectContext } from '../../context/SocialRedirectContext/SocialRedirectContext.js';
|
|
5
6
|
import '../../shared/logger.js';
|
|
6
7
|
import '@dynamic-labs/iconic';
|
|
7
8
|
import '@dynamic-labs/wallet-connector-core';
|
|
@@ -20,7 +21,9 @@ import { getEnabledProviders } from '../../utils/functions/getEnabledProviders/i
|
|
|
20
21
|
/* eslint-disable multiline-comment-style */
|
|
21
22
|
const NUMBER_OF_WALLETS = 3;
|
|
22
23
|
const useLoginView = () => {
|
|
24
|
+
var _a, _b, _c, _d;
|
|
23
25
|
const { projectSettings, authorizationViewDisplayOrder, loginWithEmail, wallets, walletsFilter, } = useInternalDynamicContext();
|
|
26
|
+
const { enabledSocialProviders } = useSocialRedirectContext();
|
|
24
27
|
/** Takes from wallets only those that can be selected in the wallet list by the user.
|
|
25
28
|
* Should filter out embedded wallets
|
|
26
29
|
* WHY: when we decide whether to show wallets or not, we need to know how many wallets
|
|
@@ -51,46 +54,51 @@ const useLoginView = () => {
|
|
|
51
54
|
* build email and social view sections from project settings design.modal props - backwards compatibility
|
|
52
55
|
* @returns SdkViewSection[]
|
|
53
56
|
*/
|
|
54
|
-
const getEmailViewSectionDefinition = () => {
|
|
55
|
-
var _a, _b
|
|
57
|
+
const getEmailViewSectionDefinition = useCallback(() => {
|
|
58
|
+
var _a, _b;
|
|
56
59
|
const loginViewSections = [
|
|
57
60
|
{
|
|
58
61
|
type: SdkViewSectionType.Email,
|
|
59
62
|
},
|
|
60
63
|
];
|
|
61
|
-
const enabledSocialProviders = (_b = (_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.socialSignIn) === null || _a === void 0 ? void 0 : _a.providers) === null || _b === void 0 ? void 0 : _b.filter((provider) => provider.enabled);
|
|
62
64
|
if (enabledSocialProviders === null || enabledSocialProviders === void 0 ? void 0 : enabledSocialProviders.length) {
|
|
63
|
-
|
|
65
|
+
const socialSection = {
|
|
64
66
|
numOfItemsToDisplay: 5,
|
|
65
67
|
type: SdkViewSectionType.Social,
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
+
};
|
|
69
|
+
loginViewSections.push(socialSection);
|
|
70
|
+
if ((_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.design.modal) === null || _a === void 0 ? void 0 : _a.splitEmailAndSocial) {
|
|
68
71
|
loginViewSections.splice(1, 0, {
|
|
69
72
|
label: t('dyn_login.separators.default'),
|
|
70
73
|
type: SdkViewSectionType.Separator,
|
|
71
74
|
});
|
|
72
|
-
|
|
73
|
-
|
|
75
|
+
// eslint-disable-next-line prefer-destructuring
|
|
76
|
+
socialSection.defaultItem = enabledSocialProviders[0];
|
|
74
77
|
}
|
|
75
78
|
}
|
|
76
|
-
if ((
|
|
79
|
+
if ((_b = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.design.modal) === null || _b === void 0 ? void 0 : _b.socialAboveEmail) {
|
|
77
80
|
loginViewSections.reverse();
|
|
78
81
|
}
|
|
79
82
|
return loginViewSections;
|
|
80
|
-
}
|
|
83
|
+
}, [
|
|
84
|
+
enabledSocialProviders,
|
|
85
|
+
(_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.design.modal) === null || _a === void 0 ? void 0 : _a.socialAboveEmail,
|
|
86
|
+
(_b = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.design.modal) === null || _b === void 0 ? void 0 : _b.splitEmailAndSocial,
|
|
87
|
+
t,
|
|
88
|
+
]);
|
|
81
89
|
// TODO: https://linear.app/dynamic-labs/issue/GVTY-212/rethink-or-implement-toolkit-template-for-email-wallet-order
|
|
82
90
|
/**
|
|
83
91
|
* remove wallet view section from projectSettings?.sdk?.views if no wallet defined
|
|
84
92
|
* @param sections
|
|
85
93
|
* @returns
|
|
86
94
|
*/
|
|
87
|
-
const filterLoginViewSections = (sections) => {
|
|
95
|
+
const filterLoginViewSections = useCallback((sections) => {
|
|
88
96
|
if (selectableWallets === null || selectableWallets === void 0 ? void 0 : selectableWallets.length) {
|
|
89
97
|
return sections;
|
|
90
98
|
}
|
|
91
99
|
return sections.filter((section) => section.type !== 'wallet');
|
|
92
|
-
};
|
|
93
|
-
const addSeparator = (index
|
|
100
|
+
}, [selectableWallets === null || selectableWallets === void 0 ? void 0 : selectableWallets.length]);
|
|
101
|
+
const addSeparator = useCallback((index) => {
|
|
94
102
|
// if not the first index, no separator is needed
|
|
95
103
|
// if the first index but does not have wallets or providers,
|
|
96
104
|
// it'll show only one view section - no separator is needed
|
|
@@ -103,12 +111,12 @@ const useLoginView = () => {
|
|
|
103
111
|
type: SdkViewSectionType.Separator,
|
|
104
112
|
},
|
|
105
113
|
];
|
|
106
|
-
};
|
|
114
|
+
}, [hasEnabledProviders, selectableWallets === null || selectableWallets === void 0 ? void 0 : selectableWallets.length, t]);
|
|
107
115
|
/**
|
|
108
116
|
* build login view sections array from project settings design.modal props - backwards compatibility
|
|
109
117
|
* @returns SdkViewSection[]
|
|
110
118
|
*/
|
|
111
|
-
const buildLoginSections = () => {
|
|
119
|
+
const buildLoginSections = useCallback(() => {
|
|
112
120
|
let loginViewSections = [];
|
|
113
121
|
authorizationViewDisplayOrder === null || authorizationViewDisplayOrder === void 0 ? void 0 : authorizationViewDisplayOrder.forEach((loginItem, index) => {
|
|
114
122
|
var _a, _b;
|
|
@@ -135,7 +143,14 @@ const useLoginView = () => {
|
|
|
135
143
|
}
|
|
136
144
|
});
|
|
137
145
|
return loginViewSections;
|
|
138
|
-
}
|
|
146
|
+
}, [
|
|
147
|
+
addSeparator,
|
|
148
|
+
authorizationViewDisplayOrder,
|
|
149
|
+
getEmailViewSectionDefinition,
|
|
150
|
+
(_d = (_c = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.design) === null || _c === void 0 ? void 0 : _c.modal) === null || _d === void 0 ? void 0 : _d.showWalletsButton,
|
|
151
|
+
projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.providers,
|
|
152
|
+
selectableWallets === null || selectableWallets === void 0 ? void 0 : selectableWallets.length,
|
|
153
|
+
]);
|
|
139
154
|
/**
|
|
140
155
|
* returns the login view sections to be displayed in order from projectSettings?.sdk?.views
|
|
141
156
|
* and has backwards compatibility with project settings design.modal props
|
|
@@ -152,7 +167,6 @@ const useLoginView = () => {
|
|
|
152
167
|
return buildLoginSections();
|
|
153
168
|
}, [
|
|
154
169
|
projectSettings,
|
|
155
|
-
authorizationViewDisplayOrder,
|
|
156
170
|
getEmailViewSectionDefinition,
|
|
157
171
|
filterLoginViewSections,
|
|
158
172
|
buildLoginSections,
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './sortAccountsByPrimaryWallet';
|
package/src/lib/utils/hooks/useWalletEventListeners/utils/sortAccountsByPrimaryWallet/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { sortAccountsByPrimaryWallet } from './sortAccountsByPrimaryWallet';
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
|
|
6
|
-
|
|
7
|
-
const sortAccountsByPrimaryWallet = (accounts, primaryWallet) => [...accounts].sort((account) => walletConnectorCore.isSameAddress(account, primaryWallet.address, primaryWallet.chain) ? -1 : 1);
|
|
8
|
-
|
|
9
|
-
exports.sortAccountsByPrimaryWallet = sortAccountsByPrimaryWallet;
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { isSameAddress } from '@dynamic-labs/wallet-connector-core';
|
|
2
|
-
|
|
3
|
-
const sortAccountsByPrimaryWallet = (accounts, primaryWallet) => [...accounts].sort((account) => isSameAddress(account, primaryWallet.address, primaryWallet.chain) ? -1 : 1);
|
|
4
|
-
|
|
5
|
-
export { sortAccountsByPrimaryWallet };
|