@dynamic-labs-sdk/react-hooks 1.17.1 → 1.18.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.
Files changed (32) hide show
  1. package/dist/exports/index.d.ts +5 -0
  2. package/dist/exports/index.d.ts.map +1 -1
  3. package/dist/hooks/wrappers/functions/useGetUserSocialAccounts/useGetUserSocialAccounts.d.ts +3 -1
  4. package/dist/hooks/wrappers/functions/useGetUserSocialAccounts/useGetUserSocialAccounts.d.ts.map +1 -1
  5. package/dist/hooks/wrappers/functions/useGetWalletProviderDataByKey/index.d.ts +2 -0
  6. package/dist/hooks/wrappers/functions/useGetWalletProviderDataByKey/index.d.ts.map +1 -0
  7. package/dist/hooks/wrappers/functions/useGetWalletProviderDataByKey/useGetWalletProviderDataByKey.d.ts +37 -0
  8. package/dist/hooks/wrappers/functions/useGetWalletProviderDataByKey/useGetWalletProviderDataByKey.d.ts.map +1 -0
  9. package/dist/hooks/wrappers/functions/useIsDeviceRegistrationRequired/index.d.ts +2 -0
  10. package/dist/hooks/wrappers/functions/useIsDeviceRegistrationRequired/index.d.ts.map +1 -0
  11. package/dist/hooks/wrappers/functions/useIsDeviceRegistrationRequired/useIsDeviceRegistrationRequired.d.ts +8 -0
  12. package/dist/hooks/wrappers/functions/useIsDeviceRegistrationRequired/useIsDeviceRegistrationRequired.d.ts.map +1 -0
  13. package/dist/hooks/wrappers/functions/useIsPendingRecoveryCodesAcknowledgment/index.d.ts +2 -0
  14. package/dist/hooks/wrappers/functions/useIsPendingRecoveryCodesAcknowledgment/index.d.ts.map +1 -0
  15. package/dist/hooks/wrappers/functions/useIsPendingRecoveryCodesAcknowledgment/useIsPendingRecoveryCodesAcknowledgment.d.ts +9 -0
  16. package/dist/hooks/wrappers/functions/useIsPendingRecoveryCodesAcknowledgment/useIsPendingRecoveryCodesAcknowledgment.d.ts.map +1 -0
  17. package/dist/hooks/wrappers/functions/useIsUserMissingMfaAuth/index.d.ts +2 -0
  18. package/dist/hooks/wrappers/functions/useIsUserMissingMfaAuth/index.d.ts.map +1 -0
  19. package/dist/hooks/wrappers/functions/useIsUserMissingMfaAuth/useIsUserMissingMfaAuth.d.ts +8 -0
  20. package/dist/hooks/wrappers/functions/useIsUserMissingMfaAuth/useIsUserMissingMfaAuth.d.ts.map +1 -0
  21. package/dist/hooks/wrappers/functions/useIsUserOnboardingComplete/index.d.ts +2 -0
  22. package/dist/hooks/wrappers/functions/useIsUserOnboardingComplete/index.d.ts.map +1 -0
  23. package/dist/hooks/wrappers/functions/useIsUserOnboardingComplete/useIsUserOnboardingComplete.d.ts +9 -0
  24. package/dist/hooks/wrappers/functions/useIsUserOnboardingComplete/useIsUserOnboardingComplete.d.ts.map +1 -0
  25. package/dist/hooks/wrappers/functions/useOnWalletProviderEvent/useOnWalletProviderEvent.d.ts +4 -1
  26. package/dist/hooks/wrappers/functions/useOnWalletProviderEvent/useOnWalletProviderEvent.d.ts.map +1 -1
  27. package/dist/index.cjs +124 -11
  28. package/dist/index.cjs.map +1 -1
  29. package/dist/index.esm.js +121 -13
  30. package/dist/index.esm.js.map +1 -1
  31. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  32. package/package.json +4 -4
