@rozoai/intent-pay 0.1.1-alpha.5 → 0.1.1-beta.10
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/build/components/DaimoPayButton/types.d.ts +6 -6
- package/build/hooks/usePaymentState.d.ts +3 -4
- package/build/package.json.js +6 -6
- package/build/payment/paymentEffects.d.ts +2 -1
- package/build/payment/paymentFsm.d.ts +5 -2
- package/build/payment/paymentStore.d.ts +4 -2
- package/build/provider/DaimoPayProvider.d.ts +3 -0
- package/build/provider/PayContext.d.ts +4 -1
- package/build/provider/PaymentProvider.d.ts +4 -2
- package/build/src/components/DaimoPayButton/index.js +38 -88
- package/build/src/components/DaimoPayButton/index.js.map +1 -1
- package/build/src/components/DaimoPayModal/index.js +3 -0
- package/build/src/components/DaimoPayModal/index.js.map +1 -1
- package/build/src/components/Pages/Confirmation/index.js +1 -1
- package/build/src/components/Pages/Confirmation/index.js.map +1 -1
- package/build/src/components/Pages/PayWithToken/index.js +8 -2
- package/build/src/components/Pages/PayWithToken/index.js.map +1 -1
- package/build/src/components/Pages/SelectToken/index.js +10 -47
- package/build/src/components/Pages/SelectToken/index.js.map +1 -1
- package/build/src/components/Pages/Solana/ConnectorSolana/index.js +3 -8
- package/build/src/components/Pages/Solana/ConnectorSolana/index.js.map +1 -1
- package/build/src/components/Pages/Solana/PayWithSolanaToken/index.js +97 -70
- package/build/src/components/Pages/Solana/PayWithSolanaToken/index.js.map +1 -1
- package/build/src/components/Pages/Stellar/PayWithStellarToken/index.js +28 -13
- package/build/src/components/Pages/Stellar/PayWithStellarToken/index.js.map +1 -1
- package/build/src/components/Pages/WaitingDepositAddress/index.js +5 -3
- package/build/src/components/Pages/WaitingDepositAddress/index.js.map +1 -1
- package/build/src/hooks/usePaymentState.js +145 -59
- package/build/src/hooks/usePaymentState.js.map +1 -1
- package/build/src/hooks/useSolanaPaymentOptions.js +0 -15
- package/build/src/hooks/useSolanaPaymentOptions.js.map +1 -1
- package/build/src/payment/paymentEffects.js +42 -20
- package/build/src/payment/paymentEffects.js.map +1 -1
- package/build/src/payment/paymentFsm.js +4 -0
- package/build/src/payment/paymentFsm.js.map +1 -1
- package/build/src/payment/paymentStore.js +5 -2
- package/build/src/payment/paymentStore.js.map +1 -1
- package/build/src/provider/DaimoPayProvider.js +5 -2
- package/build/src/provider/DaimoPayProvider.js.map +1 -1
- package/build/src/provider/PayContext.js.map +1 -1
- package/build/src/provider/PaymentProvider.js +11 -5
- package/build/src/provider/PaymentProvider.js.map +1 -1
- package/package.json +6 -6
|
@@ -23,18 +23,14 @@ function SelectToken() {
|
|
|
23
23
|
const { tokenMode, connectedWalletOnly } = paymentState;
|
|
24
24
|
const { isConnected: isEvmConnected } = useAccount();
|
|
25
25
|
const { isConnected: isStellarConnected, connector } = useStellar();
|
|
26
|
-
const { connected: isSolConnected
|
|
27
|
-
|
|
28
|
-
const isSolanaReady = useMemo(() => isSolConnected ||
|
|
29
|
-
solPublicKey != null ||
|
|
30
|
-
paymentState.solanaPubKey != null, [isSolConnected, solPublicKey, paymentState.solanaPubKey]);
|
|
31
|
-
const isConnected = useMemo(() => isEvmConnected || isSolanaReady || isStellarConnected, [isEvmConnected, isSolanaReady, isStellarConnected]);
|
|
26
|
+
const { connected: isSolConnected } = useWallet();
|
|
27
|
+
const isConnected = useMemo(() => isEvmConnected || isSolConnected || isStellarConnected, [isEvmConnected, isSolConnected, isStellarConnected]);
|
|
32
28
|
// Detect if multiple networks are connected (e.g., Phantom connecting both EVM and Solana)
|
|
33
29
|
const connectedNetworksCount = useMemo(() => {
|
|
34
30
|
return ((isEvmConnected ? 1 : 0) +
|
|
35
|
-
(
|
|
31
|
+
(isSolConnected ? 1 : 0) +
|
|
36
32
|
(isStellarConnected ? 1 : 0));
|
|
37
|
-
}, [isEvmConnected,
|
|
33
|
+
}, [isEvmConnected, isSolConnected, isStellarConnected]);
|
|
38
34
|
// If multiple networks are connected, override tokenMode to "all" to show all available tokens
|
|
39
35
|
const effectiveTokenMode = useMemo(() => {
|
|
40
36
|
return connectedNetworksCount > 1 ? "all" : tokenMode;
|
|
@@ -46,61 +42,28 @@ function SelectToken() {
|
|
|
46
42
|
return false;
|
|
47
43
|
// Check if there's a connected wallet that matches the payment options
|
|
48
44
|
const hasMatchingConnectedWallet = (effectiveTokenMode === "evm" && isEvmConnected) ||
|
|
49
|
-
(effectiveTokenMode === "solana" &&
|
|
45
|
+
(effectiveTokenMode === "solana" && isSolConnected) ||
|
|
50
46
|
(effectiveTokenMode === "stellar" && isStellarConnected && connector) ||
|
|
51
47
|
(effectiveTokenMode === "all" &&
|
|
52
|
-
(isEvmConnected ||
|
|
48
|
+
(isEvmConnected || isSolConnected || isStellarConnected));
|
|
53
49
|
return !hasMatchingConnectedWallet;
|
|
54
50
|
}, [
|
|
55
51
|
isEvmConnected,
|
|
56
|
-
|
|
52
|
+
isSolConnected,
|
|
57
53
|
isStellarConnected,
|
|
58
54
|
connectedWalletOnly,
|
|
59
55
|
effectiveTokenMode,
|
|
60
56
|
connector,
|
|
61
57
|
]);
|
|
62
|
-
// Check if we're waiting for Solana publicKey to become available
|
|
63
|
-
const waitingForSolanaKey = useMemo(() => {
|
|
64
|
-
return ((effectiveTokenMode === "solana" || effectiveTokenMode === "all") &&
|
|
65
|
-
isSolConnected &&
|
|
66
|
-
!solPublicKey);
|
|
67
|
-
}, [effectiveTokenMode, isSolConnected, solPublicKey]);
|
|
68
|
-
// Check if we're still loading Solana data (publicKey exists but options not loaded yet)
|
|
69
|
-
const waitingForSolanaData = useMemo(() => {
|
|
70
|
-
return ((effectiveTokenMode === "solana" || effectiveTokenMode === "all") &&
|
|
71
|
-
isSolanaReady &&
|
|
72
|
-
optionsList.length === 0 &&
|
|
73
|
-
paymentState.solanaPaymentOptions.isLoading);
|
|
74
|
-
}, [
|
|
75
|
-
effectiveTokenMode,
|
|
76
|
-
isSolanaReady,
|
|
77
|
-
optionsList.length,
|
|
78
|
-
paymentState.solanaPaymentOptions.isLoading,
|
|
79
|
-
]);
|
|
80
|
-
// Combined waiting state for better UX
|
|
81
|
-
const isWaitingForSolana = waitingForSolanaKey || waitingForSolanaData;
|
|
82
58
|
// Prevent showing "Insufficient balance" too quickly to avoid flickering
|
|
83
59
|
const showInsufficientBalance = useMemo(() => {
|
|
84
|
-
return
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
!isWaitingForSolana);
|
|
88
|
-
}, [isLoading, isConnected, optionsList.length, isWaitingForSolana]);
|
|
89
|
-
return (jsxs(PageContent, { children: [jsx(OrderHeader, { minified: !connectedWalletOnly, show: effectiveTokenMode, excludeLogos: ["stellar"] }), jsx(OptionsList, { requiredSkeletons: 3, isLoading: Boolean(isLoading || isWaitingForSolana), options: optionsList, scrollHeight: isAnotherMethodButtonVisible && isMobileFormat ? 225 : 300, orDivider: isAnotherMethodButtonVisible, hideBottomLine: !isAnotherMethodButtonVisible }), waitingForSolanaKey && (jsx(WaitingForWallet, { message: "Connecting to Solana wallet..." })), waitingForSolanaData && (jsx(WaitingForWallet, { message: "Loading Solana tokens..." })), showInsufficientBalance && !noConnectedWallet && (jsx(InsufficientBalance, { onRefresh: refreshOptions })), !isLoading && !isConnected && effectiveTokenMode === "all" && (jsx(ConnectButton, {})), isAnotherMethodButtonVisible && jsx(SelectAnotherMethodButton, {}), noConnectedWallet && jsx(NoConnectedWallet, {})] }));
|
|
60
|
+
return !isLoading && isConnected && optionsList.length === 0;
|
|
61
|
+
}, [isLoading, isConnected, optionsList.length]);
|
|
62
|
+
return (jsxs(PageContent, { children: [jsx(OrderHeader, { minified: !connectedWalletOnly, show: effectiveTokenMode, excludeLogos: ["stellar"] }), jsx(OptionsList, { requiredSkeletons: 3, isLoading: isLoading, options: optionsList, scrollHeight: isAnotherMethodButtonVisible && isMobileFormat ? 225 : 300, orDivider: isAnotherMethodButtonVisible, hideBottomLine: !isAnotherMethodButtonVisible }), showInsufficientBalance && !noConnectedWallet && (jsx(InsufficientBalance, { onRefresh: refreshOptions })), !isLoading && !isConnected && effectiveTokenMode === "all" && (jsx(ConnectButton, {})), isAnotherMethodButtonVisible && jsx(SelectAnotherMethodButton, {}), noConnectedWallet && jsx(NoConnectedWallet, {})] }));
|
|
90
63
|
}
|
|
91
64
|
function NoConnectedWallet() {
|
|
92
65
|
return (jsxs(ModalContent, { children: [jsx(ModalH1, { children: "No connected wallet." }), jsx(SelectAnotherMethodButton, {})] }));
|
|
93
66
|
}
|
|
94
|
-
function WaitingForWallet({ message }) {
|
|
95
|
-
return (jsx(ModalContent, { style: {
|
|
96
|
-
display: "flex",
|
|
97
|
-
flexDirection: "column",
|
|
98
|
-
alignItems: "center",
|
|
99
|
-
justifyContent: "center",
|
|
100
|
-
paddingTop: 8,
|
|
101
|
-
paddingBottom: 8,
|
|
102
|
-
}, children: jsx(ModalH1, { style: { fontSize: "14px", fontWeight: 500 }, children: message }) }));
|
|
103
|
-
}
|
|
104
67
|
function InsufficientBalance({ onRefresh, }) {
|
|
105
68
|
const [isRefreshing, setIsRefreshing] = useState(false);
|
|
106
69
|
const handleRefresh = async () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/components/Pages/SelectToken/index.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":";;;;;;;;;;;;;;;;;;AAiBc,SAAU,WAAW,GAAA;AACjC,IAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAC;IACnC,MAAM,cAAc,GAClB,QAAQ,IAAI,MAAM,EAAE,UAAU,GAAG,YAAY,CAAC,WAAW,CAAC;AAE5D,IAAA,MAAM,EAAE,YAAY,EAAE,GAAG,aAAa,EAAE,CAAC;AACzC,IAAA,MAAM,EAAE,SAAS,EAAE,mBAAmB,EAAE,GAAG,YAAY,CAAC;IAExD,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,UAAU,EAAE,CAAC;IACrD,MAAM,EAAE,WAAW,EAAE,kBAAkB,EAAE,SAAS,EAAE,GAAG,UAAU,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/components/Pages/SelectToken/index.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":"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"}
|
|
@@ -12,7 +12,6 @@ import SquircleSpinner from '../../../Spinners/SquircleSpinner/index.js';
|
|
|
12
12
|
const ConnectSolana = () => {
|
|
13
13
|
const solanaWallets = useWallet();
|
|
14
14
|
const isConnected = solanaWallets.connected;
|
|
15
|
-
const publicKey = solanaWallets.publicKey;
|
|
16
15
|
const { solanaConnector, setRoute, paymentState } = usePayContext();
|
|
17
16
|
const { setTokenMode } = paymentState;
|
|
18
17
|
const selectedWallet = solanaWallets.wallets.find((wallet) => wallet.adapter.name === solanaConnector);
|
|
@@ -39,23 +38,19 @@ const ConnectSolana = () => {
|
|
|
39
38
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
40
39
|
}, [solanaConnector]);
|
|
41
40
|
useEffect(() => {
|
|
42
|
-
|
|
43
|
-
if (!isConnected || !publicKey)
|
|
41
|
+
if (!isConnected)
|
|
44
42
|
return;
|
|
45
43
|
// Wait so user can see it's connected
|
|
46
44
|
const meta = {
|
|
47
45
|
event: "wait-solana-connected",
|
|
48
46
|
walletName: solanaWallets.wallet?.adapter.name,
|
|
49
|
-
publicKey: publicKey.toBase58(),
|
|
50
47
|
};
|
|
51
|
-
// Longer timeout to ensure publicKey has fully propagated through ALL React contexts
|
|
52
|
-
// This is critical for mobile in-app browsers where context updates can be slower
|
|
53
48
|
setTimeout(() => {
|
|
54
49
|
setTokenMode("solana");
|
|
55
50
|
setRoute(ROUTES.SELECT_TOKEN, meta);
|
|
56
|
-
},
|
|
51
|
+
}, 500);
|
|
57
52
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
58
|
-
}, [isConnected
|
|
53
|
+
}, [isConnected]);
|
|
59
54
|
if (!solanaConnector)
|
|
60
55
|
return null;
|
|
61
56
|
return (jsxs(PageContent, { children: [jsx(LoadingContainer, { children: jsx(AnimationContainer, { children: jsx(AnimatePresence, { children: jsx(SquircleSpinner, { logo: jsx("div", { style: { borderRadius: "22.5%", overflow: "hidden" }, children: getWalletIcon() }), loading: true }) }) }) }), jsx(ModalContent, { style: { paddingBottom: 0 }, children: isConnected ? (jsx(ModalH1, { children: "Connected" })) : (jsxs(Fragment, { children: [jsx(ModalH1, { children: "Requesting Connection" }), jsxs(ModalBody, { children: ["Open ", selectedWallet?.adapter.name, " to continue."] })] })) })] }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../../src/components/Pages/Solana/ConnectorSolana/index.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":";;;;;;;;;;;AAiBM,MAAA,aAAa,GAAa,MAAK;AACnC,IAAA,MAAM,aAAa,GAAG,SAAS,EAAE,CAAC;AAClC,IAAA,MAAM,WAAW,GAAG,aAAa,CAAC,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../src/components/Pages/Solana/ConnectorSolana/index.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { jsx, jsxs
|
|
2
|
-
import {
|
|
1
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
import { useState, useEffect, useCallback } from 'react';
|
|
3
3
|
import { ROUTES } from '../../../../constants/routes.js';
|
|
4
4
|
import { usePayContext } from '../../../../hooks/usePayContext.js';
|
|
5
5
|
import { PageContent, ModalContent, ModalH1, Link } from '../../../Common/Modal/styles.js';
|
|
6
|
-
import { formatPaymentResponseToHydratedOrder,
|
|
6
|
+
import { formatPaymentResponseToHydratedOrder, getChainExplorerTxUrl, rozoSolana } from '@rozoai/intent-common';
|
|
7
7
|
import { useRozoPay } from '../../../../hooks/useDaimoPay.js';
|
|
8
8
|
import { useSolanaDestination } from '../../../../hooks/useSolanaDestination.js';
|
|
9
9
|
import { getSupportUrl } from '../../../../utils/supportUrl.js';
|
|
@@ -23,23 +23,32 @@ var PayState;
|
|
|
23
23
|
})(PayState || (PayState = {}));
|
|
24
24
|
const PayWithSolanaToken = () => {
|
|
25
25
|
const { triggerResize, paymentState, setRoute, log } = usePayContext();
|
|
26
|
-
const { selectedSolanaTokenOption, payWithSolanaTokenRozo
|
|
27
|
-
const { store, order, paymentState: state, setPaymentStarted, setPaymentUnpaid, setPaymentRozoCompleted, setPaymentCompleted, hydrateOrderRozo, } = useRozoPay();
|
|
26
|
+
const { selectedSolanaTokenOption, payWithSolanaTokenRozo, payParams, rozoPaymentId, setRozoPaymentId, setTxHash, createPayment, } = paymentState;
|
|
27
|
+
const { store, order, paymentState: state, setPayId, setPaymentStarted, setPaymentUnpaid, setPaymentRozoCompleted, setPaymentCompleted, hydrateOrderRozo, } = useRozoPay();
|
|
28
28
|
// Get the destination address and payment direction using our custom hook
|
|
29
29
|
const { destinationAddress } = useSolanaDestination(payParams);
|
|
30
|
-
const
|
|
31
|
-
const [payState, setPayState] = useState(PayState.PreparingTransaction);
|
|
30
|
+
const [payState, setPayStateInner] = useState(PayState.PreparingTransaction);
|
|
32
31
|
const [txURL, setTxURL] = useState();
|
|
33
32
|
const [isLoading, setIsLoading] = useState(true);
|
|
34
|
-
const [pendingTxHash, setPendingTxHash] = useState();
|
|
35
33
|
useEffect(() => {
|
|
36
34
|
if (state === "error") {
|
|
37
35
|
setRoute(ROUTES.ERROR);
|
|
38
36
|
return;
|
|
39
37
|
}
|
|
40
38
|
}, [state]);
|
|
39
|
+
const setPayState = (state) => {
|
|
40
|
+
if (state === payState)
|
|
41
|
+
return;
|
|
42
|
+
setPayStateInner(state);
|
|
43
|
+
log(`[PayWithSolanaToken] payState: ${state}`);
|
|
44
|
+
// (trpc as TrpcClient).nav.mutate({
|
|
45
|
+
// action: "pay-with-solana-token-state",
|
|
46
|
+
// data: { state },
|
|
47
|
+
// });
|
|
48
|
+
};
|
|
49
|
+
// @NOTE: This is Pay In Solana by Rozo
|
|
41
50
|
// FOR TRANSFER ACTION
|
|
42
|
-
const handleTransfer = async (option) => {
|
|
51
|
+
const handleTransfer = useCallback(async (option) => {
|
|
43
52
|
setIsLoading(true);
|
|
44
53
|
try {
|
|
45
54
|
if (!destinationAddress) {
|
|
@@ -49,11 +58,12 @@ const PayWithSolanaToken = () => {
|
|
|
49
58
|
throw new Error("Order not initialized");
|
|
50
59
|
}
|
|
51
60
|
const { required } = option;
|
|
52
|
-
const needRozoPayment =
|
|
53
|
-
|
|
61
|
+
const needRozoPayment = order.preferredChainId !== null &&
|
|
62
|
+
order.preferredChainId !== required.token.chainId;
|
|
54
63
|
let hydratedOrder;
|
|
55
64
|
let paymentId;
|
|
56
|
-
if (state === "payment_unpaid"
|
|
65
|
+
if ((state === "payment_unpaid" || state === "payment_started") &&
|
|
66
|
+
!needRozoPayment) {
|
|
57
67
|
hydratedOrder = order;
|
|
58
68
|
}
|
|
59
69
|
else if (needRozoPayment) {
|
|
@@ -62,7 +72,8 @@ const PayWithSolanaToken = () => {
|
|
|
62
72
|
throw new Error("Failed to create Rozo payment");
|
|
63
73
|
}
|
|
64
74
|
paymentId = res.id;
|
|
65
|
-
|
|
75
|
+
const formattedOrder = formatPaymentResponseToHydratedOrder(res);
|
|
76
|
+
hydratedOrder = formattedOrder;
|
|
66
77
|
}
|
|
67
78
|
else {
|
|
68
79
|
// Hydrate existing order
|
|
@@ -75,34 +86,88 @@ const PayWithSolanaToken = () => {
|
|
|
75
86
|
const newId = paymentId ?? hydratedOrder.externalId;
|
|
76
87
|
if (newId) {
|
|
77
88
|
setRozoPaymentId(newId);
|
|
78
|
-
|
|
89
|
+
// Handle payment state transitions
|
|
90
|
+
// Get the ACTUAL current state from the store, not the stale React state
|
|
91
|
+
const currentState = store.getState().type;
|
|
92
|
+
if (currentState === "payment_started" && paymentId) {
|
|
93
|
+
// A new payment was created while in payment_started state (cross-chain switch)
|
|
94
|
+
// First transition back to payment_unpaid, then to payment_started with new order
|
|
95
|
+
const oldPaymentId = order?.externalId;
|
|
96
|
+
if (oldPaymentId) {
|
|
97
|
+
try {
|
|
98
|
+
await setPaymentUnpaid(oldPaymentId);
|
|
99
|
+
await setPaymentStarted(String(newId), hydratedOrder);
|
|
100
|
+
}
|
|
101
|
+
catch (e) {
|
|
102
|
+
// State might have changed during async operations
|
|
103
|
+
console.warn("[PayWithSolanaToken] State transition failed, attempting direct start:", e);
|
|
104
|
+
// Try to set started directly if state is already unpaid
|
|
105
|
+
try {
|
|
106
|
+
await setPaymentStarted(String(newId), hydratedOrder);
|
|
107
|
+
}
|
|
108
|
+
catch (e2) {
|
|
109
|
+
console.error("[PayWithSolanaToken] Could not start payment:", e2);
|
|
110
|
+
throw e2;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
await setPaymentStarted(String(newId), hydratedOrder);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
else if (currentState !== "payment_started") {
|
|
119
|
+
// State is not payment_started (preview, unhydrated, or payment_unpaid)
|
|
120
|
+
// Only transition to payment_started if we're in payment_unpaid
|
|
121
|
+
const stateBeforeTransition = store.getState().type;
|
|
122
|
+
if (stateBeforeTransition === "payment_unpaid") {
|
|
123
|
+
try {
|
|
124
|
+
await setPaymentStarted(String(newId), hydratedOrder);
|
|
125
|
+
}
|
|
126
|
+
catch (e) {
|
|
127
|
+
console.error("[PayWithSolanaToken] Could not start payment:", e);
|
|
128
|
+
throw e;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
log(`[PayWithSolanaToken] Skipping setPaymentStarted - state is ${stateBeforeTransition}, needs to be payment_unpaid`);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
79
135
|
}
|
|
80
136
|
setPayState(PayState.RequestingPayment);
|
|
81
137
|
const paymentData = {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
usdcAmount: String(hydratedOrder.destFinalCallTokenAmount.usd),
|
|
85
|
-
solanaAmount: String(hydratedOrder.destFinalCallTokenAmount.usd),
|
|
138
|
+
destAddress: hydratedOrder.intentAddr || destinationAddress,
|
|
139
|
+
usdcAmount: String(option.required.usd),
|
|
86
140
|
};
|
|
87
|
-
if (hydratedOrder.
|
|
141
|
+
if (hydratedOrder.memo) {
|
|
88
142
|
Object.assign(paymentData, {
|
|
89
|
-
memo: hydratedOrder.
|
|
143
|
+
memo: hydratedOrder.memo,
|
|
90
144
|
});
|
|
91
145
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
146
|
+
const result = await payWithSolanaTokenRozo(option, paymentData);
|
|
147
|
+
log("[PAY SOLANA] Result", result, getChainExplorerTxUrl(rozoSolana.chainId, result.txHash));
|
|
148
|
+
setTxURL(getChainExplorerTxUrl(rozoSolana.chainId, result.txHash));
|
|
95
149
|
if (result.success) {
|
|
96
|
-
|
|
97
|
-
|
|
150
|
+
setPayState(PayState.RequestSuccessful);
|
|
151
|
+
setTxHash(result.txHash);
|
|
152
|
+
setTimeout(() => {
|
|
153
|
+
setPaymentRozoCompleted(true);
|
|
154
|
+
setPaymentCompleted(result.txHash, rozoPaymentId);
|
|
155
|
+
setRoute(ROUTES.CONFIRMATION, { event: "wait-pay-with-solana" });
|
|
156
|
+
}, 200);
|
|
98
157
|
}
|
|
99
158
|
else {
|
|
100
159
|
setPayState(PayState.RequestCancelled);
|
|
101
160
|
}
|
|
102
161
|
}
|
|
103
162
|
catch (error) {
|
|
163
|
+
console.error("Failed to pay with solana token", error);
|
|
104
164
|
if (rozoPaymentId) {
|
|
105
|
-
|
|
165
|
+
try {
|
|
166
|
+
await setPaymentUnpaid(rozoPaymentId);
|
|
167
|
+
}
|
|
168
|
+
catch (e) {
|
|
169
|
+
console.error("Failed to set payment unpaid:", e);
|
|
170
|
+
}
|
|
106
171
|
}
|
|
107
172
|
if (error.message.includes("rejected")) {
|
|
108
173
|
setPayState(PayState.RequestCancelled);
|
|
@@ -114,60 +179,22 @@ const PayWithSolanaToken = () => {
|
|
|
114
179
|
finally {
|
|
115
180
|
setIsLoading(false);
|
|
116
181
|
}
|
|
117
|
-
};
|
|
118
|
-
const handleSubmitTx = async () => {
|
|
119
|
-
if (pendingTxHash) {
|
|
120
|
-
try {
|
|
121
|
-
setIsLoading(true);
|
|
122
|
-
setPayState(PayState.ProcessingPayment);
|
|
123
|
-
// Set the transaction URL and hash
|
|
124
|
-
setTxURL(getChainExplorerTxUrl(rozoSolana.chainId, pendingTxHash));
|
|
125
|
-
setTxHash(pendingTxHash);
|
|
126
|
-
setPayState(PayState.RequestSuccessful);
|
|
127
|
-
setTimeout(() => {
|
|
128
|
-
setPendingTxHash(undefined);
|
|
129
|
-
setPaymentRozoCompleted(true);
|
|
130
|
-
setPaymentCompleted(pendingTxHash, rozoPaymentId);
|
|
131
|
-
setRoute(ROUTES.CONFIRMATION, { event: "wait-pay-with-solana" });
|
|
132
|
-
}, 200);
|
|
133
|
-
}
|
|
134
|
-
catch (error) {
|
|
135
|
-
if (error.message.includes("rejected")) {
|
|
136
|
-
setPayState(PayState.RequestCancelled);
|
|
137
|
-
}
|
|
138
|
-
else {
|
|
139
|
-
setPayState(PayState.RequestFailed);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
finally {
|
|
143
|
-
setIsLoading(false);
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
else {
|
|
147
|
-
log?.("[PAY SOLANA] Cannot submit transaction - missing requirements");
|
|
148
|
-
}
|
|
149
|
-
};
|
|
150
|
-
useEffect(() => {
|
|
151
|
-
if (pendingTxHash) {
|
|
152
|
-
submitButtonRef.current?.click();
|
|
153
|
-
}
|
|
154
|
-
}, [pendingTxHash]);
|
|
182
|
+
}, [destinationAddress, order, state, rozoPaymentId]);
|
|
155
183
|
useEffect(() => {
|
|
156
184
|
if (!selectedSolanaTokenOption)
|
|
157
185
|
return;
|
|
158
|
-
// Give user time to see the UI before opening
|
|
159
186
|
const transferTimeout = setTimeout(() => handleTransfer(selectedSolanaTokenOption), 100);
|
|
160
187
|
return () => clearTimeout(transferTimeout);
|
|
161
|
-
}, [selectedSolanaTokenOption]);
|
|
188
|
+
}, [selectedSolanaTokenOption]); // eslint-disable-line react-hooks/exhaustive-deps
|
|
162
189
|
useEffect(() => {
|
|
163
190
|
triggerResize();
|
|
164
|
-
}, [payState]);
|
|
191
|
+
}, [payState]); // eslint-disable-line react-hooks/exhaustive-deps
|
|
165
192
|
if (selectedSolanaTokenOption == null) {
|
|
166
193
|
return jsx(PageContent, {});
|
|
167
194
|
}
|
|
168
|
-
return (jsxs(PageContent, { children: [
|
|
169
|
-
|
|
170
|
-
|
|
195
|
+
return (jsxs(PageContent, { children: [selectedSolanaTokenOption && (jsx(TokenLogoSpinner, { token: selectedSolanaTokenOption.required.token, loading: isLoading })), jsxs(ModalContent, { style: { paddingBottom: 0 }, children: [txURL ? (jsx(ModalH1, { children: jsx(Link, { href: txURL, target: "_blank", rel: "noopener noreferrer", children: payState }) })) : (jsx(ModalH1, { children: payState })), jsx(PaymentBreakdown, { paymentOption: selectedSolanaTokenOption }), payState === PayState.RequestCancelled && !isLoading && (jsx(Button, { onClick: () => handleTransfer(selectedSolanaTokenOption), children: "Retry Payment" })), payState === PayState.RequestFailed && (jsx(Button, { onClick: () => {
|
|
196
|
+
window.open(getSupportUrl(order?.id?.toString() ?? "", `Pay with Solana token${txURL ? ` ${txURL}` : ""}`), "_blank");
|
|
197
|
+
}, children: "Contact Support" }))] })] }));
|
|
171
198
|
};
|
|
172
199
|
|
|
173
200
|
export { PayWithSolanaToken as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../../src/components/Pages/Solana/PayWithSolanaToken/index.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../src/components/Pages/Solana/PayWithSolanaToken/index.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":"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"}
|
|
@@ -8,7 +8,6 @@ import { Networks, TransactionBuilder } from '@stellar/stellar-sdk';
|
|
|
8
8
|
import { useRozoPay } from '../../../../hooks/useDaimoPay.js';
|
|
9
9
|
import { useStellarDestination } from '../../../../hooks/useStellarDestination.js';
|
|
10
10
|
import { useStellar } from '../../../../provider/StellarContextProvider.js';
|
|
11
|
-
import { roundTokenAmount } from '../../../../utils/format.js';
|
|
12
11
|
import { getSupportUrl } from '../../../../utils/supportUrl.js';
|
|
13
12
|
import Button from '../../../Common/Button/index.js';
|
|
14
13
|
import PaymentBreakdown from '../../../Common/PaymentBreakdown/index.js';
|
|
@@ -26,7 +25,7 @@ var PayState;
|
|
|
26
25
|
})(PayState || (PayState = {}));
|
|
27
26
|
const PayWithStellarToken = () => {
|
|
28
27
|
const { triggerResize, paymentState, setRoute, log } = usePayContext();
|
|
29
|
-
const { selectedStellarTokenOption, payWithStellarToken
|
|
28
|
+
const { selectedStellarTokenOption, payWithStellarToken, setTxHash, payParams, rozoPaymentId, setRozoPaymentId, createPayment, } = paymentState;
|
|
30
29
|
const { store, order, paymentState: state, setPaymentStarted, setPaymentUnpaid, setPaymentRozoCompleted, setPaymentCompleted, hydrateOrderRozo, } = useRozoPay();
|
|
31
30
|
// Get the destination address and payment direction using our custom hook
|
|
32
31
|
const { destinationAddress } = useStellarDestination(payParams);
|
|
@@ -53,11 +52,12 @@ const PayWithStellarToken = () => {
|
|
|
53
52
|
throw new Error("Order not initialized");
|
|
54
53
|
}
|
|
55
54
|
const { required } = option;
|
|
56
|
-
const needRozoPayment =
|
|
57
|
-
|
|
55
|
+
const needRozoPayment = order.preferredChainId !== null &&
|
|
56
|
+
order.preferredChainId !== required.token.chainId;
|
|
58
57
|
let hydratedOrder;
|
|
59
58
|
let paymentId;
|
|
60
|
-
if (state === "payment_unpaid"
|
|
59
|
+
if ((state === "payment_unpaid" || state === "payment_started") &&
|
|
60
|
+
!needRozoPayment) {
|
|
61
61
|
hydratedOrder = order;
|
|
62
62
|
}
|
|
63
63
|
else if (needRozoPayment) {
|
|
@@ -79,26 +79,41 @@ const PayWithStellarToken = () => {
|
|
|
79
79
|
const newId = paymentId ?? hydratedOrder.externalId;
|
|
80
80
|
if (newId) {
|
|
81
81
|
setRozoPaymentId(newId);
|
|
82
|
-
|
|
82
|
+
// Handle payment state transitions
|
|
83
|
+
if (paymentId && state === "payment_started") {
|
|
84
|
+
// A new payment was created while in payment_started state (e.g., user switched chains)
|
|
85
|
+
// First transition back to payment_unpaid, then to payment_started with new order
|
|
86
|
+
await setPaymentUnpaid(rozoPaymentId);
|
|
87
|
+
await setPaymentStarted(String(newId), hydratedOrder);
|
|
88
|
+
}
|
|
89
|
+
else if (state !== "payment_started") {
|
|
90
|
+
// Normal flow: transition to payment_started
|
|
91
|
+
await setPaymentStarted(String(newId), hydratedOrder);
|
|
92
|
+
}
|
|
93
|
+
// If state === "payment_started" && !paymentId, we're reusing the same order, no state change needed
|
|
83
94
|
}
|
|
84
95
|
setPayState(PayState.RequestingPayment);
|
|
85
96
|
const paymentData = {
|
|
86
|
-
destAddress: hydratedOrder.
|
|
87
|
-
usdcAmount: String(
|
|
88
|
-
stellarAmount: roundTokenAmount(hydratedOrder.destFinalCallTokenAmount.amount, hydratedOrder.destFinalCallTokenAmount.token),
|
|
97
|
+
destAddress: hydratedOrder.intentAddr || destinationAddress,
|
|
98
|
+
usdcAmount: String(option.required.usd),
|
|
89
99
|
};
|
|
90
|
-
if (hydratedOrder.
|
|
100
|
+
if (hydratedOrder.memo) {
|
|
91
101
|
Object.assign(paymentData, {
|
|
92
|
-
memo: hydratedOrder.
|
|
102
|
+
memo: hydratedOrder.memo,
|
|
93
103
|
});
|
|
94
104
|
}
|
|
95
|
-
const result = await
|
|
105
|
+
const result = await payWithStellarToken(option, paymentData);
|
|
96
106
|
setSignedTx(result.signedTx);
|
|
97
107
|
setPayState(PayState.WaitingForConfirmation);
|
|
98
108
|
}
|
|
99
109
|
catch (error) {
|
|
100
110
|
if (rozoPaymentId) {
|
|
101
|
-
|
|
111
|
+
try {
|
|
112
|
+
await setPaymentUnpaid(rozoPaymentId);
|
|
113
|
+
}
|
|
114
|
+
catch (e) {
|
|
115
|
+
console.error("Failed to set payment unpaid:", e);
|
|
116
|
+
}
|
|
102
117
|
}
|
|
103
118
|
if (error.message.includes("rejected")) {
|
|
104
119
|
setPayState(PayState.RequestCancelled);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../../src/components/Pages/Stellar/PayWithStellarToken/index.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs","_Fragment"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../src/components/Pages/Stellar/PayWithStellarToken/index.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
|
-
import { isHydrated, DepositAddressPaymentOptions, getPayment, generateEVMDeepLink, getChainName, getKnownToken, getFee, getAddressContraction } from '@rozoai/intent-common';
|
|
2
|
+
import { isHydrated, DepositAddressPaymentOptions, getPayment, generateEVMDeepLink, getChainName, getKnownToken, getFee, FeeType, getAddressContraction } from '@rozoai/intent-common';
|
|
3
3
|
import { useState, useEffect, useRef, useMemo } from 'react';
|
|
4
4
|
import { keyframes } from 'styled-components';
|
|
5
5
|
import { AlertIcon, WarningIcon } from '../../../assets/icons.js';
|
|
@@ -97,7 +97,7 @@ function WaitingDepositAddress() {
|
|
|
97
97
|
try {
|
|
98
98
|
context.log("[PAYMENT POLLING] Polling for payment transaction:", depAddr?.externalId);
|
|
99
99
|
const isMugglePay = depAddr?.externalId.includes("mugglepay_order");
|
|
100
|
-
const response = await getPayment(depAddr?.externalId);
|
|
100
|
+
const response = await getPayment(depAddr?.externalId, "v2");
|
|
101
101
|
context.log("[PAYMENT POLLING] Debug - API Response:", {
|
|
102
102
|
status: response.status,
|
|
103
103
|
hasData: !!response.data,
|
|
@@ -213,7 +213,9 @@ function WaitingDepositAddress() {
|
|
|
213
213
|
if (amount && payParams?.appId) {
|
|
214
214
|
try {
|
|
215
215
|
const feeResponse = await getFee({
|
|
216
|
-
|
|
216
|
+
currency: "USD",
|
|
217
|
+
type: payParams?.feeType ?? FeeType.ExactIn,
|
|
218
|
+
toUnits: amount.toString(),
|
|
217
219
|
appId: payParams.appId,
|
|
218
220
|
toChain: selectedDepositAddressOption.chainId,
|
|
219
221
|
});
|