@dynamic-labs/sdk-react-core 4.31.4 → 4.32.1-alpha.0
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 +20 -0
- package/package.cjs +1 -1
- package/package.js +1 -1
- package/package.json +11 -11
- package/src/lib/utils/hooks/useMfa/useMfa.cjs +12 -1
- package/src/lib/utils/hooks/useMfa/useMfa.d.ts +24 -2
- package/src/lib/utils/hooks/useMfa/useMfa.js +13 -2
- package/src/lib/utils/hooks/useWalletConnectors/useWalletConnectors.cjs +1 -1
- package/src/lib/utils/hooks/useWalletConnectors/useWalletConnectors.js +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,24 @@
|
|
|
1
1
|
|
|
2
|
+
### [4.32.1-alpha.0](https://github.com/dynamic-labs/dynamic-auth/compare/v4.32.0...v4.32.1-alpha.0) (2025-09-19)
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
### Bug Fixes
|
|
6
|
+
|
|
7
|
+
* correct naming ([#9513](https://github.com/dynamic-labs/dynamic-auth/issues/9513)) ([5b4e31b](https://github.com/dynamic-labs/dynamic-auth/commit/5b4e31b9bbf2401d377201a4cd12edf79eaef75f))
|
|
8
|
+
* don't deep link to metamask in-app browser when already in the in-app browser ([585b31f](https://github.com/dynamic-labs/dynamic-auth/commit/585b31f73c03534e6c1a59630599d17f331ff9a0))
|
|
9
|
+
|
|
10
|
+
## [4.32.0](https://github.com/dynamic-labs/dynamic-auth/compare/v4.31.4...v4.32.0) (2025-09-17)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Features
|
|
14
|
+
|
|
15
|
+
* add methods to check if mfa recovery codes are ackowledged and generate new ones ([#9511](https://github.com/dynamic-labs/dynamic-auth/issues/9511)) ([23598b3](https://github.com/dynamic-labs/dynamic-auth/commit/23598b38b1b3ec75b9aa601a00971a9d5268ab8f))
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Bug Fixes
|
|
19
|
+
|
|
20
|
+
* primaryWalletChanged not emitted on login with same wallet ([#9515](https://github.com/dynamic-labs/dynamic-auth/issues/9515)) ([cf42dfa](https://github.com/dynamic-labs/dynamic-auth/commit/cf42dfa69daf123c4a796d0fc926c72b44427734))
|
|
21
|
+
|
|
2
22
|
### [4.31.4](https://github.com/dynamic-labs/dynamic-auth/compare/v4.31.3...v4.31.4) (2025-09-16)
|
|
3
23
|
|
|
4
24
|
|
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": "4.
|
|
3
|
+
"version": "4.32.1-alpha.0",
|
|
4
4
|
"dependencies": {
|
|
5
5
|
"@dynamic-labs/sdk-api-core": "0.0.762",
|
|
6
6
|
"@dynamic-labs-sdk/client": "0.1.0-alpha.3",
|
|
@@ -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.
|
|
19
|
-
"@dynamic-labs/iconic": "4.
|
|
20
|
-
"@dynamic-labs/logger": "4.
|
|
21
|
-
"@dynamic-labs/multi-wallet": "4.
|
|
22
|
-
"@dynamic-labs/rpc-providers": "4.
|
|
23
|
-
"@dynamic-labs/store": "4.
|
|
24
|
-
"@dynamic-labs/types": "4.
|
|
25
|
-
"@dynamic-labs/utils": "4.
|
|
26
|
-
"@dynamic-labs/wallet-book": "4.
|
|
27
|
-
"@dynamic-labs/wallet-connector-core": "4.
|
|
18
|
+
"@dynamic-labs/assert-package-version": "4.32.1-alpha.0",
|
|
19
|
+
"@dynamic-labs/iconic": "4.32.1-alpha.0",
|
|
20
|
+
"@dynamic-labs/logger": "4.32.1-alpha.0",
|
|
21
|
+
"@dynamic-labs/multi-wallet": "4.32.1-alpha.0",
|
|
22
|
+
"@dynamic-labs/rpc-providers": "4.32.1-alpha.0",
|
|
23
|
+
"@dynamic-labs/store": "4.32.1-alpha.0",
|
|
24
|
+
"@dynamic-labs/types": "4.32.1-alpha.0",
|
|
25
|
+
"@dynamic-labs/utils": "4.32.1-alpha.0",
|
|
26
|
+
"@dynamic-labs/wallet-book": "4.32.1-alpha.0",
|
|
27
|
+
"@dynamic-labs/wallet-connector-core": "4.32.1-alpha.0",
|
|
28
28
|
"eventemitter3": "5.0.1"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
@@ -178,7 +178,11 @@ const useMfa = () => {
|
|
|
178
178
|
}
|
|
179
179
|
throw new Error('Unsupported MFA device type');
|
|
180
180
|
}), []);
|
|
181
|
-
const getRecoveryCodes = React.useCallback((...args_4) => _tslib.__awaiter(void 0, [...args_4], void 0, function* (
|
|
181
|
+
const getRecoveryCodes = React.useCallback((...args_4) => _tslib.__awaiter(void 0, [...args_4], void 0, function* (
|
|
182
|
+
/**
|
|
183
|
+
* @deprecated use getNewRecoveryCodes instead
|
|
184
|
+
*/
|
|
185
|
+
generateNewCodes = false) {
|
|
182
186
|
if (generateNewCodes) {
|
|
183
187
|
const { recoveryCodes } = yield client.createNewMfaRecoveryCodes();
|
|
184
188
|
return recoveryCodes;
|
|
@@ -188,6 +192,11 @@ const useMfa = () => {
|
|
|
188
192
|
return recoveryCodes;
|
|
189
193
|
}
|
|
190
194
|
}), []);
|
|
195
|
+
const getNewRecoveryCodes = React.useCallback(() => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
196
|
+
const { recoveryCodes } = yield client.createNewMfaRecoveryCodes();
|
|
197
|
+
return recoveryCodes;
|
|
198
|
+
}), []);
|
|
199
|
+
const isPendingRecoveryCodesAcknowledgment = React.useCallback(() => _tslib.__awaiter(void 0, void 0, void 0, function* () { return client.isPendingRecoveryCodesAcknowledgment(); }), []);
|
|
191
200
|
const completeAcknowledgement = React.useCallback(() => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
192
201
|
yield client.acknowledgeRecoveryCodes();
|
|
193
202
|
}), []);
|
|
@@ -199,8 +208,10 @@ const useMfa = () => {
|
|
|
199
208
|
authenticateRecoveryCode,
|
|
200
209
|
completeAcknowledgement,
|
|
201
210
|
deleteUserDevice,
|
|
211
|
+
getNewRecoveryCodes,
|
|
202
212
|
getRecoveryCodes,
|
|
203
213
|
getUserDevices,
|
|
214
|
+
isPendingRecoveryCodesAcknowledgment,
|
|
204
215
|
updateUserDevice,
|
|
205
216
|
verifyDevice,
|
|
206
217
|
};
|
|
@@ -42,15 +42,37 @@ type UseMfaHookResult = {
|
|
|
42
42
|
*/
|
|
43
43
|
deleteUserDevice: (deviceId: string, mfaAuthToken: string) => Promise<void>;
|
|
44
44
|
/**
|
|
45
|
-
* Get the
|
|
45
|
+
* Get the current recovery codes for this user.
|
|
46
|
+
*
|
|
47
|
+
* Note: This will throw an error if the user has already acknowledged their recovery codes.
|
|
48
|
+
* In this scenario, you should use getNewRecoveryCodes instead.
|
|
49
|
+
*/
|
|
50
|
+
getRecoveryCodes: (
|
|
51
|
+
/**
|
|
52
|
+
* @deprecated use getNewRecoveryCodes instead
|
|
53
|
+
*/
|
|
54
|
+
generateNewCodes?: boolean) => Promise<string[]>;
|
|
55
|
+
/**
|
|
56
|
+
* Get the user's devices
|
|
46
57
|
*/
|
|
47
|
-
getRecoveryCodes: (generateNewCodes?: boolean) => Promise<string[]>;
|
|
48
58
|
getUserDevices: () => Promise<MFADevice[]>;
|
|
49
59
|
updateUserDevice: (deviceId: string) => Promise<void>;
|
|
50
60
|
/**
|
|
51
61
|
* @deprecated use authenticateDevice instead
|
|
52
62
|
*/
|
|
53
63
|
verifyDevice: (code: string, type?: MFADeviceType) => Promise<MFADevice>;
|
|
64
|
+
/**
|
|
65
|
+
* Get new recovery codes for this user.
|
|
66
|
+
* The user will need to acknowledge the new recovery codes.
|
|
67
|
+
*/
|
|
68
|
+
getNewRecoveryCodes: () => Promise<string[]>;
|
|
69
|
+
/**
|
|
70
|
+
* Check if the user has already acknowledged their recovery codes.
|
|
71
|
+
*
|
|
72
|
+
* Once the user has acknowledged their recovery codes, the recovery codes will no
|
|
73
|
+
* longer be accessible via getRecoveryCodes.
|
|
74
|
+
*/
|
|
75
|
+
isPendingRecoveryCodesAcknowledgment: () => Promise<boolean>;
|
|
54
76
|
};
|
|
55
77
|
export declare const useMfa: () => UseMfaHookResult;
|
|
56
78
|
export {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
import { __awaiter } from '../../../../../_virtual/_tslib.js';
|
|
3
3
|
import { useCallback } from 'react';
|
|
4
|
-
import { authenticateTotpMfaDevice, getMfaDevices, setDefaultMfaDevice, deleteMfaDevice, registerTotpMfaDevice, authenticateMfaRecoveryCode, createNewMfaRecoveryCodes, getMfaRecoveryCodes, acknowledgeRecoveryCodes } from '@dynamic-labs-sdk/client';
|
|
4
|
+
import { authenticateTotpMfaDevice, getMfaDevices, setDefaultMfaDevice, deleteMfaDevice, registerTotpMfaDevice, authenticateMfaRecoveryCode, createNewMfaRecoveryCodes, getMfaRecoveryCodes, isPendingRecoveryCodesAcknowledgment, acknowledgeRecoveryCodes } from '@dynamic-labs-sdk/client';
|
|
5
5
|
import { MFADeviceType } from '@dynamic-labs/sdk-api-core';
|
|
6
6
|
import { verifyTotpMfaDevice } from '../../../client/extension/deprecated/mfa/verifyTotpMfaDevice/verifyTotpMfaDevice.js';
|
|
7
7
|
import '../../../client/client.js';
|
|
@@ -174,7 +174,11 @@ const useMfa = () => {
|
|
|
174
174
|
}
|
|
175
175
|
throw new Error('Unsupported MFA device type');
|
|
176
176
|
}), []);
|
|
177
|
-
const getRecoveryCodes = useCallback((...args_4) => __awaiter(void 0, [...args_4], void 0, function* (
|
|
177
|
+
const getRecoveryCodes = useCallback((...args_4) => __awaiter(void 0, [...args_4], void 0, function* (
|
|
178
|
+
/**
|
|
179
|
+
* @deprecated use getNewRecoveryCodes instead
|
|
180
|
+
*/
|
|
181
|
+
generateNewCodes = false) {
|
|
178
182
|
if (generateNewCodes) {
|
|
179
183
|
const { recoveryCodes } = yield createNewMfaRecoveryCodes();
|
|
180
184
|
return recoveryCodes;
|
|
@@ -184,6 +188,11 @@ const useMfa = () => {
|
|
|
184
188
|
return recoveryCodes;
|
|
185
189
|
}
|
|
186
190
|
}), []);
|
|
191
|
+
const getNewRecoveryCodes = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
192
|
+
const { recoveryCodes } = yield createNewMfaRecoveryCodes();
|
|
193
|
+
return recoveryCodes;
|
|
194
|
+
}), []);
|
|
195
|
+
const isPendingRecoveryCodesAcknowledgment$1 = useCallback(() => __awaiter(void 0, void 0, void 0, function* () { return isPendingRecoveryCodesAcknowledgment(); }), []);
|
|
187
196
|
const completeAcknowledgement = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
188
197
|
yield acknowledgeRecoveryCodes();
|
|
189
198
|
}), []);
|
|
@@ -195,8 +204,10 @@ const useMfa = () => {
|
|
|
195
204
|
authenticateRecoveryCode,
|
|
196
205
|
completeAcknowledgement,
|
|
197
206
|
deleteUserDevice,
|
|
207
|
+
getNewRecoveryCodes,
|
|
198
208
|
getRecoveryCodes,
|
|
199
209
|
getUserDevices,
|
|
210
|
+
isPendingRecoveryCodesAcknowledgment: isPendingRecoveryCodesAcknowledgment$1,
|
|
200
211
|
updateUserDevice,
|
|
201
212
|
verifyDevice,
|
|
202
213
|
};
|
|
@@ -83,9 +83,9 @@ const useWalletConnectors = ({ connectedWallets, walletConnectorOptions, setMult
|
|
|
83
83
|
// emit primaryWalletChanged event if the primary wallet changes
|
|
84
84
|
React.useEffect(() => {
|
|
85
85
|
if (primaryWallet && primaryWallet.id !== lastPrimaryWalletId.current) {
|
|
86
|
-
lastPrimaryWalletId.current = primaryWallet.id;
|
|
87
86
|
dynamicEvents.dynamicEvents.emit('primaryWalletChanged', primaryWallet);
|
|
88
87
|
}
|
|
88
|
+
lastPrimaryWalletId.current = primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.id;
|
|
89
89
|
}, [primaryWallet]);
|
|
90
90
|
const secondaryWallets = React.useMemo(() => canHaveMultipleWalletsConnected
|
|
91
91
|
? wallets.filter((wallet) => wallet.id !== primaryWalletId)
|
|
@@ -79,9 +79,9 @@ const useWalletConnectors = ({ connectedWallets, walletConnectorOptions, setMult
|
|
|
79
79
|
// emit primaryWalletChanged event if the primary wallet changes
|
|
80
80
|
useEffect(() => {
|
|
81
81
|
if (primaryWallet && primaryWallet.id !== lastPrimaryWalletId.current) {
|
|
82
|
-
lastPrimaryWalletId.current = primaryWallet.id;
|
|
83
82
|
dynamicEvents.emit('primaryWalletChanged', primaryWallet);
|
|
84
83
|
}
|
|
84
|
+
lastPrimaryWalletId.current = primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.id;
|
|
85
85
|
}, [primaryWallet]);
|
|
86
86
|
const secondaryWallets = useMemo(() => canHaveMultipleWalletsConnected
|
|
87
87
|
? wallets.filter((wallet) => wallet.id !== primaryWalletId)
|