@swype-org/react-sdk 0.1.260 → 0.1.261

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/dist/index.cjs CHANGED
@@ -2442,13 +2442,37 @@ function applyAction(state, action) {
2442
2442
  selectedProviderId: action.providerId ?? state.selectedProviderId,
2443
2443
  error: action.error ?? null
2444
2444
  };
2445
- case "MOBILE_RESUME_SUCCESS":
2445
+ case "MOBILE_RESUME_SUCCESS": {
2446
+ const guestResume = action.guestCheckoutResume;
2446
2447
  return {
2447
2448
  ...state,
2448
2449
  transfer: action.transfer,
2449
2450
  error: null,
2450
2451
  mobileFlow: false,
2451
- deeplinkUri: null
2452
+ deeplinkUri: null,
2453
+ ...guestResume ? {
2454
+ isGuestFlow: true,
2455
+ guestSessionToken: guestResume.guestSessionToken,
2456
+ guestTransferId: action.transfer.id
2457
+ } : {}
2458
+ };
2459
+ }
2460
+ case "GUEST_PREAUTH_RESUME_WITH_TRANSFER":
2461
+ return {
2462
+ ...state,
2463
+ transfer: action.transfer,
2464
+ error: null,
2465
+ mobileFlow: false,
2466
+ deeplinkUri: null,
2467
+ isGuestFlow: true,
2468
+ guestSessionToken: action.guestSessionToken,
2469
+ guestTransferId: action.transfer.id,
2470
+ guestPreauthAccountId: action.guestPreauthAccountId,
2471
+ guestPreauthSessionId: action.guestPreauthSessionId ?? state.guestPreauthSessionId,
2472
+ selectedProviderId: action.selectedProviderId,
2473
+ selectedAccountId: action.guestPreauthAccountId,
2474
+ selectedWalletId: null,
2475
+ selectedTokenSymbol: null
2452
2476
  };
2453
2477
  case "MOBILE_RESUME_FAILED":
