@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 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
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var version = "0.19.2";
5
+ var version = "0.19.3";
6
6
  var dependencies = {
7
7
  "@dynamic-labs/iconic": "0.1.37",
8
8
  "@dynamic-labs/sdk-api": "0.0.307",
package/package.js CHANGED
@@ -1,4 +1,4 @@
1
- var version = "0.19.2";
1
+ var version = "0.19.3";
2
2
  var dependencies = {
3
3
  "@dynamic-labs/iconic": "0.1.37",
4
4
  "@dynamic-labs/sdk-api": "0.0.307",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs/sdk-react-core",
3
- "version": "0.19.2",
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.2",
21
- "@dynamic-labs/logger": "0.19.2",
22
- "@dynamic-labs/multi-wallet": "0.19.2",
23
- "@dynamic-labs/rpc-providers": "0.19.2",
24
- "@dynamic-labs/types": "0.19.2",
25
- "@dynamic-labs/utils": "0.19.2",
26
- "@dynamic-labs/wallet-book": "0.19.2",
27
- "@dynamic-labs/wallet-connector-core": "0.19.2",
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);