package/dist/index.esm.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
2
- import { BaseError, acknowledgeRecoveryCodes, addCoinbaseOnrampOrderEventListener, addNetwork, assertWalletAccountSigningAvailability, attachFlowSource, authenticateMfaRecoveryCode, authenticatePasskeyMFA, authenticateTotpMfaDevice, broadcastFlow, cancelFlow, checkStepUpAuth, completeDeviceRegistration, completeSocialRedirect, confirmTransaction, connectAndVerifyWithWalletProvider, connectWithWalletProvider, createCoinbaseOnrampOrder, createCryptoDotComPayment, createKrakenExchangeTransfer, createNewMfaRecoveryCodes, deleteMfaDevice, deletePasskey, deleteUser, executeSwapTransaction, getActiveNetworkData, getActiveNetworkId, getAvailableWalletProvidersData, getBalanceForAddress, getCoinbaseBuyUrl, getConnectedAddresses, getFlow, getFlowQuote, getGoogleDriveBackupReadiness, getKrakenAccounts, getKrakenWhitelistedAddresses, getMfaDevices, getMfaMethods, getMfaRecoveryCodes, getMoonPayCurrencies, getMoonPayUrl, getMultichainTokenBalances, getNativeBalance, getPasskeys, getRegisteredDevices, getSwapQuote, getSwapStatus, getTokenBalances, getTransactionHistory, getUserSocialAccounts, getWalletAccounts, getWalletConnectCatalog, getWalletConnectCatalogWalletByWalletProviderKey, getWalletOptionsCatalogue, isMfaRequiredForAction, logout, onEvent, onWalletProviderEvent, onceEvent, prepareFlowSigning, proveWalletAccountOwnership, refreshAuth, registerPasskey, registerTotpMfaDevice, removeWalletAccount, requestExternalAuthElevatedToken, revokeAllRegisteredDevices, revokeRegisteredDevice, sendEmailOTP, sendSmsOTP, setDefaultMfaDevice, signInWithExternalJwt, signInWithPasskey, signInWithSocialPopUp, signInWithSocialRedirect, signMessage, submitFlowTransaction, switchActiveNetwork, transferAmount, transferWalletAccount, unlinkSocialAccount, updateUser, verifyOTP, verifyWalletAccount, waitForClientInitialized } from "@dynamic-labs-sdk/client";
2
+ import { BaseError, acknowledgeRecoveryCodes, addCoinbaseOnrampOrderEventListener, addNetwork, assertWalletAccountSigningAvailability, attachFlowSource, authenticateMfaRecoveryCode, authenticatePasskeyMFA, authenticateTotpMfaDevice, broadcastFlow, cancelFlow, checkStepUpAuth, completeDeviceRegistration, completeSocialRedirect, confirmTransaction, connectAndVerifyWithWalletProvider, connectWithWalletProvider, createCoinbaseOnrampOrder, createCryptoDotComPayment, createKrakenExchangeTransfer, createNewMfaRecoveryCodes, deleteMfaDevice, deletePasskey, deleteUser, executeSwapTransaction, getActiveNetworkData, getActiveNetworkId, getAvailableWalletProvidersData, getBalanceForAddress, getCoinbaseBuyUrl, getConnectedAddresses, getFlow, getFlowQuote, getGoogleDriveBackupReadiness, getKrakenAccounts, getKrakenWhitelistedAddresses, getMfaDevices, getMfaMethods, getMfaRecoveryCodes, getMoonPayCurrencies, getMoonPayUrl, getMultichainTokenBalances, getNativeBalance, getPasskeys, getRegisteredDevices, getSwapQuote, getSwapStatus, getTokenBalances, getTransactionHistory, getUserSocialAccounts, getWalletAccounts, getWalletConnectCatalog, getWalletConnectCatalogWalletByWalletProviderKey, getWalletOptionsCatalogue, getWalletProviderDataByKey, isDeviceRegistrationRequired, isMfaRequiredForAction, isPendingRecoveryCodesAcknowledgment, isUserMissingMfaAuth, isUserOnboardingComplete, logout, onEvent, onWalletProviderEvent, onceEvent, prepareFlowSigning, proveWalletAccountOwnership, refreshAuth, registerPasskey, registerTotpMfaDevice, removeWalletAccount, requestExternalAuthElevatedToken, revokeAllRegisteredDevices, revokeRegisteredDevice, sendEmailOTP, sendSmsOTP, setDefaultMfaDevice, signInWithExternalJwt, signInWithPasskey, signInWithSocialPopUp, signInWithSocialRedirect, signMessage, submitFlowTransaction, switchActiveNetwork, transferAmount, transferWalletAccount, unlinkSocialAccount, updateUser, verifyOTP, verifyWalletAccount, waitForClientInitialized } from "@dynamic-labs-sdk/client";
3
3
  import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
