@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.
Files changed (26) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/package.cjs +3 -3
  3. package/package.js +3 -3
  4. package/package.json +13 -13
  5. package/src/lib/client/extension/deprecated/mfa/verifyTotpMfaDevice/verifyTotpMfaDevice.d.ts +1 -1
  6. package/src/lib/data/api/waas/index.d.ts +1 -0
  7. package/src/lib/data/api/waas/waas.cjs +37 -0
  8. package/src/lib/data/api/waas/waas.d.ts +2 -0
  9. package/src/lib/data/api/waas/waas.js +33 -0
  10. package/src/lib/utils/hooks/useDynamicWaas/useDynamicWaas.cjs +54 -19
  11. package/src/lib/utils/hooks/useDynamicWaas/useDynamicWaas.d.ts +7 -2
  12. package/src/lib/utils/hooks/useDynamicWaas/useDynamicWaas.js +54 -19
  13. package/src/lib/utils/hooks/useSocialAccounts/useSocialAccounts.cjs +5 -0
  14. package/src/lib/utils/hooks/useSocialAccounts/useSocialAccounts.d.ts +1 -0
  15. package/src/lib/utils/hooks/useSocialAccounts/useSocialAccounts.js +5 -0
  16. package/src/lib/utils/hooks/useWalletDelegation/useWalletDelegation.cjs +106 -34
  17. package/src/lib/utils/hooks/useWalletDelegation/useWalletDelegation.d.ts +4 -0
  18. package/src/lib/utils/hooks/useWalletDelegation/useWalletDelegation.js +106 -34
  19. package/src/lib/utils/hooks/useWalletOptions/useWalletOptions.d.ts +2 -2
  20. package/src/lib/views/WaasUpgradeView/WaasUpgradeView.cjs +7 -7
  21. package/src/lib/views/WaasUpgradeView/WaasUpgradeView.js +7 -7
  22. package/src/lib/views/WalletDelegation/WalletDelegationView/WalletDelegationView.cjs +51 -52
  23. package/src/lib/views/WalletDelegation/WalletDelegationView/WalletDelegationView.js +52 -53
  24. package/src/lib/views/WalletList/data.d.ts +1 -1
  25. package/src/lib/views/WalletUpgradeFlowView/WalletUpgradeFlowView.cjs +1 -1
  26. 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.0";
6
+ var version = "4.37.2";
7
7
  var dependencies = {
8
- "@dynamic-labs/sdk-api-core": "0.0.798",
9
- "@dynamic-labs-sdk/client": "0.1.0-alpha.17",
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.0";
2
+ var version = "4.37.2";
3
3
  var dependencies = {
4
- "@dynamic-labs/sdk-api-core": "0.0.798",
5
- "@dynamic-labs-sdk/client": "0.1.0-alpha.17",
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.0",
3
+ "version": "4.37.2",
4
4
  "dependencies": {
5
- "@dynamic-labs/sdk-api-core": "0.0.798",
6
- "@dynamic-labs-sdk/client": "0.1.0-alpha.17",
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.0",
19
- "@dynamic-labs/iconic": "4.37.0",
20
- "@dynamic-labs/logger": "4.37.0",
21
- "@dynamic-labs/multi-wallet": "4.37.0",
22
- "@dynamic-labs/rpc-providers": "4.37.0",
23
- "@dynamic-labs/store": "4.37.0",
24
- "@dynamic-labs/types": "4.37.0",
25
- "@dynamic-labs/utils": "4.37.0",
26
- "@dynamic-labs/wallet-book": "4.37.0",
27
- "@dynamic-labs/wallet-connector-core": "4.37.0",
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": {
@@ -1,3 +1,3 @@
1
1
  export declare const verifyTotpMfaDevice: ({ code }: {
2
2
  code: string;
3
- }) => Promise<import("@dynamic-labs-sdk/client").MFADevice>;
3
+ }) => Promise<import("@dynamic-labs/sdk-api-core").MFADevice>;
@@ -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,2 @@
1
+ import { UpdateWaasWalletSettingsRequest } from '@dynamic-labs/sdk-api-core';
2
+ export declare const updateWaasWalletSettings: (environmentId: string, walletId: string, settings: UpdateWaasWalletSettingsRequest) => Promise<void>;
@@ -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 useOnboardingCompleteUser = require('../../../client/extension/user/useOnboardingCompleteUser/useOnboardingCompleteUser.cjs');
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 = useOnboardingCompleteUser.useOnboardingCompleteUserProfile();
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 && _a !== void 0 ? _a : false;
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((_f) => _tslib.__awaiter(void 0, [_f], void 0, function* ({ chainName, accountAddress, }) {
361
- const walletConnector = getWalletConnector(chainName);
362
- if (!walletConnector)
363
- return;
364
- yield walletConnector.delegateKeyShares({
365
- accountAddress,
366
- });
367
- }), [getWalletConnector]);
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 _g;
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 = (_g = wallet.walletProperties) === null || _g === void 0 ? void 0 : _g.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: ({ chainName, accountAddress, }: {
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 { useOnboardingCompleteUserProfile } from '../../../client/extension/user/useOnboardingCompleteUser/useOnboardingCompleteUser.js';
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 = useOnboardingCompleteUserProfile();
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 && _a !== void 0 ? _a : false;
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((_f) => __awaiter(void 0, [_f], void 0, function* ({ chainName, accountAddress, }) {
357
- const walletConnector = getWalletConnector(chainName);
358
- if (!walletConnector)
359
- return;
360
- yield walletConnector.delegateKeyShares({
361
- accountAddress,
362
- });
363
- }), [getWalletConnector]);
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 _g;
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 = (_g = wallet.walletProperties) === null || _g === void 0 ? void 0 : _g.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