@dynamic-labs/sdk-react-core 4.37.0 → 4.37.2
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 +17 -0
- package/package.cjs +3 -3
- package/package.js +3 -3
- package/package.json +13 -13
- package/src/lib/client/extension/deprecated/mfa/verifyTotpMfaDevice/verifyTotpMfaDevice.d.ts +1 -1
- package/src/lib/data/api/waas/index.d.ts +1 -0
- package/src/lib/data/api/waas/waas.cjs +37 -0
- package/src/lib/data/api/waas/waas.d.ts +2 -0
- package/src/lib/data/api/waas/waas.js +33 -0
- package/src/lib/utils/hooks/useDynamicWaas/useDynamicWaas.cjs +54 -19
- package/src/lib/utils/hooks/useDynamicWaas/useDynamicWaas.d.ts +7 -2
- package/src/lib/utils/hooks/useDynamicWaas/useDynamicWaas.js +54 -19
- package/src/lib/utils/hooks/useSocialAccounts/useSocialAccounts.cjs +5 -0
- package/src/lib/utils/hooks/useSocialAccounts/useSocialAccounts.d.ts +1 -0
- package/src/lib/utils/hooks/useSocialAccounts/useSocialAccounts.js +5 -0
- package/src/lib/utils/hooks/useWalletDelegation/useWalletDelegation.cjs +106 -34
- package/src/lib/utils/hooks/useWalletDelegation/useWalletDelegation.d.ts +4 -0
- package/src/lib/utils/hooks/useWalletDelegation/useWalletDelegation.js +106 -34
- package/src/lib/utils/hooks/useWalletOptions/useWalletOptions.d.ts +2 -2
- package/src/lib/views/WaasUpgradeView/WaasUpgradeView.cjs +7 -7
- package/src/lib/views/WaasUpgradeView/WaasUpgradeView.js +7 -7
- package/src/lib/views/WalletDelegation/WalletDelegationView/WalletDelegationView.cjs +51 -52
- package/src/lib/views/WalletDelegation/WalletDelegationView/WalletDelegationView.js +52 -53
- package/src/lib/views/WalletList/data.d.ts +1 -1
- package/src/lib/views/WalletUpgradeFlowView/WalletUpgradeFlowView.cjs +1 -1
- package/src/lib/views/WalletUpgradeFlowView/WalletUpgradeFlowView.js +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,21 @@
|
|
|
1
1
|
|
|
2
|
+
### [4.37.2](https://github.com/dynamic-labs/dynamic-auth/compare/v4.37.1...v4.37.2) (2025-10-13)
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
* add get all linked social accounts function ([#9676](https://github.com/dynamic-labs/dynamic-auth/issues/9676)) ([c637c3f](https://github.com/dynamic-labs/dynamic-auth/commit/c637c3f101ea9387584473e18ff728c17d000f73))
|
|
8
|
+
* add revoke delegation to connectors and hook ([#9628](https://github.com/dynamic-labs/dynamic-auth/issues/9628)) ([00a40e0](https://github.com/dynamic-labs/dynamic-auth/commit/00a40e0b2aa6137a97ccb3be7890326300582fcf))
|
|
9
|
+
* **react-native:** add methods to social module ([#9677](https://github.com/dynamic-labs/dynamic-auth/issues/9677)) ([e4ffc11](https://github.com/dynamic-labs/dynamic-auth/commit/e4ffc1139ddc49826da688857d20dfb3b0c77ad7))
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
### Bug Fixes
|
|
13
|
+
|
|
14
|
+
* duplicate wallet display for wallet upgrade ([#9684](https://github.com/dynamic-labs/dynamic-auth/issues/9684)) ([cf94223](https://github.com/dynamic-labs/dynamic-auth/commit/cf94223d91f74add454901b72f4bf7d81043bffc))
|
|
15
|
+
* fixes postbuild oom ([#9664](https://github.com/dynamic-labs/dynamic-auth/issues/9664)) ([7e56047](https://github.com/dynamic-labs/dynamic-auth/commit/7e5604721d708e375c642223cd2f615ab9191f70))
|
|
16
|
+
|
|
17
|
+
### [4.37.1](https://github.com/dynamic-labs/dynamic-auth/compare/v4.37.0...v4.37.1) (2025-10-08)
|
|
18
|
+
|
|
2
19
|
## [4.37.0](https://github.com/dynamic-labs/dynamic-auth/compare/v4.36.1...v4.37.0) (2025-10-08)
|
|
3
20
|
|
|
4
21
|
|
package/package.cjs
CHANGED
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
|
|
4
4
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
5
5
|
|
|
6
|
-
var version = "4.37.
|
|
6
|
+
var version = "4.37.2";
|
|
7
7
|
var dependencies = {
|
|
8
|
-
"@dynamic-labs/sdk-api-core": "0.0.
|
|
9
|
-
"@dynamic-labs-sdk/client": "0.1.0-alpha.
|
|
8
|
+
"@dynamic-labs/sdk-api-core": "0.0.805",
|
|
9
|
+
"@dynamic-labs-sdk/client": "0.1.0-alpha.19",
|
|
10
10
|
"@hcaptcha/react-hcaptcha": "1.4.4",
|
|
11
11
|
"@thumbmarkjs/thumbmarkjs": "0.16.0",
|
|
12
12
|
"country-list": "2.3.0",
|
package/package.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use client'
|
|
2
|
-
var version = "4.37.
|
|
2
|
+
var version = "4.37.2";
|
|
3
3
|
var dependencies = {
|
|
4
|
-
"@dynamic-labs/sdk-api-core": "0.0.
|
|
5
|
-
"@dynamic-labs-sdk/client": "0.1.0-alpha.
|
|
4
|
+
"@dynamic-labs/sdk-api-core": "0.0.805",
|
|
5
|
+
"@dynamic-labs-sdk/client": "0.1.0-alpha.19",
|
|
6
6
|
"@hcaptcha/react-hcaptcha": "1.4.4",
|
|
7
7
|
"@thumbmarkjs/thumbmarkjs": "0.16.0",
|
|
8
8
|
"country-list": "2.3.0",
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dynamic-labs/sdk-react-core",
|
|
3
|
-
"version": "4.37.
|
|
3
|
+
"version": "4.37.2",
|
|
4
4
|
"dependencies": {
|
|
5
|
-
"@dynamic-labs/sdk-api-core": "0.0.
|
|
6
|
-
"@dynamic-labs-sdk/client": "0.1.0-alpha.
|
|
5
|
+
"@dynamic-labs/sdk-api-core": "0.0.805",
|
|
6
|
+
"@dynamic-labs-sdk/client": "0.1.0-alpha.19",
|
|
7
7
|
"@hcaptcha/react-hcaptcha": "1.4.4",
|
|
8
8
|
"@thumbmarkjs/thumbmarkjs": "0.16.0",
|
|
9
9
|
"country-list": "2.3.0",
|
|
@@ -15,16 +15,16 @@
|
|
|
15
15
|
"yup": "0.32.11",
|
|
16
16
|
"react-international-phone": "4.5.0",
|
|
17
17
|
"bs58": "5.0.0",
|
|
18
|
-
"@dynamic-labs/assert-package-version": "4.37.
|
|
19
|
-
"@dynamic-labs/iconic": "4.37.
|
|
20
|
-
"@dynamic-labs/logger": "4.37.
|
|
21
|
-
"@dynamic-labs/multi-wallet": "4.37.
|
|
22
|
-
"@dynamic-labs/rpc-providers": "4.37.
|
|
23
|
-
"@dynamic-labs/store": "4.37.
|
|
24
|
-
"@dynamic-labs/types": "4.37.
|
|
25
|
-
"@dynamic-labs/utils": "4.37.
|
|
26
|
-
"@dynamic-labs/wallet-book": "4.37.
|
|
27
|
-
"@dynamic-labs/wallet-connector-core": "4.37.
|
|
18
|
+
"@dynamic-labs/assert-package-version": "4.37.2",
|
|
19
|
+
"@dynamic-labs/iconic": "4.37.2",
|
|
20
|
+
"@dynamic-labs/logger": "4.37.2",
|
|
21
|
+
"@dynamic-labs/multi-wallet": "4.37.2",
|
|
22
|
+
"@dynamic-labs/rpc-providers": "4.37.2",
|
|
23
|
+
"@dynamic-labs/store": "4.37.2",
|
|
24
|
+
"@dynamic-labs/types": "4.37.2",
|
|
25
|
+
"@dynamic-labs/utils": "4.37.2",
|
|
26
|
+
"@dynamic-labs/wallet-book": "4.37.2",
|
|
27
|
+
"@dynamic-labs/wallet-connector-core": "4.37.2",
|
|
28
28
|
"eventemitter3": "5.0.1"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './waas';
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
5
|
+
|
|
6
|
+
var _tslib = require('../../../../../_virtual/_tslib.cjs');
|
|
7
|
+
require('@dynamic-labs/iconic');
|
|
8
|
+
require('@dynamic-labs/wallet-connector-core');
|
|
9
|
+
require('react');
|
|
10
|
+
require('react/jsx-runtime');
|
|
11
|
+
require('../../../context/ViewContext/ViewContext.cjs');
|
|
12
|
+
var logger = require('../../../shared/logger.cjs');
|
|
13
|
+
require('@dynamic-labs/wallet-book');
|
|
14
|
+
require('@dynamic-labs/utils');
|
|
15
|
+
require('../../../utils/constants/colors.cjs');
|
|
16
|
+
require('../../../utils/constants/values.cjs');
|
|
17
|
+
require('@dynamic-labs/sdk-api-core');
|
|
18
|
+
require('../../../shared/consts/index.cjs');
|
|
19
|
+
var api = require('../api.cjs');
|
|
20
|
+
|
|
21
|
+
const updateWaasWalletSettings = (environmentId, walletId, settings) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
22
|
+
try {
|
|
23
|
+
yield api.sdkApi().updateWaasWalletSettings({
|
|
24
|
+
environmentId,
|
|
25
|
+
updateWaasWalletSettingsRequest: settings,
|
|
26
|
+
walletId,
|
|
27
|
+
}, {
|
|
28
|
+
credentials: 'omit',
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
logger.logger.error('Failed to update waas wallet settings', { error, walletId });
|
|
33
|
+
throw error;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
exports.updateWaasWalletSettings = updateWaasWalletSettings;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
import { __awaiter } from '../../../../../_virtual/_tslib.js';
|
|
3
|
+
import '@dynamic-labs/iconic';
|
|
4
|
+
import '@dynamic-labs/wallet-connector-core';
|
|
5
|
+
import 'react';
|
|
6
|
+
import 'react/jsx-runtime';
|
|
7
|
+
import '../../../context/ViewContext/ViewContext.js';
|
|
8
|
+
import { logger } from '../../../shared/logger.js';
|
|
9
|
+
import '@dynamic-labs/wallet-book';
|
|
10
|
+
import '@dynamic-labs/utils';
|
|
11
|
+
import '../../../utils/constants/colors.js';
|
|
12
|
+
import '../../../utils/constants/values.js';
|
|
13
|
+
import '@dynamic-labs/sdk-api-core';
|
|
14
|
+
import '../../../shared/consts/index.js';
|
|
15
|
+
import { sdkApi } from '../api.js';
|
|
16
|
+
|
|
17
|
+
const updateWaasWalletSettings = (environmentId, walletId, settings) => __awaiter(void 0, void 0, void 0, function* () {
|
|
18
|
+
try {
|
|
19
|
+
yield sdkApi().updateWaasWalletSettings({
|
|
20
|
+
environmentId,
|
|
21
|
+
updateWaasWalletSettingsRequest: settings,
|
|
22
|
+
walletId,
|
|
23
|
+
}, {
|
|
24
|
+
credentials: 'omit',
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
logger.error('Failed to update waas wallet settings', { error, walletId });
|
|
29
|
+
throw error;
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
export { updateWaasWalletSettings };
|
|
@@ -30,7 +30,8 @@ var dynamicContextProps = require('../../../store/state/dynamicContextProps/dyna
|
|
|
30
30
|
require('../../../store/state/primaryWalletId/primaryWalletId.cjs');
|
|
31
31
|
require('../../../locale/locale.cjs');
|
|
32
32
|
var wallets = require('../../../data/api/wallets/wallets.cjs');
|
|
33
|
-
var
|
|
33
|
+
var convertSdkUserToUserProfile = require('../../../client/extension/user/convertSdkUserToUserProfile/convertSdkUserToUserProfile.cjs');
|
|
34
|
+
var useUser = require('../../../client/extension/user/useUser/useUser.cjs');
|
|
34
35
|
var useProjectSettings = require('../../../client/extension/projectSettings/useProjectSettings/useProjectSettings.cjs');
|
|
35
36
|
var isCookieEnabled = require('../../../client/extension/functions/isCookieEnabled/isCookieEnabled.cjs');
|
|
36
37
|
var getMinAuthToken = require('../../../client/extension/functions/getMinAuthToken/getMinAuthToken.cjs');
|
|
@@ -136,7 +137,7 @@ const useDynamicWaas = () => {
|
|
|
136
137
|
var _a, _b, _c;
|
|
137
138
|
const { setShowAuthFlow, primaryWallet } = useInternalDynamicContext.useInternalDynamicContext();
|
|
138
139
|
const { addedWalletsIds, userWallets } = UserWalletsContext.useInternalUserWallets();
|
|
139
|
-
const user =
|
|
140
|
+
const user = useUser.useUser();
|
|
140
141
|
const apiBaseUrl = dynamicContextProps.useApiBaseUrl();
|
|
141
142
|
const projectSettings = useProjectSettings.useProjectSettings();
|
|
142
143
|
const environmentId = dynamicContextProps.useEnvironmentId();
|
|
@@ -249,7 +250,7 @@ const useDynamicWaas = () => {
|
|
|
249
250
|
isAuthenticated: true,
|
|
250
251
|
key: (_c = walletVerifiedCredential.walletName) !== null && _c !== void 0 ? _c : '',
|
|
251
252
|
});
|
|
252
|
-
dynamicEvents.dynamicEvents.emit('embeddedWalletCreated', wallet, walletVerifiedCredential, user);
|
|
253
|
+
dynamicEvents.dynamicEvents.emit('embeddedWalletCreated', wallet, walletVerifiedCredential, user ? convertSdkUserToUserProfile.convertSdkUserToUserProfile(user) : undefined);
|
|
253
254
|
}
|
|
254
255
|
catch (error) {
|
|
255
256
|
walletConnectorCore.logger.error(error);
|
|
@@ -278,6 +279,7 @@ const useDynamicWaas = () => {
|
|
|
278
279
|
return createdWalletAccounts;
|
|
279
280
|
}), [getWalletConnector, primaryChain, enabledChainNames, setShowAuthFlow]);
|
|
280
281
|
const needsAutoCreateWalletChains = React.useMemo(() => {
|
|
282
|
+
var _a;
|
|
281
283
|
if (!user ||
|
|
282
284
|
!dynamicWaasIsEnabled ||
|
|
283
285
|
!automaticEmbeddedWalletCreationEnabled) {
|
|
@@ -285,15 +287,15 @@ const useDynamicWaas = () => {
|
|
|
285
287
|
}
|
|
286
288
|
// check if user have any wallet (V1, V2, or V3/dynamicwaas) for this chain
|
|
287
289
|
const hasEmbeddedWalletForChain = (chain) => {
|
|
288
|
-
var _a;
|
|
289
|
-
return (_a = user === null || user === void 0 ? void 0 : user.verifiedCredentials.some((wallet) => wallet.chain &&
|
|
290
|
+
var _a, _b;
|
|
291
|
+
return (_b = (_a = user === null || user === void 0 ? void 0 : user.verifiedCredentials) === null || _a === void 0 ? void 0 : _a.some((wallet) => wallet.chain &&
|
|
290
292
|
compareChains.compareChains(wallet.chain, chain) &&
|
|
291
|
-
wallet.walletProvider === sdkApiCore.WalletProviderEnum.EmbeddedWallet)) !== null &&
|
|
293
|
+
wallet.walletProvider === sdkApiCore.WalletProviderEnum.EmbeddedWallet)) !== null && _b !== void 0 ? _b : false;
|
|
292
294
|
};
|
|
293
295
|
// For each enabled chain, if user does NOT have a V3 wallet and does NOT have a V1/V2 wallet, add to missing
|
|
294
296
|
const missingChains = enabledChainNames === null || enabledChainNames === void 0 ? void 0 : enabledChainNames.filter((chain) => !hasEmbeddedWalletForChain(chain));
|
|
295
297
|
// If user has an external wallet, only create if automaticEmbeddedWalletCreationForExternalEnabled is true
|
|
296
|
-
const hasExternalWallet = user === null || user === void 0 ? void 0 : user.verifiedCredentials.some((vc) => vc.format === sdkApiCore.JwtVerifiedCredentialFormatEnum.Blockchain &&
|
|
298
|
+
const hasExternalWallet = (_a = user === null || user === void 0 ? void 0 : user.verifiedCredentials) === null || _a === void 0 ? void 0 : _a.some((vc) => vc.format === sdkApiCore.JwtVerifiedCredentialFormatEnum.Blockchain &&
|
|
297
299
|
vc.walletProvider !== sdkApiCore.WalletProviderEnum.EmbeddedWallet);
|
|
298
300
|
const shouldCreateDynamicWaasWallet = hasExternalWallet
|
|
299
301
|
? automaticEmbeddedWalletCreationForExternalEnabled
|
|
@@ -357,34 +359,65 @@ const useDynamicWaas = () => {
|
|
|
357
359
|
: new utils.DynamicError('Upgrade failed, please try again.');
|
|
358
360
|
}
|
|
359
361
|
}), [environmentId, getWalletConnector, primaryWallet, refresh]);
|
|
360
|
-
const delegateKeyShares = React.useCallback((
|
|
361
|
-
const
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
362
|
+
const delegateKeyShares = React.useCallback((wallets) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
363
|
+
for (const wallet of wallets) {
|
|
364
|
+
const walletConnector = getWalletConnector(wallet.chainName);
|
|
365
|
+
if (!walletConnector)
|
|
366
|
+
continue;
|
|
367
|
+
yield walletConnector.delegateKeyShares({
|
|
368
|
+
accountAddress: wallet.accountAddress,
|
|
369
|
+
});
|
|
370
|
+
}
|
|
371
|
+
yield refresh();
|
|
372
|
+
}), [getWalletConnector, refresh]);
|
|
373
|
+
const revokeDelegation = React.useCallback((wallets) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
374
|
+
for (const wallet of wallets) {
|
|
375
|
+
const walletConnector = getWalletConnector(wallet.chainName);
|
|
376
|
+
if (!walletConnector)
|
|
377
|
+
continue;
|
|
378
|
+
if (wallet.status !== 'delegated') {
|
|
379
|
+
walletConnectorCore.logger.warn('Wallet is not delegated, skipping revoke');
|
|
380
|
+
continue;
|
|
381
|
+
}
|
|
382
|
+
try {
|
|
383
|
+
yield walletConnector.revokeDelegation({
|
|
384
|
+
accountAddress: wallet.accountAddress,
|
|
385
|
+
});
|
|
386
|
+
}
|
|
387
|
+
catch (error) {
|
|
388
|
+
walletConnectorCore.logger.error('Failed to revoke delegation:', {
|
|
389
|
+
error,
|
|
390
|
+
wallet,
|
|
391
|
+
});
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
yield refresh();
|
|
395
|
+
}), [getWalletConnector, refresh]);
|
|
368
396
|
const getWaasWallets = React.useCallback(() => userWallets.filter((w) => w.key === 'dynamicwaas'), [userWallets]);
|
|
369
397
|
const processSignOnWalletSettings = React.useCallback(() => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
370
|
-
var
|
|
398
|
+
var _f;
|
|
371
399
|
if (!(user === null || user === void 0 ? void 0 : user.verifiedCredentials)) {
|
|
372
400
|
return;
|
|
373
401
|
}
|
|
374
402
|
const waasWallets = user.verifiedCredentials.filter((vc) => { var _a; return vc.walletName === 'dynamicwaas' && ((_a = vc.walletProperties) === null || _a === void 0 ? void 0 : _a.settings); });
|
|
375
403
|
for (const wallet of waasWallets) {
|
|
376
404
|
try {
|
|
377
|
-
const settings = (
|
|
405
|
+
const settings = (_f = wallet.walletProperties) === null || _f === void 0 ? void 0 : _f.settings;
|
|
378
406
|
const { address, chain } = wallet;
|
|
379
407
|
if (!settings || !address || !chain) {
|
|
380
408
|
continue;
|
|
381
409
|
}
|
|
382
|
-
const { shouldRefreshOnNextSignOn, reshareOnNextSignOn } = settings;
|
|
410
|
+
const { shouldRefreshOnNextSignOn, reshareOnNextSignOn, revokeOnNextSignOn, } = settings;
|
|
383
411
|
const chainName = values.VerifiedCredentialNameToChainEnum[chain];
|
|
384
412
|
const walletConnector = getWalletConnector(chainName);
|
|
385
413
|
if (!walletConnector) {
|
|
386
414
|
continue;
|
|
387
415
|
}
|
|
416
|
+
if (revokeOnNextSignOn) {
|
|
417
|
+
yield walletConnector.revokeDelegation({
|
|
418
|
+
accountAddress: address,
|
|
419
|
+
});
|
|
420
|
+
}
|
|
388
421
|
if (shouldRefreshOnNextSignOn) {
|
|
389
422
|
yield walletConnector.refreshWalletAccountShares({
|
|
390
423
|
accountAddress: address,
|
|
@@ -415,7 +448,8 @@ const useDynamicWaas = () => {
|
|
|
415
448
|
return vc.walletName === 'dynamicwaas' &&
|
|
416
449
|
((_a = vc.walletProperties) === null || _a === void 0 ? void 0 : _a.settings) &&
|
|
417
450
|
(vc.walletProperties.settings.shouldRefreshOnNextSignOn ||
|
|
418
|
-
vc.walletProperties.settings.reshareOnNextSignOn
|
|
451
|
+
vc.walletProperties.settings.reshareOnNextSignOn ||
|
|
452
|
+
vc.walletProperties.settings.revokeOnNextSignOn);
|
|
419
453
|
});
|
|
420
454
|
}, [user, dynamicWaasIsEnabled]);
|
|
421
455
|
return {
|
|
@@ -428,6 +462,7 @@ const useDynamicWaas = () => {
|
|
|
428
462
|
needsAutoCreateWalletChains,
|
|
429
463
|
needsSettingsProcessing,
|
|
430
464
|
processSignOnWalletSettings,
|
|
465
|
+
revokeDelegation,
|
|
431
466
|
upgradeToDynamicWaas,
|
|
432
467
|
};
|
|
433
468
|
};
|
|
@@ -19,10 +19,10 @@ export declare const useDynamicWaas: () => {
|
|
|
19
19
|
publicKeyHex: string;
|
|
20
20
|
rawPublicKey: string | Uint8Array | undefined;
|
|
21
21
|
} | undefined)[] | undefined>;
|
|
22
|
-
delegateKeyShares: (
|
|
22
|
+
delegateKeyShares: (wallets: {
|
|
23
23
|
chainName: ChainEnum;
|
|
24
24
|
accountAddress: string;
|
|
25
|
-
}) => Promise<void>;
|
|
25
|
+
}[]) => Promise<void>;
|
|
26
26
|
dynamicWaasIsEnabled: boolean;
|
|
27
27
|
getWaasWallets: () => Wallet<WalletConnectorCore.WalletConnector>[];
|
|
28
28
|
getWalletConnector: (chainName: string) => IDynamicWaasConnector | undefined;
|
|
@@ -33,6 +33,11 @@ export declare const useDynamicWaas: () => {
|
|
|
33
33
|
needsAutoCreateWalletChains: ChainEnum[];
|
|
34
34
|
needsSettingsProcessing: boolean;
|
|
35
35
|
processSignOnWalletSettings: () => Promise<void>;
|
|
36
|
+
revokeDelegation: (wallets: {
|
|
37
|
+
chainName: ChainEnum;
|
|
38
|
+
accountAddress: string;
|
|
39
|
+
status: 'delegated' | 'denied';
|
|
40
|
+
}[]) => Promise<void>;
|
|
36
41
|
upgradeToDynamicWaas: ({ privateKey, wallet, }: {
|
|
37
42
|
privateKey: string;
|
|
38
43
|
wallet: Wallet<WalletConnectorCore.WalletConnector>;
|
|
@@ -26,7 +26,8 @@ import { useApiBaseUrl, useEnvironmentId } from '../../../store/state/dynamicCon
|
|
|
26
26
|
import '../../../store/state/primaryWalletId/primaryWalletId.js';
|
|
27
27
|
import '../../../locale/locale.js';
|
|
28
28
|
import { softDeleteEmbeddedWallet, restoreEmbeddedWallet } from '../../../data/api/wallets/wallets.js';
|
|
29
|
-
import {
|
|
29
|
+
import { convertSdkUserToUserProfile } from '../../../client/extension/user/convertSdkUserToUserProfile/convertSdkUserToUserProfile.js';
|
|
30
|
+
import { useUser } from '../../../client/extension/user/useUser/useUser.js';
|
|
30
31
|
import { useProjectSettings } from '../../../client/extension/projectSettings/useProjectSettings/useProjectSettings.js';
|
|
31
32
|
import { isCookieEnabled } from '../../../client/extension/functions/isCookieEnabled/isCookieEnabled.js';
|
|
32
33
|
import { getMinAuthToken } from '../../../client/extension/functions/getMinAuthToken/getMinAuthToken.js';
|
|
@@ -132,7 +133,7 @@ const useDynamicWaas = () => {
|
|
|
132
133
|
var _a, _b, _c;
|
|
133
134
|
const { setShowAuthFlow, primaryWallet } = useInternalDynamicContext();
|
|
134
135
|
const { addedWalletsIds, userWallets } = useInternalUserWallets();
|
|
135
|
-
const user =
|
|
136
|
+
const user = useUser();
|
|
136
137
|
const apiBaseUrl = useApiBaseUrl();
|
|
137
138
|
const projectSettings = useProjectSettings();
|
|
138
139
|
const environmentId = useEnvironmentId();
|
|
@@ -245,7 +246,7 @@ const useDynamicWaas = () => {
|
|
|
245
246
|
isAuthenticated: true,
|
|
246
247
|
key: (_c = walletVerifiedCredential.walletName) !== null && _c !== void 0 ? _c : '',
|
|
247
248
|
});
|
|
248
|
-
dynamicEvents.emit('embeddedWalletCreated', wallet, walletVerifiedCredential, user);
|
|
249
|
+
dynamicEvents.emit('embeddedWalletCreated', wallet, walletVerifiedCredential, user ? convertSdkUserToUserProfile(user) : undefined);
|
|
249
250
|
}
|
|
250
251
|
catch (error) {
|
|
251
252
|
logger.error(error);
|
|
@@ -274,6 +275,7 @@ const useDynamicWaas = () => {
|
|
|
274
275
|
return createdWalletAccounts;
|
|
275
276
|
}), [getWalletConnector, primaryChain, enabledChainNames, setShowAuthFlow]);
|
|
276
277
|
const needsAutoCreateWalletChains = useMemo(() => {
|
|
278
|
+
var _a;
|
|
277
279
|
if (!user ||
|
|
278
280
|
!dynamicWaasIsEnabled ||
|
|
279
281
|
!automaticEmbeddedWalletCreationEnabled) {
|
|
@@ -281,15 +283,15 @@ const useDynamicWaas = () => {
|
|
|
281
283
|
}
|
|
282
284
|
// check if user have any wallet (V1, V2, or V3/dynamicwaas) for this chain
|
|
283
285
|
const hasEmbeddedWalletForChain = (chain) => {
|
|
284
|
-
var _a;
|
|
285
|
-
return (_a = user === null || user === void 0 ? void 0 : user.verifiedCredentials.some((wallet) => wallet.chain &&
|
|
286
|
+
var _a, _b;
|
|
287
|
+
return (_b = (_a = user === null || user === void 0 ? void 0 : user.verifiedCredentials) === null || _a === void 0 ? void 0 : _a.some((wallet) => wallet.chain &&
|
|
286
288
|
compareChains(wallet.chain, chain) &&
|
|
287
|
-
wallet.walletProvider === WalletProviderEnum.EmbeddedWallet)) !== null &&
|
|
289
|
+
wallet.walletProvider === WalletProviderEnum.EmbeddedWallet)) !== null && _b !== void 0 ? _b : false;
|
|
288
290
|
};
|
|
289
291
|
// For each enabled chain, if user does NOT have a V3 wallet and does NOT have a V1/V2 wallet, add to missing
|
|
290
292
|
const missingChains = enabledChainNames === null || enabledChainNames === void 0 ? void 0 : enabledChainNames.filter((chain) => !hasEmbeddedWalletForChain(chain));
|
|
291
293
|
// If user has an external wallet, only create if automaticEmbeddedWalletCreationForExternalEnabled is true
|
|
292
|
-
const hasExternalWallet = user === null || user === void 0 ? void 0 : user.verifiedCredentials.some((vc) => vc.format === JwtVerifiedCredentialFormatEnum.Blockchain &&
|
|
294
|
+
const hasExternalWallet = (_a = user === null || user === void 0 ? void 0 : user.verifiedCredentials) === null || _a === void 0 ? void 0 : _a.some((vc) => vc.format === JwtVerifiedCredentialFormatEnum.Blockchain &&
|
|
293
295
|
vc.walletProvider !== WalletProviderEnum.EmbeddedWallet);
|
|
294
296
|
const shouldCreateDynamicWaasWallet = hasExternalWallet
|
|
295
297
|
? automaticEmbeddedWalletCreationForExternalEnabled
|
|
@@ -353,34 +355,65 @@ const useDynamicWaas = () => {
|
|
|
353
355
|
: new DynamicError('Upgrade failed, please try again.');
|
|
354
356
|
}
|
|
355
357
|
}), [environmentId, getWalletConnector, primaryWallet, refresh]);
|
|
356
|
-
const delegateKeyShares = useCallback((
|
|
357
|
-
const
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
358
|
+
const delegateKeyShares = useCallback((wallets) => __awaiter(void 0, void 0, void 0, function* () {
|
|
359
|
+
for (const wallet of wallets) {
|
|
360
|
+
const walletConnector = getWalletConnector(wallet.chainName);
|
|
361
|
+
if (!walletConnector)
|
|
362
|
+
continue;
|
|
363
|
+
yield walletConnector.delegateKeyShares({
|
|
364
|
+
accountAddress: wallet.accountAddress,
|
|
365
|
+
});
|
|
366
|
+
}
|
|
367
|
+
yield refresh();
|
|
368
|
+
}), [getWalletConnector, refresh]);
|
|
369
|
+
const revokeDelegation = useCallback((wallets) => __awaiter(void 0, void 0, void 0, function* () {
|
|
370
|
+
for (const wallet of wallets) {
|
|
371
|
+
const walletConnector = getWalletConnector(wallet.chainName);
|
|
372
|
+
if (!walletConnector)
|
|
373
|
+
continue;
|
|
374
|
+
if (wallet.status !== 'delegated') {
|
|
375
|
+
logger.warn('Wallet is not delegated, skipping revoke');
|
|
376
|
+
continue;
|
|
377
|
+
}
|
|
378
|
+
try {
|
|
379
|
+
yield walletConnector.revokeDelegation({
|
|
380
|
+
accountAddress: wallet.accountAddress,
|
|
381
|
+
});
|
|
382
|
+
}
|
|
383
|
+
catch (error) {
|
|
384
|
+
logger.error('Failed to revoke delegation:', {
|
|
385
|
+
error,
|
|
386
|
+
wallet,
|
|
387
|
+
});
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
yield refresh();
|
|
391
|
+
}), [getWalletConnector, refresh]);
|
|
364
392
|
const getWaasWallets = useCallback(() => userWallets.filter((w) => w.key === 'dynamicwaas'), [userWallets]);
|
|
365
393
|
const processSignOnWalletSettings = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
366
|
-
var
|
|
394
|
+
var _f;
|
|
367
395
|
if (!(user === null || user === void 0 ? void 0 : user.verifiedCredentials)) {
|
|
368
396
|
return;
|
|
369
397
|
}
|
|
370
398
|
const waasWallets = user.verifiedCredentials.filter((vc) => { var _a; return vc.walletName === 'dynamicwaas' && ((_a = vc.walletProperties) === null || _a === void 0 ? void 0 : _a.settings); });
|
|
371
399
|
for (const wallet of waasWallets) {
|
|
372
400
|
try {
|
|
373
|
-
const settings = (
|
|
401
|
+
const settings = (_f = wallet.walletProperties) === null || _f === void 0 ? void 0 : _f.settings;
|
|
374
402
|
const { address, chain } = wallet;
|
|
375
403
|
if (!settings || !address || !chain) {
|
|
376
404
|
continue;
|
|
377
405
|
}
|
|
378
|
-
const { shouldRefreshOnNextSignOn, reshareOnNextSignOn } = settings;
|
|
406
|
+
const { shouldRefreshOnNextSignOn, reshareOnNextSignOn, revokeOnNextSignOn, } = settings;
|
|
379
407
|
const chainName = VerifiedCredentialNameToChainEnum[chain];
|
|
380
408
|
const walletConnector = getWalletConnector(chainName);
|
|
381
409
|
if (!walletConnector) {
|
|
382
410
|
continue;
|
|
383
411
|
}
|
|
412
|
+
if (revokeOnNextSignOn) {
|
|
413
|
+
yield walletConnector.revokeDelegation({
|
|
414
|
+
accountAddress: address,
|
|
415
|
+
});
|
|
416
|
+
}
|
|
384
417
|
if (shouldRefreshOnNextSignOn) {
|
|
385
418
|
yield walletConnector.refreshWalletAccountShares({
|
|
386
419
|
accountAddress: address,
|
|
@@ -411,7 +444,8 @@ const useDynamicWaas = () => {
|
|
|
411
444
|
return vc.walletName === 'dynamicwaas' &&
|
|
412
445
|
((_a = vc.walletProperties) === null || _a === void 0 ? void 0 : _a.settings) &&
|
|
413
446
|
(vc.walletProperties.settings.shouldRefreshOnNextSignOn ||
|
|
414
|
-
vc.walletProperties.settings.reshareOnNextSignOn
|
|
447
|
+
vc.walletProperties.settings.reshareOnNextSignOn ||
|
|
448
|
+
vc.walletProperties.settings.revokeOnNextSignOn);
|
|
415
449
|
});
|
|
416
450
|
}, [user, dynamicWaasIsEnabled]);
|
|
417
451
|
return {
|
|
@@ -424,6 +458,7 @@ const useDynamicWaas = () => {
|
|
|
424
458
|
needsAutoCreateWalletChains,
|
|
425
459
|
needsSettingsProcessing,
|
|
426
460
|
processSignOnWalletSettings,
|
|
461
|
+
revokeDelegation,
|
|
427
462
|
upgradeToDynamicWaas,
|
|
428
463
|
};
|
|
429
464
|
};
|
|
@@ -236,6 +236,9 @@ const useSocialAccounts = () => {
|
|
|
236
236
|
const verifiedCredentials = (_a = verifiedOAuthCredentialsMap[provider]) !== null && _a !== void 0 ? _a : [];
|
|
237
237
|
return verifiedCredentials.map((credential) => getAccountInformation(credential));
|
|
238
238
|
}, [verifiedOAuthCredentialsMap]);
|
|
239
|
+
const getAllLinkedAccounts = React.useCallback(() => Object.values(verifiedOAuthCredentialsMap)
|
|
240
|
+
.flat()
|
|
241
|
+
.map((credential) => getAccountInformation(credential)), [verifiedOAuthCredentialsMap]);
|
|
239
242
|
const checkValidOAuthSignIn = React.useCallback((provider) => {
|
|
240
243
|
var _a;
|
|
241
244
|
const oauthProvider = getEnabledSocialSignInProvidersAsProviderEnum.getEnabledSocialSignInProvidersAsProviderEnum((_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.socialSignIn) === null || _a === void 0 ? void 0 : _a.providers).find((socialProvider) => socialProvider === provider);
|
|
@@ -261,6 +264,7 @@ const useSocialAccounts = () => {
|
|
|
261
264
|
}), [checkValidOAuthSignIn, connectSocialAccount]);
|
|
262
265
|
return React.useMemo(() => ({
|
|
263
266
|
error,
|
|
267
|
+
getAllLinkedAccounts,
|
|
264
268
|
getLinkedAccountInformation,
|
|
265
269
|
getLinkedAccounts,
|
|
266
270
|
isLinked,
|
|
@@ -277,6 +281,7 @@ const useSocialAccounts = () => {
|
|
|
277
281
|
linkSocialAccount,
|
|
278
282
|
signInWithSocialAccount,
|
|
279
283
|
unlinkSocialAccount,
|
|
284
|
+
getAllLinkedAccounts,
|
|
280
285
|
]);
|
|
281
286
|
};
|
|
282
287
|
|
|
@@ -19,6 +19,7 @@ type ConnectSocialProps = {
|
|
|
19
19
|
};
|
|
20
20
|
export declare const useSocialAccounts: () => {
|
|
21
21
|
readonly error: import("@dynamic-labs/types").SocialOAuthError | undefined;
|
|
22
|
+
readonly getAllLinkedAccounts: () => SocialAccountInformation[];
|
|
22
23
|
readonly getLinkedAccountInformation: (provider: ProviderEnum, verifiedCredentialId?: string) => SocialAccountInformation | undefined;
|
|
23
24
|
readonly getLinkedAccounts: (provider: ProviderEnum) => SocialAccountInformation[];
|
|
24
25
|
readonly isLinked: (provider: ProviderEnum) => boolean;
|
|
@@ -232,6 +232,9 @@ const useSocialAccounts = () => {
|
|
|
232
232
|
const verifiedCredentials = (_a = verifiedOAuthCredentialsMap[provider]) !== null && _a !== void 0 ? _a : [];
|
|
233
233
|
return verifiedCredentials.map((credential) => getAccountInformation(credential));
|
|
234
234
|
}, [verifiedOAuthCredentialsMap]);
|
|
235
|
+
const getAllLinkedAccounts = useCallback(() => Object.values(verifiedOAuthCredentialsMap)
|
|
236
|
+
.flat()
|
|
237
|
+
.map((credential) => getAccountInformation(credential)), [verifiedOAuthCredentialsMap]);
|
|
235
238
|
const checkValidOAuthSignIn = useCallback((provider) => {
|
|
236
239
|
var _a;
|
|
237
240
|
const oauthProvider = getEnabledSocialSignInProvidersAsProviderEnum((_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.socialSignIn) === null || _a === void 0 ? void 0 : _a.providers).find((socialProvider) => socialProvider === provider);
|
|
@@ -257,6 +260,7 @@ const useSocialAccounts = () => {
|
|
|
257
260
|
}), [checkValidOAuthSignIn, connectSocialAccount]);
|
|
258
261
|
return useMemo(() => ({
|
|
259
262
|
error,
|
|
263
|
+
getAllLinkedAccounts,
|
|
260
264
|
getLinkedAccountInformation,
|
|
261
265
|
getLinkedAccounts,
|
|
262
266
|
isLinked,
|
|
@@ -273,6 +277,7 @@ const useSocialAccounts = () => {
|
|
|
273
277
|
linkSocialAccount,
|
|
274
278
|
signInWithSocialAccount,
|
|
275
279
|
unlinkSocialAccount,
|
|
280
|
+
getAllLinkedAccounts,
|
|
276
281
|
]);
|
|
277
282
|
};
|
|
278
283
|
|