4
4
  import { createContext, useContext, useEffect, useMemo, useRef } from "react";
5
5
  import { jsx } from "react/jsx-runtime";
@@ -7,7 +7,7 @@ import { getCore } from "@dynamic-labs-sdk/client/core";
7
7
 
8
8
  //#region package.json
9
9
  var name = "@dynamic-labs-sdk/react-hooks";
10
- var version = "1.17.1";
10
+ var version = "1.18.0";
11
11
 
12
12
  //#endregion
13
13
  //#region src/modules/DynamicContext/DynamicContext.ts
@@ -176,7 +176,10 @@ const useBaseQuery = ({ enabled = true, middlewares = EMPTY_MIDDLEWARES, queryFn
176
176
  * Wraps `onWalletProviderEvent` from `@dynamic-labs-sdk/client`. Uses a ref to
177
177
  * always call the latest callback without re-subscribing, and cleans up the
178
178
  * subscription on unmount or when `event` / `walletProviderKey` change. When
179
- * `walletProviderKey` is `undefined` the hook subscribes to nothing.
179
+ * `walletProviderKey` is `undefined` the hook subscribes to nothing. When the
180
+ * provider cannot be subscribed to (not registered on this client, or it does
181
+ * not expose `events`), the hook logs and subscribes to nothing rather than
182
+ * throwing — an effect throw would unmount the entire app.
180
183
  *
181
184
  * @example
182
185
  * ```tsx
@@ -193,13 +196,22 @@ const useOnWalletProviderEvent = ({ callback, event, walletProviderKey }) => {
193
196
  callbackRef.current = callback;
194
197
  useEffect(() => {
195
198
  if (walletProviderKey === void 0) return;
196
- return onWalletProviderEvent({
197
- callback: ((...args) => {
198
- callbackRef.current(...args);
199
- }),
200
- event,
201
- walletProviderKey
202
- }, client);
199
+ try {
200
+ return onWalletProviderEvent({
201
+ callback: ((...args) => {
202
+ callbackRef.current(...args);
203
+ }),
204
+ event,
205
+ walletProviderKey
206
+ }, client);
207
+ } catch (error) {
208
+ getCore(client).logger.debug("[useOnWalletProviderEvent] failed to subscribe to wallet provider event", {
209
+ error,
210
+ event,
211
+ walletProviderKey
212
+ });
213
+ return;
214
+ }
203
215
  }, [
204
216
  event,
205
217
  walletProviderKey,
@@ -2090,13 +2102,15 @@ const useUpdateUser = ({ mutateParams } = {}) => useBaseMutation({
2090
2102
  /**
2091
2103
  * Returns the current user's linked social accounts.
2092
2104
  *
2093
- * Re-renders when the user changes.
2105
+ * Re-renders when the user changes. Resolves to an empty list while no user is
2106
+ * authenticated — the guard is required because the selector runs synchronously
2107
+ * and `getUserSocialAccounts` throws (`assertDefined`) when there is no user.
2094
2108
  */
2095
2109
  const useGetUserSocialAccounts = () => useBaseState({
2096
2110
  defaultValue: [],
2097
2111
  event: "userChanged",
2098
2112
  queryKey: ["useGetUserSocialAccounts"],
2099
- selector: (client) => getUserSocialAccounts(client)
2113
+ selector: (client) => client.user ? getUserSocialAccounts(client) : []
2100
2114
  });
2101
2115
 
2102
2116
  //#endregion
@@ -2247,6 +2261,100 @@ const useGetWalletOptionsCatalogue = ({ queryParams, ...args } = {}) => useBaseQ
2247
2261
  }
2248
2262
  });
2249
2263
 
2264
+ //#endregion
2265
+ //#region src/hooks/wrappers/functions/useGetWalletProviderDataByKey/useGetWalletProviderDataByKey.ts
2266
+ /**
2267
+ * Wraps `getWalletProviderDataByKey` from `@dynamic-labs-sdk/client`. Returns
2268
+ * the display/connection data for a single wallet provider, by key.
2269
+ *
2270
+ * The underlying data is read from the in-memory wallet provider registry,
2271
+ * which EIP-6963 wallets fill asynchronously after mount. The registry emits
2272
+ * `walletProviderChanged` on register / priority update, so wiring it keeps the
2273
+ * provider data in sync without consumers pairing the hook with a manual
2274
+ * `useOnEvent` + `refetch` listener.
2275
+ *
2276
+ * `walletProviderUnregistered` is intentionally not wired here: this hook reads
2277
+ * a single key, and once that key is removed there is no replacement data to
2278
+ * fetch — refetching would only make `getWalletProviderDataByKey` throw
2279
+ * `NoWalletProviderFoundError`. Skipping it keeps the last-known data instead of
2280
+ * forcing the query into an error state.
2281
+ *
2282
+ * @example
2283
+ * ```tsx
2284
+ * const { data: walletProviderData } = useGetWalletProviderDataByKey({
2285
+ * walletProviderKey,
2286
+ * });
2287
+ * ```
2288
+ */
2289
+ const useGetWalletProviderDataByKey = ({ queryParams, ...args }) => useBaseQuery({
2290
+ middlewares: [invalidateOnEvent({ event: "walletProviderChanged" })],
2291
+ queryFn: (client) => Promise.resolve(getWalletProviderDataByKey(args, client)),
2292
+ queryKey: ["useGetWalletProviderDataByKey", args],
2293
+ queryParams
2294
+ });
2295
+
2296
+ //#endregion
2297
+ //#region src/hooks/wrappers/functions/useIsDeviceRegistrationRequired/useIsDeviceRegistrationRequired.ts
2298
+ /**
2299
+ * Returns whether the current user still needs to register this device.
2300
+ *
2301
+ * Re-renders when the user changes (login, logout, completing device
2302
+ * registration). Resolves to `false` while no user is authenticated.
2303
+ */
2304
+ const useIsDeviceRegistrationRequired = () => useBaseState({
2305
+ defaultValue: false,
2306
+ event: "userChanged",
2307
+ queryKey: ["useIsDeviceRegistrationRequired"],
2308
+ selector: (client) => client.user ? isDeviceRegistrationRequired(client.user) : false
2309
+ });
2310
+
2311
+ //#endregion
2312
+ //#region src/hooks/wrappers/functions/useIsUserMissingMfaAuth/useIsUserMissingMfaAuth.ts
2313
+ /**
2314
+ * Returns whether the current user still needs to complete an MFA challenge.
2315
+ *
2316
+ * Re-renders when the user changes (login, logout, completing the MFA
2317
+ * challenge). Resolves to `false` while no user is authenticated.
2318
+ */
2319
+ const useIsUserMissingMfaAuth = () => useBaseState({
2320
+ defaultValue: false,
2321
+ event: "userChanged",
2322
+ queryKey: ["useIsUserMissingMfaAuth"],
2323
+ selector: (client) => client.user ? isUserMissingMfaAuth(client) : false
2324
+ });
2325
+
2326
+ //#endregion
2327
+ //#region src/hooks/wrappers/functions/useIsPendingRecoveryCodesAcknowledgment/useIsPendingRecoveryCodesAcknowledgment.ts
2328
+ /**
2329
+ * Returns whether the current user still needs to acknowledge their MFA
2330
+ * recovery codes.
2331
+ *
2332
+ * Re-renders when the user changes (login, logout, acknowledging the recovery
2333
+ * codes). Resolves to `false` while no user is authenticated.
2334
+ */
2335
+ const useIsPendingRecoveryCodesAcknowledgment = () => useBaseState({
2336
+ defaultValue: false,
2337
+ event: "userChanged",
2338
+ queryKey: ["useIsPendingRecoveryCodesAcknowledgment"],
2339
+ selector: (client) => client.user ? isPendingRecoveryCodesAcknowledgment(client) : false
2340
+ });
2341
+
2342
+ //#endregion
2343
+ //#region src/hooks/wrappers/functions/useIsUserOnboardingComplete/useIsUserOnboardingComplete.ts
2344
+ /**
2345
+ * Returns whether the current user has completed every onboarding requirement
2346
+ * (KYC fields, MFA, recovery codes acknowledgment, device registration).
2347
+ *
2348
+ * Re-renders when the user changes (login, logout, completing any onboarding
2349
+ * step). Resolves to `false` while no user is authenticated.
2350
+ */
2351
+ const useIsUserOnboardingComplete = () => useBaseState({
2352
+ defaultValue: false,
2353
+ event: "userChanged",
2354
+ queryKey: ["useIsUserOnboardingComplete"],
2355
+ selector: (client) => client.user ? isUserOnboardingComplete(client) : false
2356
+ });
2357
+
2250
2358
  //#endregion
2251
2359
  //#region src/hooks/wrappers/state/useInitStatus/useInitStatus.ts
2252
2360
  /**
@@ -2323,5 +2431,5 @@ const useUser = () => useBaseState({
2323
2431
  assertPackageVersion(name, version);
2324
2432
 
2325
2433
  //#endregion
2326
- export { DynamicProvider, useAcknowledgeRecoveryCodes, useAddCoinbaseOnrampOrderEventListener, useAddNetwork, useAssertWalletAccountSigningAvailability, useAttachFlowSource, useAuthenticateMfaRecoveryCode, useAuthenticatePasskeyMFA, useAuthenticateTotpMfaDevice, useBroadcastFlow, useCancelFlow, useCheckStepUpAuth, useCompleteDeviceRegistration, useCompleteSocialRedirect, useConfirmTransaction, useConnectAndVerifyWithWalletProvider, useConnectWithWalletProvider, useCreateCoinbaseOnrampOrder, useCreateCryptoDotComPayment, useCreateKrakenExchangeTransfer, useCreateNewMfaRecoveryCodes, useDeleteMfaDevice, useDeletePasskey, useDeleteUser, useDynamicClient, useExecuteSwapTransaction, useGetActiveNetworkData, useGetActiveNetworkId, useGetAvailableWalletProvidersData, useGetBalanceForAddress, useGetCoinbaseBuyUrl, useGetConnectedAddresses, useGetFlow, useGetFlowQuote, useGetGoogleDriveBackupReadiness, useGetKrakenAccounts, useGetKrakenWhitelistedAddresses, useGetMfaDevices, useGetMfaMethods, useGetMfaRecoveryCodes, useGetMoonPayCurrencies, useGetMoonPayUrl, useGetMultichainTokenBalances, useGetNativeBalance, useGetPasskeys, useGetRegisteredDevices, useGetSwapQuote, useGetSwapStatus, useGetTokenBalances, useGetTransactionHistory, useGetUserSocialAccounts, useGetWalletAccounts, useGetWalletConnectCatalog, useGetWalletConnectCatalogWalletByWalletProviderKey, useGetWalletOptionsCatalogue, useInitStatus, useIsMfaRequiredForAction, useLogout, useOnEvent, useOnWalletProviderEvent, useOnceEvent, usePrepareFlowSigning, useProveWalletAccountOwnership, useRefreshAuth, useRegisterPasskey, useRegisterTotpMfaDevice, useRemoveWalletAccount, useRequestExternalAuthElevatedToken, useRevokeAllRegisteredDevices, useRevokeRegisteredDevice, useSendEmailOTP, useSendSmsOTP, useSessionExpiresAt, useSetDefaultMfaDevice, useSignInWithExternalJwt, useSignInWithPasskey, useSignInWithSocialPopUp, useSignInWithSocialRedirect, useSignMessage, useSubmitFlowTransaction, useSwitchActiveNetwork, useTransferAmount, useTransferWalletAccount, useUnlinkSocialAccount, useUpdateUser, useUser, useVerifyOTP, useVerifyWalletAccount };
2434
+ export { DynamicProvider, useAcknowledgeRecoveryCodes, useAddCoinbaseOnrampOrderEventListener, useAddNetwork, useAssertWalletAccountSigningAvailability, useAttachFlowSource, useAuthenticateMfaRecoveryCode, useAuthenticatePasskeyMFA, useAuthenticateTotpMfaDevice, useBroadcastFlow, useCancelFlow, useCheckStepUpAuth, useCompleteDeviceRegistration, useCompleteSocialRedirect, useConfirmTransaction, useConnectAndVerifyWithWalletProvider, useConnectWithWalletProvider, useCreateCoinbaseOnrampOrder, useCreateCryptoDotComPayment, useCreateKrakenExchangeTransfer, useCreateNewMfaRecoveryCodes, useDeleteMfaDevice, useDeletePasskey, useDeleteUser, useDynamicClient, useExecuteSwapTransaction, useGetActiveNetworkData, useGetActiveNetworkId, useGetAvailableWalletProvidersData, useGetBalanceForAddress, useGetCoinbaseBuyUrl, useGetConnectedAddresses, useGetFlow, useGetFlowQuote, useGetGoogleDriveBackupReadiness, useGetKrakenAccounts, useGetKrakenWhitelistedAddresses, useGetMfaDevices, useGetMfaMethods, useGetMfaRecoveryCodes, useGetMoonPayCurrencies, useGetMoonPayUrl, useGetMultichainTokenBalances, useGetNativeBalance, useGetPasskeys, useGetRegisteredDevices, useGetSwapQuote, useGetSwapStatus, useGetTokenBalances, useGetTransactionHistory, useGetUserSocialAccounts, useGetWalletAccounts, useGetWalletConnectCatalog, useGetWalletConnectCatalogWalletByWalletProviderKey, useGetWalletOptionsCatalogue, useGetWalletProviderDataByKey, useInitStatus, useIsDeviceRegistrationRequired, useIsMfaRequiredForAction, useIsPendingRecoveryCodesAcknowledgment, useIsUserMissingMfaAuth, useIsUserOnboardingComplete, useLogout, useOnEvent, useOnWalletProviderEvent, useOnceEvent, usePrepareFlowSigning, useProveWalletAccountOwnership, useRefreshAuth, useRegisterPasskey, useRegisterTotpMfaDevice, useRemoveWalletAccount, useRequestExternalAuthElevatedToken, useRevokeAllRegisteredDevices, useRevokeRegisteredDevice, useSendEmailOTP, useSendSmsOTP, useSessionExpiresAt, useSetDefaultMfaDevice, useSignInWithExternalJwt, useSignInWithPasskey, useSignInWithSocialPopUp, useSignInWithSocialRedirect, useSignMessage, useSubmitFlowTransaction, useSwitchActiveNetwork, useTransferAmount, useTransferWalletAccount, useUnlinkSocialAccount, useUpdateUser, useUser, useVerifyOTP, useVerifyWalletAccount };
2327
2435
  //# sourceMappingURL=index.esm.js.map