2454
2478
  return {
@@ -8242,6 +8266,38 @@ function usePasskeyCheckEffect(deps) {
8242
8266
  if (cancelled) return;
8243
8267
  if (existingTransfer.status === "COMPLETED") {
8244
8268
  clearMobileFlowState();
8269
+ if (persisted.isGuestPreauth && persisted.guestSessionToken) {
8270
+ let guestLookup = null;
8271
+ try {
8272
+ guestLookup = await fetchGuestAccount(
8273
+ apiBaseUrl,
8274
+ persisted.guestSessionToken
8275
+ );
8276
+ } catch {
8277
+ dispatch({ type: "MOBILE_RESUME_SUCCESS", transfer: existingTransfer });
8278
+ onCompleteRef.current?.(existingTransfer);
8279
+ return;
8280
+ }
8281
+ if (guestLookup == null) {
8282
+ dispatch({
8283
+ type: "MOBILE_RESUME_SUCCESS",
8284
+ transfer: existingTransfer,
8285
+ guestCheckoutResume: { guestSessionToken: persisted.guestSessionToken }
8286
+ });
8287
+ onCompleteRef.current?.(existingTransfer);
8288
+ return;
8289
+ }
8290
+ dispatch({
8291
+ type: "GUEST_PREAUTH_RESUME_WITH_TRANSFER",
8292
+ transfer: existingTransfer,
8293
+ guestSessionToken: persisted.guestSessionToken,
8294
+ guestPreauthAccountId: guestLookup.accountId,
8295
+ guestPreauthSessionId: persisted.sessionId ?? null,
8296
+ selectedProviderId: persisted.providerId
8297
+ });
8298
+ onCompleteRef.current?.(existingTransfer);
8299
+ return;
8300
+ }
8245
8301
  dispatch({ type: "MOBILE_RESUME_SUCCESS", transfer: existingTransfer });
8246
8302
  onCompleteRef.current?.(existingTransfer);
8247
8303
  return;
@@ -8597,9 +8653,11 @@ function useMobilePollingEffect(deps) {
8597
8653
  reloadAccounts,
8598
8654
  apiBaseUrl
8599
8655
  } = deps;
8600
- const { getAccessToken } = reactAuth.usePrivy();
8656
+ const { getAccessToken, authenticated: privyAuthenticated } = reactAuth.usePrivy();
8601
8657
  const getAccessTokenRef = react.useRef(getAccessToken);
8602
8658
  getAccessTokenRef.current = getAccessToken;
8659
+ const privyAuthenticatedRef = react.useRef(privyAuthenticated);
8660
+ privyAuthenticatedRef.current = privyAuthenticated;
8603
8661
  const handleAuthorizedMobileReturnRef = react.useRef(deps.handleAuthorizedMobileReturn);
8604
8662
  handleAuthorizedMobileReturnRef.current = deps.handleAuthorizedMobileReturn;
8605
8663
  react.useEffect(() => {
@@ -8632,6 +8690,34 @@ function useMobilePollingEffect(deps) {
8632
8690
  await reloadAccounts();
8633
8691
  } catch {
8634
8692
  }
8693
+ const guestToken = state.guestSessionToken;
8694
+ const preauthAccountId = state.guestPreauthAccountId;
8695
+ const preauthSessionId = state.guestPreauthSessionId;
8696
+ if (!guestToken) {
8697
+ dispatch({ type: "MOBILE_SETUP_COMPLETE" });
8698
+ return;
8699
+ }
8700
+ let guestLookup = null;
8701
+ try {
8702
+ guestLookup = await fetchGuestAccount(apiBaseUrl, guestToken);
8703
+ } catch {
8704
+ dispatch({ type: "MOBILE_SETUP_COMPLETE" });
8705
+ return;
8706
+ }
8707
+ if (guestLookup == null) {
8708
+ dispatch({ type: "MOBILE_SETUP_COMPLETE" });
8709
+ return;
8710
+ }
8711
+ if (guestLookup.accountId !== preauthAccountId) {
8712
+ dispatch({
8713
+ type: "GUEST_PREAUTH_DETECTED",
8714
+ accountId: guestLookup.accountId,
8715
+ sessionId: preauthSessionId ?? void 0
8716
+ });
8717
+ }
8718
+ if (!privyAuthenticatedRef.current) {
8719
+ dispatch({ type: "REQUEST_LOGIN" });
8720
+ }
8635
8721
  dispatch({ type: "MOBILE_SETUP_COMPLETE" });
8636
8722
  };
8637
8723
  const pollGuestPreauthSession = async () => {
@@ -8666,6 +8752,8 @@ function useMobilePollingEffect(deps) {
8666
8752
  state.activeCredentialId,
8667
8753
  state.guestPreauthSessionId,
8668
8754
  state.isGuestFlow,
8755
+ state.guestSessionToken,
8756
+ state.guestPreauthAccountId,
8669
8757
  apiBaseUrl,
8670
8758
  reloadAccounts,
8671
8759
  dispatch,
@@ -8833,11 +8921,38 @@ function useGuestPreauthMobileRestoreEffect(deps) {
8833
8921
  ]);
8834
8922
  if (cancelled) return;
8835
8923
  const mobileOpen = session.status !== "AUTHORIZED";
8924
+ let guestLookup = null;
8925
+ if (!mobileOpen) {
8926
+ try {
8927
+ guestLookup = await fetchGuestAccount(
8928
+ apiBaseUrl,
8929
+ persisted.guestSessionToken
8930
+ );
8931
+ } catch {
8932
+ dispatch({
8933
+ type: "MOBILE_RESUME_SUCCESS",
8934
+ transfer,
8935
+ guestCheckoutResume: { guestSessionToken: persisted.guestSessionToken }
8936
+ });
8937
+ clearMobileFlowState();
8938
+ return;
8939
+ }
8940
+ if (guestLookup == null) {
8941
+ dispatch({
8942
+ type: "MOBILE_RESUME_SUCCESS",
8943
+ transfer,
8944
+ guestCheckoutResume: { guestSessionToken: persisted.guestSessionToken }
8945
+ });
8946
+ clearMobileFlowState();
8947
+ return;
8948
+ }
8949
+ }
8950
+ const guestPreauthAccountId = !mobileOpen && guestLookup != null ? guestLookup.accountId : persisted.accountId;
8836
8951
  dispatch({
8837
8952
  type: "RESTORE_GUEST_PREAUTH_MOBILE",
8838
8953
  transfer,
8839
8954
  guestSessionToken: persisted.guestSessionToken,
8840
- guestPreauthAccountId: persisted.accountId,
8955
+ guestPreauthAccountId,
8841
8956
  guestPreauthSessionId: persisted.sessionId,
8842
8957
  selectedProviderId: persisted.providerId,
8843
8958
  deeplinkUri: persisted.deeplinkUri,
@@ -8845,7 +8960,7 @@ function useGuestPreauthMobileRestoreEffect(deps) {
8845
8960
  });
8846
8961
  if (mobileOpen) {
8847
8962
  mobileSetupFlowRef.current = true;
8848
- setupAccountIdRef.current = persisted.accountId;
8963
+ setupAccountIdRef.current = persisted.accountId ?? null;
8849
8964
  } else {
8850
8965
  clearMobileFlowState();
8851
8966
  }