@dynamic-labs/sdk-react-core 0.19.2 → 0.19.3
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 +13 -0
- package/package.cjs +1 -1
- package/package.js +1 -1
- package/package.json +9 -9
- package/src/lib/utils/hooks/useUserUpdateRequest/useUpdateUser/useUpdateUser.cjs +5 -1
- package/src/lib/utils/hooks/useUserUpdateRequest/useUpdateUser/useUpdateUser.js +5 -1
- package/src/lib/utils/hooks/useWalletsConnectionState/useWalletsConnectionState.cjs +13 -1
- package/src/lib/utils/hooks/useWalletsConnectionState/useWalletsConnectionState.js +14 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,17 @@
|
|
|
1
1
|
|
|
2
|
+
### [0.19.3](https://github.com/dynamic-labs/DynamicAuth/compare/v0.19.2...v0.19.3) (2023-11-22)
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
* multiple starknet improvements [Support for default/custom RPC Providers + Dynamic Domains in signature] ([#3938](https://github.com/dynamic-labs/DynamicAuth/issues/3938)) ([d299622](https://github.com/dynamic-labs/DynamicAuth/commit/d299622197cb28483c6c6d6d051c917d6cbbe5df)), closes [#3881](https://github.com/dynamic-labs/DynamicAuth/issues/3881) [#3927](https://github.com/dynamic-labs/DynamicAuth/issues/3927)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
### Bug Fixes
|
|
11
|
+
|
|
12
|
+
* allow user's metadata field to be updated in updateUser hook ([#3930](https://github.com/dynamic-labs/DynamicAuth/issues/3930)) ([7d00014](https://github.com/dynamic-labs/DynamicAuth/commit/7d000140f87453bd158798b973917fa8309c8e5e))
|
|
13
|
+
* better handling of wallet disconnect state edge case ([#3940](https://github.com/dynamic-labs/DynamicAuth/issues/3940)) ([#3942](https://github.com/dynamic-labs/DynamicAuth/issues/3942)) ([e9f944c](https://github.com/dynamic-labs/DynamicAuth/commit/e9f944c2c68de446e83c1dbd62aaaedd07443326))
|
|
14
|
+
|
|
2
15
|
### [0.19.2](https://github.com/dynamic-labs/DynamicAuth/compare/v0.19.1...v0.19.2) (2023-11-17)
|
|
3
16
|
|
|
4
17
|
|
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.
|
|
3
|
+
"version": "0.19.3",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/dynamic-labs/DynamicAuth.git",
|
|
@@ -17,14 +17,14 @@
|
|
|
17
17
|
"react-focus-lock": "2.9.2",
|
|
18
18
|
"react-i18next": "^13.2.0",
|
|
19
19
|
"yup": "0.32.11",
|
|
20
|
-
"@dynamic-labs/ethereum": "0.19.
|
|
21
|
-
"@dynamic-labs/logger": "0.19.
|
|
22
|
-
"@dynamic-labs/multi-wallet": "0.19.
|
|
23
|
-
"@dynamic-labs/rpc-providers": "0.19.
|
|
24
|
-
"@dynamic-labs/types": "0.19.
|
|
25
|
-
"@dynamic-labs/utils": "0.19.
|
|
26
|
-
"@dynamic-labs/wallet-book": "0.19.
|
|
27
|
-
"@dynamic-labs/wallet-connector-core": "0.19.
|
|
20
|
+
"@dynamic-labs/ethereum": "0.19.3",
|
|
21
|
+
"@dynamic-labs/logger": "0.19.3",
|
|
22
|
+
"@dynamic-labs/multi-wallet": "0.19.3",
|
|
23
|
+
"@dynamic-labs/rpc-providers": "0.19.3",
|
|
24
|
+
"@dynamic-labs/types": "0.19.3",
|
|
25
|
+
"@dynamic-labs/utils": "0.19.3",
|
|
26
|
+
"@dynamic-labs/wallet-book": "0.19.3",
|
|
27
|
+
"@dynamic-labs/wallet-connector-core": "0.19.3",
|
|
28
28
|
"eventemitter3": "5.0.1"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
@@ -46,6 +46,7 @@ const userFieldsSchema = yup.object().shape({
|
|
|
46
46
|
kdaWallet: yup.string(),
|
|
47
47
|
lastName: yup.string(),
|
|
48
48
|
ltcWallet: yup.string(),
|
|
49
|
+
metadata: yup.object(),
|
|
49
50
|
newsletterNotification: yup.boolean(),
|
|
50
51
|
phoneNumber: yup.string(),
|
|
51
52
|
tShirtSize: yup.string(),
|
|
@@ -60,10 +61,13 @@ const useUpdateUser = (validationSchemaStripUnknown) => {
|
|
|
60
61
|
const { updateUserProfileByJWT } = useUpdateUserProfileByJWTCallback.useUpdateUserProfileByJWTCallback();
|
|
61
62
|
return React.useCallback((userFields, userEnvironmentId) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
62
63
|
var _a, _b, _c;
|
|
64
|
+
// `stripUnknown: true` will automatically strip out any values in the metadata object
|
|
65
|
+
// so we need to pull out the metadata object here and then re-add it after stripping unknown fields
|
|
66
|
+
const { metadata } = userFields;
|
|
63
67
|
const validatedUserFields = yield userFieldsSchema.validate(userFields, {
|
|
64
68
|
stripUnknown: validationSchemaStripUnknown,
|
|
65
69
|
});
|
|
66
|
-
const updateUserProfileResponse = yield api.updateUserProfileFields(jwtToken, userEnvironmentId || environmentId, validatedUserFields);
|
|
70
|
+
const updateUserProfileResponse = yield api.updateUserProfileFields(jwtToken, userEnvironmentId || environmentId, Object.assign(Object.assign({}, validatedUserFields), { metadata }));
|
|
67
71
|
// check if decoded JWT still somehow has missing fields, we can't proceed if it does
|
|
68
72
|
const decodedJwt = decodeJwt.decodeJwt(updateUserProfileResponse.jwt);
|
|
69
73
|
const missingFields = (_a = decodedJwt === null || decodedJwt === void 0 ? void 0 : decodedJwt.missingFields) !== null && _a !== void 0 ? _a : [];
|
|
@@ -42,6 +42,7 @@ const userFieldsSchema = object().shape({
|
|
|
42
42
|
kdaWallet: string(),
|
|
43
43
|
lastName: string(),
|
|
44
44
|
ltcWallet: string(),
|
|
45
|
+
metadata: object(),
|
|
45
46
|
newsletterNotification: boolean(),
|
|
46
47
|
phoneNumber: string(),
|
|
47
48
|
tShirtSize: string(),
|
|
@@ -56,10 +57,13 @@ const useUpdateUser = (validationSchemaStripUnknown) => {
|
|
|
56
57
|
const { updateUserProfileByJWT } = useUpdateUserProfileByJWTCallback();
|
|
57
58
|
return useCallback((userFields, userEnvironmentId) => __awaiter(void 0, void 0, void 0, function* () {
|
|
58
59
|
var _a, _b, _c;
|
|
60
|
+
// `stripUnknown: true` will automatically strip out any values in the metadata object
|
|
61
|
+
// so we need to pull out the metadata object here and then re-add it after stripping unknown fields
|
|
62
|
+
const { metadata } = userFields;
|
|
59
63
|
const validatedUserFields = yield userFieldsSchema.validate(userFields, {
|
|
60
64
|
stripUnknown: validationSchemaStripUnknown,
|
|
61
65
|
});
|
|
62
|
-
const updateUserProfileResponse = yield updateUserProfileFields(jwtToken, userEnvironmentId || environmentId, validatedUserFields);
|
|
66
|
+
const updateUserProfileResponse = yield updateUserProfileFields(jwtToken, userEnvironmentId || environmentId, Object.assign(Object.assign({}, validatedUserFields), { metadata }));
|
|
63
67
|
// check if decoded JWT still somehow has missing fields, we can't proceed if it does
|
|
64
68
|
const decodedJwt = decodeJwt(updateUserProfileResponse.jwt);
|
|
65
69
|
const missingFields = (_a = decodedJwt === null || decodedJwt === void 0 ? void 0 : decodedJwt.missingFields) !== null && _a !== void 0 ? _a : [];
|
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
var _tslib = require('../../../../../_virtual/_tslib.cjs');
|
|
6
6
|
var React = require('react');
|
|
7
7
|
require('@dynamic-labs/sdk-api');
|
|
8
|
-
require('../../../shared/logger.cjs');
|
|
8
|
+
var logger = require('../../../shared/logger.cjs');
|
|
9
9
|
require('@dynamic-labs/iconic');
|
|
10
10
|
require('@dynamic-labs/wallet-connector-core');
|
|
11
11
|
require('react/jsx-runtime');
|
|
@@ -31,7 +31,19 @@ const useWalletsConnectionState = (linkedWallets) => {
|
|
|
31
31
|
connectedWalletsMap: {},
|
|
32
32
|
didLoad: false,
|
|
33
33
|
});
|
|
34
|
+
const lastCallTimestamp = React.useRef(0);
|
|
34
35
|
const computeConnectedStateForWallets = React.useCallback(() => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
36
|
+
if (!linkedWallets.length)
|
|
37
|
+
return;
|
|
38
|
+
const callTimestamp = new Date().getTime();
|
|
39
|
+
const diffFromLastCall = callTimestamp - lastCallTimestamp.current;
|
|
40
|
+
lastCallTimestamp.current = callTimestamp;
|
|
41
|
+
// getConnectedAccounts trigger accountChanged event for Phantom EVM wallets
|
|
42
|
+
// which causes a loop of calls to this function
|
|
43
|
+
if (diffFromLastCall < 1000) {
|
|
44
|
+
logger.logger.warn('computeConnectedStateForWallets: skipping due too many calls.');
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
35
47
|
const connectedWalletsMap = {};
|
|
36
48
|
yield Promise.all(linkedWallets.map((wallet) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
37
49
|
connectedWalletsMap[wallet.id] = yield isWalletConnected.isWalletConnected(wallet);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { __awaiter } from '../../../../../_virtual/_tslib.js';
|
|
2
|
-
import { useReducer, useCallback } from 'react';
|
|
2
|
+
import { useReducer, useRef, useCallback } from 'react';
|
|
3
3
|
import '@dynamic-labs/sdk-api';
|
|
4
|
-
import '../../../shared/logger.js';
|
|
4
|
+
import { logger } from '../../../shared/logger.js';
|
|
5
5
|
import '@dynamic-labs/iconic';
|
|
6
6
|
import '@dynamic-labs/wallet-connector-core';
|
|
7
7
|
import 'react/jsx-runtime';
|
|
@@ -27,7 +27,19 @@ const useWalletsConnectionState = (linkedWallets) => {
|
|
|
27
27
|
connectedWalletsMap: {},
|
|
28
28
|
didLoad: false,
|
|
29
29
|
});
|
|
30
|
+
const lastCallTimestamp = useRef(0);
|
|
30
31
|
const computeConnectedStateForWallets = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
32
|
+
if (!linkedWallets.length)
|
|
33
|
+
return;
|
|
34
|
+
const callTimestamp = new Date().getTime();
|
|
35
|
+
const diffFromLastCall = callTimestamp - lastCallTimestamp.current;
|
|
36
|
+
lastCallTimestamp.current = callTimestamp;
|
|
37
|
+
// getConnectedAccounts trigger accountChanged event for Phantom EVM wallets
|
|
38
|
+
// which causes a loop of calls to this function
|
|
39
|
+
if (diffFromLastCall < 1000) {
|
|
40
|
+
logger.warn('computeConnectedStateForWallets: skipping due too many calls.');
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
31
43
|
const connectedWalletsMap = {};
|
|
32
44
|
yield Promise.all(linkedWallets.map((wallet) => __awaiter(void 0, void 0, void 0, function* () {
|
|
33
45
|
connectedWalletsMap[wallet.id] = yield isWalletConnected(wallet);
|