@dynamic-labs/sdk-react-core 3.0.0-alpha.30 → 3.0.0-alpha.32

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,14 @@
1
1
 
2
+ ## [3.0.0-alpha.32](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.31...v3.0.0-alpha.32) (2024-07-30)
3
+
4
+
5
+ ### Bug Fixes
6
+
7
+ * react native flicker when redirecting back from farcaster ([#6338](https://github.com/dynamic-labs/DynamicAuth/issues/6338)) ([6ab8464](https://github.com/dynamic-labs/DynamicAuth/commit/6ab846476f7961564445223dd12a552ed4c0f0c8))
8
+ * stop unnecessary phantom btc popup when disconnecting - Revert ([#6439](https://github.com/dynamic-labs/DynamicAuth/issues/6439)) ([79ba97d](https://github.com/dynamic-labs/DynamicAuth/commit/79ba97d82c4eb89f0118a925e4dc899853e04550)), closes [#6188](https://github.com/dynamic-labs/DynamicAuth/issues/6188)
9
+
10
+ ## [3.0.0-alpha.31](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.30...v3.0.0-alpha.31) (2024-07-27)
11
+
2
12
  ## [3.0.0-alpha.30](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.29...v3.0.0-alpha.30) (2024-07-27)
3
13
 
4
14
 
package/package.cjs CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
- var version = "3.0.0-alpha.30";
6
+ var version = "3.0.0-alpha.32";
7
7
  var dependencies = {
8
8
  "@dynamic-labs/sdk-api-core": "0.0.497",
9
9
  "@hcaptcha/react-hcaptcha": "1.4.4",
package/package.js CHANGED
@@ -1,5 +1,5 @@
1
1
  'use client'
2
- var version = "3.0.0-alpha.30";
2
+ var version = "3.0.0-alpha.32";
3
3
  var dependencies = {
4
4
  "@dynamic-labs/sdk-api-core": "0.0.497",
5
5
  "@hcaptcha/react-hcaptcha": "1.4.4",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs/sdk-react-core",
3
- "version": "3.0.0-alpha.30",
3
+ "version": "3.0.0-alpha.32",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/dynamic-labs/dynamic-auth.git",
@@ -17,16 +17,16 @@
17
17
  "react-i18next": "13.5.0",
18
18
  "yup": "0.32.11",
19
19
  "react-international-phone": "4.2.5",
20
- "@dynamic-labs/iconic": "3.0.0-alpha.30",
21
- "@dynamic-labs/logger": "3.0.0-alpha.30",
22
- "@dynamic-labs/message-transport": "3.0.0-alpha.30",
23
- "@dynamic-labs/multi-wallet": "3.0.0-alpha.30",
24
- "@dynamic-labs/rpc-providers": "3.0.0-alpha.30",
25
- "@dynamic-labs/store": "3.0.0-alpha.30",
26
- "@dynamic-labs/types": "3.0.0-alpha.30",
27
- "@dynamic-labs/utils": "3.0.0-alpha.30",
28
- "@dynamic-labs/wallet-book": "3.0.0-alpha.30",
29
- "@dynamic-labs/wallet-connector-core": "3.0.0-alpha.30",
20
+ "@dynamic-labs/iconic": "3.0.0-alpha.32",
21
+ "@dynamic-labs/logger": "3.0.0-alpha.32",
22
+ "@dynamic-labs/message-transport": "3.0.0-alpha.32",
23
+ "@dynamic-labs/multi-wallet": "3.0.0-alpha.32",
24
+ "@dynamic-labs/rpc-providers": "3.0.0-alpha.32",
25
+ "@dynamic-labs/store": "3.0.0-alpha.32",
26
+ "@dynamic-labs/types": "3.0.0-alpha.32",
27
+ "@dynamic-labs/utils": "3.0.0-alpha.32",
28
+ "@dynamic-labs/wallet-book": "3.0.0-alpha.32",
29
+ "@dynamic-labs/wallet-connector-core": "3.0.0-alpha.32",
30
30
  "eventemitter3": "5.0.1"
31
31
  },
32
32
  "devDependencies": {
package/src/index.cjs CHANGED
@@ -101,6 +101,7 @@ require('./lib/context/MfaSettingsContext/MfaSettingsContext.cjs');
101
101
  require('./lib/widgets/DynamicWidget/components/DynamicWidgetHeader/DynamicWidgetHeader.cjs');
102
102
  require('react-focus-lock');
103
103
  require('./lib/context/LoadingContext/LoadingContext.cjs');
104
+ var useMultiWalletPromptState = require('./lib/widgets/DynamicWidget/hooks/useMultiWalletPromptState/useMultiWalletPromptState.cjs');
104
105
  require('./lib/context/CaptchaContext/CaptchaContext.cjs');
105
106
  var DynamicWidgetContext = require('./lib/widgets/DynamicWidget/context/DynamicWidgetContext.cjs');
106
107
  require('./lib/components/IconButton/IconButton.cjs');
@@ -214,6 +215,7 @@ exports.useUserUpdateRequest = useUserUpdateRequest.useUserUpdateRequest;
214
215
  exports.useRpcProviders = useRpcProviders.useRpcProviders;
215
216
  exports.useWalletItemActions = useWalletItemActions.useWalletItemActions;
216
217
  exports.ShadowDOM = ShadowDOM.ShadowDOM;
218
+ exports.useMultiWalletPromptState = useMultiWalletPromptState.useMultiWalletPromptState;
217
219
  exports.DynamicWidgetContextProvider = DynamicWidgetContext.DynamicWidgetContextProvider;
218
220
  exports.useSwitchWallet = useSwitchWallet.useSwitchWallet;
219
221
  exports.DynamicBridgeWidget = DynamicBridgeWidget.DynamicBridgeWidget;
package/src/index.d.ts CHANGED
@@ -10,6 +10,7 @@ export { useDynamicScopes } from './lib/utils/hooks/useDynamicScopes';
10
10
  export { useUserWallets } from './lib/context/UserWalletsContext';
11
11
  export { DynamicConnectButton, ShadowDOM, IsBrowser } from './lib/components';
12
12
  export { DynamicBridgeWidget, DynamicEmbeddedAuthFlow, DynamicEmbeddedUserProfile, DynamicEmbeddedWidget, DynamicMultiWalletPromptsWidget, DynamicNav, DynamicUserProfile, DynamicWidget, FundingWidget, } from './lib/widgets';
13
+ export { useMultiWalletPromptState } from './lib/widgets/DynamicWidget/hooks/useMultiWalletPromptState';
13
14
  export type { ThemeData } from './lib/context/ThemeContext/types';
14
15
  export {
15
16
  /** @deprecated */
package/src/index.js CHANGED
@@ -97,6 +97,7 @@ import './lib/context/MfaSettingsContext/MfaSettingsContext.js';
97
97
  import './lib/widgets/DynamicWidget/components/DynamicWidgetHeader/DynamicWidgetHeader.js';
98
98
  import 'react-focus-lock';
99
99
  import './lib/context/LoadingContext/LoadingContext.js';
100
+ export { useMultiWalletPromptState } from './lib/widgets/DynamicWidget/hooks/useMultiWalletPromptState/useMultiWalletPromptState.js';
100
101
  import './lib/context/CaptchaContext/CaptchaContext.js';
101
102
  export { DynamicWidgetContextProvider } from './lib/widgets/DynamicWidget/context/DynamicWidgetContext.js';
102
103
  import './lib/components/IconButton/IconButton.js';
@@ -90,14 +90,14 @@ require('../../../context/ConnectWithOtpContext/constants.cjs');
90
90
  require('../../../context/ReinitializeContext/ReinitializeContextProvider.cjs');
91
91
 
92
92
  const isCookieEnabled = () => {
93
- var _a, _b, _c;
94
- const securitySettings = (_a = projectSettingsActions.getProjectSettings()) === null || _a === void 0 ? void 0 : _a.settings.security;
93
+ var _a, _b, _c, _d;
94
+ const securitySettings = (_b = (_a = projectSettingsActions.getProjectSettings()) === null || _a === void 0 ? void 0 : _a.settings) === null || _b === void 0 ? void 0 : _b.security;
95
95
  if (!securitySettings)
96
96
  return false;
97
97
  // client uses Dynamic cookies
98
- const dynamicCookiesEnabled = (((_b = securitySettings.auth) === null || _b === void 0 ? void 0 : _b.storage) || []).includes(sdkApiCore.AuthStorageEnum.Cookie);
98
+ const dynamicCookiesEnabled = (((_c = securitySettings.auth) === null || _c === void 0 ? void 0 : _c.storage) || []).includes(sdkApiCore.AuthStorageEnum.Cookie);
99
99
  // BYO JWT client puts their non-Dynamic JWT in a cookie
100
- const byoJwtCookieEnabled = Boolean((_c = securitySettings.externalAuth) === null || _c === void 0 ? void 0 : _c.cookieName);
100
+ const byoJwtCookieEnabled = Boolean((_d = securitySettings.externalAuth) === null || _d === void 0 ? void 0 : _d.cookieName);
101
101
  // should return true for both of these scenarios
102
102
  // because we also need to do `credentials: true` in api.ts when
103
103
  // a byo jwt client sets their named cookie for their jwt and
@@ -86,14 +86,14 @@ import '../../../context/ConnectWithOtpContext/constants.js';
86
86
  import '../../../context/ReinitializeContext/ReinitializeContextProvider.js';
87
87
 
88
88
  const isCookieEnabled = () => {
89
- var _a, _b, _c;
90
- const securitySettings = (_a = getProjectSettings()) === null || _a === void 0 ? void 0 : _a.settings.security;
89
+ var _a, _b, _c, _d;
90
+ const securitySettings = (_b = (_a = getProjectSettings()) === null || _a === void 0 ? void 0 : _a.settings) === null || _b === void 0 ? void 0 : _b.security;
91
91
  if (!securitySettings)
92
92
  return false;
93
93
  // client uses Dynamic cookies
94
- const dynamicCookiesEnabled = (((_b = securitySettings.auth) === null || _b === void 0 ? void 0 : _b.storage) || []).includes(AuthStorageEnum.Cookie);
94
+ const dynamicCookiesEnabled = (((_c = securitySettings.auth) === null || _c === void 0 ? void 0 : _c.storage) || []).includes(AuthStorageEnum.Cookie);
95
95
  // BYO JWT client puts their non-Dynamic JWT in a cookie
96
- const byoJwtCookieEnabled = Boolean((_c = securitySettings.externalAuth) === null || _c === void 0 ? void 0 : _c.cookieName);
96
+ const byoJwtCookieEnabled = Boolean((_d = securitySettings.externalAuth) === null || _d === void 0 ? void 0 : _d.cookieName);
97
97
  // should return true for both of these scenarios
98
98
  // because we also need to do `credentials: true` in api.ts when
99
99
  // a byo jwt client sets their named cookie for their jwt and
@@ -135,10 +135,11 @@ const useSocialAccounts = ({ sessionTimeout } = {
135
135
  }
136
136
  return true;
137
137
  }, [handleError, projectSettings, verifiedOAuthCredentialsMap]);
138
- const linkSocialAccount = React.useCallback((provider) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
138
+ const linkSocialAccount = React.useCallback((provider_1, ...args_1) => _tslib.__awaiter(void 0, [provider_1, ...args_1], void 0, function* (provider, { redirectUrl } = { redirectUrl: undefined }) {
139
139
  connectSocialAccount({
140
140
  authMode: 'link',
141
141
  provider,
142
+ redirectUrl,
142
143
  validator: checkValidOAuthLinking,
143
144
  });
144
145
  }), [checkValidOAuthLinking, connectSocialAccount]);
@@ -205,10 +206,11 @@ const useSocialAccounts = ({ sessionTimeout } = {
205
206
  }
206
207
  return true;
207
208
  }, [handleError, (_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.socialSignIn) === null || _a === void 0 ? void 0 : _a.providers]);
208
- const signInWithSocialAccount = React.useCallback((provider) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
209
+ const signInWithSocialAccount = React.useCallback((provider_2, ...args_2) => _tslib.__awaiter(void 0, [provider_2, ...args_2], void 0, function* (provider, { redirectUrl } = { redirectUrl: undefined }) {
209
210
  return connectSocialAccount({
210
211
  authMode: 'signin',
211
212
  provider,
213
+ redirectUrl,
212
214
  validator: checkValidOAuthSignIn,
213
215
  });
214
216
  }), [checkValidOAuthSignIn, connectSocialAccount]);
@@ -3,13 +3,19 @@ import { SocialAccountInformation } from '@dynamic-labs/types';
3
3
  type UseSocialAccountsProps = {
4
4
  sessionTimeout: number;
5
5
  };
6
+ type ConnectSocialProps = {
7
+ /**
8
+ * Overrides the redirectUrl provided by DynamicContextProvider
9
+ */
10
+ redirectUrl?: string;
11
+ };
6
12
  export declare const useSocialAccounts: ({ sessionTimeout }?: UseSocialAccountsProps) => {
7
13
  readonly error: import("@dynamic-labs/types").SocialOAuthError | undefined;
8
14
  readonly getLinkedAccountInformation: (provider: ProviderEnum) => SocialAccountInformation | undefined;
9
15
  readonly isLinked: (provider: ProviderEnum) => boolean;
10
16
  readonly isProcessing: boolean;
11
- readonly linkSocialAccount: (provider: ProviderEnum) => Promise<void>;
12
- readonly signInWithSocialAccount: (provider: ProviderEnum) => Promise<void>;
17
+ readonly linkSocialAccount: (provider: ProviderEnum, { redirectUrl }?: ConnectSocialProps) => Promise<void>;
18
+ readonly signInWithSocialAccount: (provider: ProviderEnum, { redirectUrl }?: ConnectSocialProps) => Promise<void>;
13
19
  readonly unlinkSocialAccount: (provider: ProviderEnum) => Promise<void>;
14
20
  };
15
21
  export {};
@@ -131,10 +131,11 @@ const useSocialAccounts = ({ sessionTimeout } = {
131
131
  }
132
132
  return true;
133
133
  }, [handleError, projectSettings, verifiedOAuthCredentialsMap]);
134
- const linkSocialAccount = useCallback((provider) => __awaiter(void 0, void 0, void 0, function* () {
134
+ const linkSocialAccount = useCallback((provider_1, ...args_1) => __awaiter(void 0, [provider_1, ...args_1], void 0, function* (provider, { redirectUrl } = { redirectUrl: undefined }) {
135
135
  connectSocialAccount({
136
136
  authMode: 'link',
137
137
  provider,
138
+ redirectUrl,
138
139
  validator: checkValidOAuthLinking,
139
140
  });
140
141
  }), [checkValidOAuthLinking, connectSocialAccount]);
@@ -201,10 +202,11 @@ const useSocialAccounts = ({ sessionTimeout } = {
201
202
  }
202
203
  return true;
203
204
  }, [handleError, (_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.socialSignIn) === null || _a === void 0 ? void 0 : _a.providers]);
204
- const signInWithSocialAccount = useCallback((provider) => __awaiter(void 0, void 0, void 0, function* () {
205
+ const signInWithSocialAccount = useCallback((provider_2, ...args_2) => __awaiter(void 0, [provider_2, ...args_2], void 0, function* (provider, { redirectUrl } = { redirectUrl: undefined }) {
205
206
  return connectSocialAccount({
206
207
  authMode: 'signin',
207
208
  provider,
209
+ redirectUrl,
208
210
  validator: checkValidOAuthSignIn,
209
211
  });
210
212
  }), [checkValidOAuthSignIn, connectSocialAccount]);
@@ -178,7 +178,7 @@ const useSocialAuth = ({ sessionTimeout, onSettled, onError, onFarcasterUrl, })
178
178
  verifyFunction: () => apiCall(),
179
179
  });
180
180
  });
181
- const connectSocialAccount = (_a) => _tslib.__awaiter(void 0, [_a], void 0, function* ({ authMode, provider, validator, captchaToken, }) {
181
+ const connectSocialAccount = (_a) => _tslib.__awaiter(void 0, [_a], void 0, function* ({ authMode, provider, validator, captchaToken, redirectUrl, }) {
182
182
  var _b, _c;
183
183
  clearError();
184
184
  setIsProcessing(true);
@@ -199,8 +199,8 @@ const useSocialAuth = ({ sessionTimeout, onSettled, onError, onFarcasterUrl, })
199
199
  type: 'social',
200
200
  });
201
201
  if (provider === sdkApiCore.ProviderEnum.Farcaster)
202
- return connectWithFarcaster(authMode, { captchaToken });
203
- const state = randomString.randomString(8);
202
+ return connectWithFarcaster(authMode, { captchaToken, redirectUrl });
203
+ const state = randomString.randomString(32);
204
204
  const verifier = randomString.randomString(43);
205
205
  const loginUrlString = getOauthLoginUrl.getOauthLoginUrl((_b = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.providers) !== null && _b !== void 0 ? _b : [], provider);
206
206
  if (!loginUrlString) {
@@ -225,6 +225,7 @@ const useSocialAuth = ({ sessionTimeout, onSettled, onError, onFarcasterUrl, })
225
225
  oauthLoginUrl,
226
226
  onSettled,
227
227
  provider,
228
+ redirectUrl,
228
229
  sessionTimeout,
229
230
  setIsProcessing,
230
231
  state,
@@ -274,13 +275,13 @@ const useSocialAuth = ({ sessionTimeout, onSettled, onError, onFarcasterUrl, })
274
275
  }
275
276
  }
276
277
  });
277
- const connectWithFarcaster = (authMode_1, _d) => _tslib.__awaiter(void 0, [authMode_1, _d], void 0, function* (authMode, { captchaToken }) {
278
+ const connectWithFarcaster = (authMode_1, _d) => _tslib.__awaiter(void 0, [authMode_1, _d], void 0, function* (authMode, { captchaToken, redirectUrl: redirectUrlOverride, }) {
278
279
  const dynamicNonce = consumeNonce();
279
280
  const domain = utils.PlatformService.getHost();
280
281
  const data = yield farcaster.connect({
281
282
  domain,
282
283
  nonce: dynamicNonce,
283
- redirectUrl,
284
+ redirectUrl: redirectUrlOverride !== null && redirectUrlOverride !== void 0 ? redirectUrlOverride : redirectUrl,
284
285
  siweUri: utils.PlatformService.getOrigin(),
285
286
  });
286
287
  if (!(data === null || data === void 0 ? void 0 : data.url) || !(data === null || data === void 0 ? void 0 : data.channelToken)) {
@@ -13,10 +13,11 @@ export type ConnectSocialAccountProps = {
13
13
  provider: ProviderEnum;
14
14
  validator?: (provider: ProviderEnum) => boolean;
15
15
  captchaToken?: string;
16
+ redirectUrl?: string;
16
17
  };
17
18
  export declare const useSocialAuth: ({ sessionTimeout, onSettled, onError, onFarcasterUrl, }: UseSocialAuthProps) => {
18
19
  readonly checkValidProvider: (provider: ProviderEnum, authMode: SocialAuthMode) => boolean;
19
- readonly connectSocialAccount: ({ authMode, provider, validator, captchaToken, }: ConnectSocialAccountProps) => Promise<void>;
20
+ readonly connectSocialAccount: ({ authMode, provider, validator, captchaToken, redirectUrl, }: ConnectSocialAccountProps) => Promise<void>;
20
21
  readonly error: SocialOAuthError | undefined;
21
22
  readonly handleError: (provider: ProviderEnum | undefined, code: SocialOAuthErrorCode, message: string, options?: {
22
23
  raiseAuthFailure?: boolean | undefined;
@@ -174,7 +174,7 @@ const useSocialAuth = ({ sessionTimeout, onSettled, onError, onFarcasterUrl, })
174
174
  verifyFunction: () => apiCall(),
175
175
  });
176
176
  });
177
- const connectSocialAccount = (_a) => __awaiter(void 0, [_a], void 0, function* ({ authMode, provider, validator, captchaToken, }) {
177
+ const connectSocialAccount = (_a) => __awaiter(void 0, [_a], void 0, function* ({ authMode, provider, validator, captchaToken, redirectUrl, }) {
178
178
  var _b, _c;
179
179
  clearError();
180
180
  setIsProcessing(true);
@@ -195,8 +195,8 @@ const useSocialAuth = ({ sessionTimeout, onSettled, onError, onFarcasterUrl, })
195
195
  type: 'social',
196
196
  });
197
197
  if (provider === ProviderEnum.Farcaster)
198
- return connectWithFarcaster(authMode, { captchaToken });
199
- const state = randomString(8);
198
+ return connectWithFarcaster(authMode, { captchaToken, redirectUrl });
199
+ const state = randomString(32);
200
200
  const verifier = randomString(43);
201
201
  const loginUrlString = getOauthLoginUrl((_b = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.providers) !== null && _b !== void 0 ? _b : [], provider);
202
202
  if (!loginUrlString) {
@@ -221,6 +221,7 @@ const useSocialAuth = ({ sessionTimeout, onSettled, onError, onFarcasterUrl, })
221
221
  oauthLoginUrl,
222
222
  onSettled,
223
223
  provider,
224
+ redirectUrl,
224
225
  sessionTimeout,
225
226
  setIsProcessing,
226
227
  state,
@@ -270,13 +271,13 @@ const useSocialAuth = ({ sessionTimeout, onSettled, onError, onFarcasterUrl, })
270
271
  }
271
272
  }
272
273
  });
273
- const connectWithFarcaster = (authMode_1, _d) => __awaiter(void 0, [authMode_1, _d], void 0, function* (authMode, { captchaToken }) {
274
+ const connectWithFarcaster = (authMode_1, _d) => __awaiter(void 0, [authMode_1, _d], void 0, function* (authMode, { captchaToken, redirectUrl: redirectUrlOverride, }) {
274
275
  const dynamicNonce = consumeNonce();
275
276
  const domain = PlatformService.getHost();
276
277
  const data = yield connect({
277
278
  domain,
278
279
  nonce: dynamicNonce,
279
- redirectUrl,
280
+ redirectUrl: redirectUrlOverride !== null && redirectUrlOverride !== void 0 ? redirectUrlOverride : redirectUrl,
280
281
  siweUri: PlatformService.getOrigin(),
281
282
  });
282
283
  if (!(data === null || data === void 0 ? void 0 : data.url) || !(data === null || data === void 0 ? void 0 : data.channelToken)) {