@rozoai/intent-pay 0.0.18-beta.4 → 0.0.18-beta.6
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/Pages/Solana/ConnectStellar/index.d.ts +3 -0
- package/build/constants/rozoConfig.d.ts +2 -0
- package/build/hooks/usePaymentState.d.ts +13 -2
- package/build/hooks/useSolanaDestination.d.ts +32 -0
- package/build/package.json.js +3 -2
- package/build/package.json.js.map +1 -1
- package/build/payment/paymentFsm.d.ts +3 -1
- package/build/src/components/DaimoPayModal/index.js +1 -1
- package/build/src/components/Pages/Confirmation/index.js +6 -5
- package/build/src/components/Pages/Confirmation/index.js.map +1 -1
- package/build/src/components/Pages/Solana/ConnectStellar/index.js +80 -0
- package/build/src/components/Pages/Solana/ConnectStellar/index.js.map +1 -0
- package/build/src/components/Pages/Solana/PayWithSolanaToken/index.js +121 -11
- package/build/src/components/Pages/Solana/PayWithSolanaToken/index.js.map +1 -1
- package/build/src/components/Pages/Stellar/PayWithStellarToken/index.js +14 -10
- package/build/src/components/Pages/Stellar/PayWithStellarToken/index.js.map +1 -1
- package/build/src/constants/rozoConfig.js +9 -6
- package/build/src/constants/rozoConfig.js.map +1 -1
- package/build/src/hooks/usePaymentState.js +87 -9
- package/build/src/hooks/usePaymentState.js.map +1 -1
- package/build/src/hooks/useSolanaDestination.js +61 -0
- package/build/src/hooks/useSolanaDestination.js.map +1 -0
- package/build/src/payment/paymentEffects.js +55 -106
- package/build/src/payment/paymentEffects.js.map +1 -1
- package/build/src/payment/paymentFsm.js.map +1 -1
- package/build/src/utils/api/payment.js.map +1 -1
- package/build/utils/api/payment.d.ts +0 -1
- package/package.json +3 -2
|
@@ -11,6 +11,8 @@ export declare const DEFAULT_STELLAR_RPC_URL = "https://horizon.stellar.org";
|
|
|
11
11
|
export declare const STELLAR_NATIVE_ASSET: Asset;
|
|
12
12
|
export declare const STELLAR_USDC_ASSET_CODE = "USDC";
|
|
13
13
|
export declare const STELLAR_USDC_ISSUER_PK = "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN";
|
|
14
|
+
export declare const SOLANA_USDC_ASSET_CODE = "USDC";
|
|
15
|
+
export declare const ROZO_SOLANA_USDC_MINT_ADDRESS = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v";
|
|
14
16
|
export declare const STELLAR_XLM_TOKEN_INFO: {
|
|
15
17
|
chainId: number;
|
|
16
18
|
token: string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DepositAddressPaymentOptionData, DepositAddressPaymentOptionMetadata, DepositAddressPaymentOptions, ExternalPaymentOptionMetadata, ExternalPaymentOptions, RozoPayTokenAmount,
|
|
1
|
+
import { DepositAddressPaymentOptionData, DepositAddressPaymentOptionMetadata, DepositAddressPaymentOptions, ExternalPaymentOptionMetadata, ExternalPaymentOptions, RozoPayTokenAmount, WalletPaymentOption } from "@rozoai/intent-common";
|
|
2
2
|
import { Hex } from "viem";
|
|
3
3
|
import { PayButtonPaymentProps } from "../components/DaimoPayButton";
|
|
4
4
|
import { ROUTES } from "../constants/routes";
|
|
@@ -55,7 +55,17 @@ export interface PaymentState {
|
|
|
55
55
|
}>;
|
|
56
56
|
payWithExternal: (option: ExternalPaymentOptions) => Promise<string>;
|
|
57
57
|
payWithDepositAddress: (option: DepositAddressPaymentOptions) => Promise<DepositAddressPaymentOptionData | null>;
|
|
58
|
-
payWithSolanaToken: (
|
|
58
|
+
payWithSolanaToken: (walletPaymentOption: WalletPaymentOption) => Promise<{
|
|
59
|
+
txHash: string;
|
|
60
|
+
success: boolean;
|
|
61
|
+
}>;
|
|
62
|
+
payWithSolanaTokenRozo: (walletPaymentOption: WalletPaymentOption, rozoPayment: {
|
|
63
|
+
tokenAddress: string;
|
|
64
|
+
destAddress: string;
|
|
65
|
+
usdcAmount: string;
|
|
66
|
+
solanaAmount: string;
|
|
67
|
+
memo?: string;
|
|
68
|
+
}) => Promise<{
|
|
59
69
|
txHash: string;
|
|
60
70
|
success: boolean;
|
|
61
71
|
}>;
|
|
@@ -63,6 +73,7 @@ export interface PaymentState {
|
|
|
63
73
|
destAddress: string;
|
|
64
74
|
usdcAmount: string;
|
|
65
75
|
stellarAmount: string;
|
|
76
|
+
memo?: string;
|
|
66
77
|
}) => Promise<{
|
|
67
78
|
txHash: string;
|
|
68
79
|
success: boolean;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { PayParams } from "../payment/paymentFsm";
|
|
2
|
+
/**
|
|
3
|
+
* Return type for the useSolanaDestination hook
|
|
4
|
+
*/
|
|
5
|
+
interface SolanaDestinationResult {
|
|
6
|
+
/** The middleware address to use for the transaction */
|
|
7
|
+
readonly destinationAddress: string | undefined;
|
|
8
|
+
/** Whether this is a Solana payment (Pay In Solana scenarios) */
|
|
9
|
+
readonly isSolanaPayment: boolean;
|
|
10
|
+
/** Pay In Solana, Pay out Solana scenario */
|
|
11
|
+
readonly isPayInSolanaOutSolana: boolean;
|
|
12
|
+
/** Pay In Solana, Pay Out Base scenario */
|
|
13
|
+
readonly isPayInSolanaOutBase: boolean;
|
|
14
|
+
/** Whether toSolanaAddress is provided and not empty */
|
|
15
|
+
readonly hasToSolanaAddress: boolean;
|
|
16
|
+
/** Whether the payout destination is Base USDC */
|
|
17
|
+
readonly isPayOutToBase: boolean;
|
|
18
|
+
/** Pay In Base, Pay Out Solana scenario */
|
|
19
|
+
readonly isPayInBaseOutSolana: boolean;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Hook to determine the correct destination address for Solana transactions.
|
|
23
|
+
*
|
|
24
|
+
* Handles Pay In Solana scenarios:
|
|
25
|
+
* 1. Pay In Solana, Pay out Solana - use toSolanaAddress
|
|
26
|
+
* 2. Pay In Solana, Pay Out Base - use ROZO_STELLAR_ADDRESS (when toChain is Base and toSolanaAddress is empty)
|
|
27
|
+
*
|
|
28
|
+
* @param payParams - Payment parameters containing transaction details
|
|
29
|
+
* @returns Object with destination address and payment scenario flags
|
|
30
|
+
*/
|
|
31
|
+
export declare function useSolanaDestination(payParams?: PayParams): SolanaDestinationResult;
|
|
32
|
+
export {};
|
package/build/package.json.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
var name = "@rozoai/intent-pay";
|
|
2
|
-
var version = "0.0.18-beta.
|
|
2
|
+
var version = "0.0.18-beta.6";
|
|
3
3
|
var author = "RozoAI";
|
|
4
4
|
var homepage = "https://github.com/RozoAI/intent-pay";
|
|
5
5
|
var license = "BSD-2-Clause";
|
|
@@ -48,11 +48,12 @@ var keywords = [
|
|
|
48
48
|
var dependencies = {
|
|
49
49
|
"@creit.tech/stellar-wallets-kit": "^1.7.6",
|
|
50
50
|
"@rollup/plugin-typescript": "^12.1.2",
|
|
51
|
+
"@rozoai/intent-common": "0.0.18-beta.3",
|
|
52
|
+
"@solana/spl-token": "^0.4.13",
|
|
51
53
|
"@solana/wallet-adapter-base": "^0.9.23",
|
|
52
54
|
"@solana/wallet-adapter-react": "^0.15.35",
|
|
53
55
|
"@solana/web3.js": "^1.95.4",
|
|
54
56
|
"@stellar/stellar-sdk": "^13.3.0",
|
|
55
|
-
"@rozoai/intent-common": "0.0.17",
|
|
56
57
|
"@trpc/client": "^11.0.0-next-beta.318",
|
|
57
58
|
"@trpc/server": "^11.0.0-next-beta.318",
|
|
58
59
|
buffer: "^6.0.3",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"package.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { RozoPayHydratedOrderWithOrg, RozoPayOrder, RozoPayOrderID, RozoPayOrderWithOrg, RozoPayUserMetadata,
|
|
1
|
+
import { ExternalPaymentOptionsString, RozoPayHydratedOrderWithOrg, RozoPayOrder, RozoPayOrderID, RozoPayOrderWithOrg, RozoPayUserMetadata, SolanaPublicKey, StellarPublicKey, WalletPaymentOption } from "@rozoai/intent-common";
|
|
2
2
|
import { Address, Hex } from "viem";
|
|
3
3
|
/** Payment parameters. The payment is created only after user taps pay. */
|
|
4
4
|
export interface PayParams {
|
|
@@ -17,6 +17,8 @@ export interface PayParams {
|
|
|
17
17
|
toAddress: Address;
|
|
18
18
|
/** The final stellar address to transfer to. */
|
|
19
19
|
toStellarAddress?: string;
|
|
20
|
+
/** The final solana address to transfer to. */
|
|
21
|
+
toSolanaAddress?: string;
|
|
20
22
|
/** Calldata for final call, or empty data for transfer. */
|
|
21
23
|
toCallData?: Hex;
|
|
22
24
|
/** The intent verb, such as Pay, Deposit, or Purchase. Default: Pay */
|
|
@@ -8,6 +8,7 @@ import { useChainIsSupported } from '../../hooks/useChainIsSupported.js';
|
|
|
8
8
|
import { useRozoPay } from '../../hooks/useDaimoPay.js';
|
|
9
9
|
import useIsMobile from '../../hooks/useIsMobile.js';
|
|
10
10
|
import { usePayContext } from '../../hooks/usePayContext.js';
|
|
11
|
+
import { useStellar } from '../../provider/StellarContextProvider.js';
|
|
11
12
|
import Modal from '../Common/Modal/index.js';
|
|
12
13
|
import { RozoPayThemeProvider } from '../DaimoPayThemeProvider/DaimoPayThemeProvider.js';
|
|
13
14
|
import About from '../Pages/About/index.js';
|
|
@@ -40,7 +41,6 @@ import WaitingDepositAddress from '../Pages/WaitingDepositAddress/index.js';
|
|
|
40
41
|
import WaitingExternal from '../Pages/WaitingExternal/index.js';
|
|
41
42
|
import WaitingWallet from '../Pages/WaitingWallet/index.js';
|
|
42
43
|
import ConnectUsing from './ConnectUsing.js';
|
|
43
|
-
import { useStellar } from '../../provider/StellarContextProvider.js';
|
|
44
44
|
|
|
45
45
|
const RozoPayModal = ({ mode, theme, customTheme, lang, disableMobileInjector, }) => {
|
|
46
46
|
const context = usePayContext();
|
|
@@ -2,7 +2,7 @@ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
|
2
2
|
import { useState, useMemo, useEffect } from 'react';
|
|
3
3
|
import { usePayContext } from '../../../hooks/usePayContext.js';
|
|
4
4
|
import { PageContent, ModalContent, ModalH1, Link, ModalBody } from '../../Common/Modal/styles.js';
|
|
5
|
-
import { getChainExplorerTxUrl, stellar, getOrderDestChainId, assert } from '@rozoai/intent-common';
|
|
5
|
+
import { getChainExplorerTxUrl, stellar, rozoSolana, getOrderDestChainId, assert } from '@rozoai/intent-common';
|
|
6
6
|
import { motion } from 'framer-motion';
|
|
7
7
|
import { TickIcon, LoadingCircleIcon } from '../../../assets/icons.js';
|
|
8
8
|
import { useRozoPay } from '../../../hooks/useDaimoPay.js';
|
|
@@ -15,7 +15,8 @@ const Confirmation = () => {
|
|
|
15
15
|
const [isConfirming, setIsConfirming] = useState(true);
|
|
16
16
|
const { done, txURL } = useMemo(() => {
|
|
17
17
|
const { tokenMode, txHash, rozoPaymentId } = paymentStateContext;
|
|
18
|
-
|
|
18
|
+
console.log("[CONFIRMATION] tokenMode", { tokenMode, txHash, rozoPaymentId, paymentState, order, paymentStateContext, isConfirming });
|
|
19
|
+
if ((tokenMode === "stellar" || tokenMode === "solana") && txHash) {
|
|
19
20
|
// Add delay before setting payment completed to show confirming state
|
|
20
21
|
if (isConfirming) {
|
|
21
22
|
setTimeout(() => {
|
|
@@ -24,7 +25,7 @@ const Confirmation = () => {
|
|
|
24
25
|
}, 1000);
|
|
25
26
|
return { done: false, txURL: undefined };
|
|
26
27
|
}
|
|
27
|
-
const txURL = getChainExplorerTxUrl(stellar.chainId, txHash);
|
|
28
|
+
const txURL = getChainExplorerTxUrl(tokenMode === "stellar" ? stellar.chainId : rozoSolana.chainId, txHash);
|
|
28
29
|
return { done: true, txURL };
|
|
29
30
|
}
|
|
30
31
|
else {
|
|
@@ -41,7 +42,7 @@ const Confirmation = () => {
|
|
|
41
42
|
}, [paymentState, order, paymentStateContext, isConfirming]);
|
|
42
43
|
useEffect(() => {
|
|
43
44
|
if (done) {
|
|
44
|
-
if (paymentStateContext.tokenMode === "stellar") {
|
|
45
|
+
if (paymentStateContext.tokenMode === "stellar" || paymentStateContext.tokenMode === "solana") {
|
|
45
46
|
setPaymentRozoCompleted(true);
|
|
46
47
|
}
|
|
47
48
|
onSuccess();
|
|
@@ -61,7 +62,7 @@ const Confirmation = () => {
|
|
|
61
62
|
justifyContent: "center",
|
|
62
63
|
alignItems: "center",
|
|
63
64
|
paddingBottom: 0,
|
|
64
|
-
}, children: [jsx(AnimationContainer, { children: jsxs(InsetContainer, { children: [jsx(Spinner, { "$status": done }), jsx(SuccessIcon, { "$status": done })] }) }), !done ? (jsx(ModalH1, { children: "Confirming..." })) : (jsxs(Fragment, { children: [
|
|
65
|
+
}, children: [jsx(AnimationContainer, { children: jsxs(InsetContainer, { children: [jsx(Spinner, { "$status": done }), jsx(SuccessIcon, { "$status": done })] }) }), !done ? (jsx(ModalH1, { children: "Confirming..." })) : (jsxs(Fragment, { children: [jsxs(ModalH1, { style: { display: "flex", alignItems: "center", gap: 3, flexDirection: "column" }, children: ["Payment Completed", txURL && (jsx(Link, { href: txURL, target: "_blank", rel: "noopener noreferrer", style: { fontSize: 14, fontWeight: 400 }, children: "See transaction details" }))] }), confirmationMessage && (jsx(ModalBody, { children: confirmationMessage }))] })), jsx(PoweredByFooter, { showSupport: !done, preFilledMessage: `Transaction: ${txURL}` })] }) }));
|
|
65
66
|
};
|
|
66
67
|
const AnimationContainer = styled(motion.div) `
|
|
67
68
|
position: relative;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/components/Pages/Confirmation/index.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs","_Fragment"],"mappings":";;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/components/Pages/Confirmation/index.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
|
+
import { useState, useEffect, useMemo } from 'react';
|
|
3
|
+
import { PageContent, ModalContent, ModalH1 } from '../../../Common/Modal/styles.js';
|
|
4
|
+
import { Stellar } from '../../../../assets/chains.js';
|
|
5
|
+
import { SquircleIcon } from '../../../../assets/logos.js';
|
|
6
|
+
import { ROUTES } from '../../../../constants/routes.js';
|
|
7
|
+
import { usePayContext } from '../../../../hooks/usePayContext.js';
|
|
8
|
+
import { useStellar } from '../../../../provider/StellarContextProvider.js';
|
|
9
|
+
import { OptionsList } from '../../../Common/OptionsList/index.js';
|
|
10
|
+
import { OrderHeader } from '../../../Common/OrderHeader/index.js';
|
|
11
|
+
import SelectAnotherMethodButton from '../../../Common/SelectAnotherMethodButton/index.js';
|
|
12
|
+
import WalletPaymentSpinner from '../../../Spinners/WalletPaymentSpinner/index.js';
|
|
13
|
+
|
|
14
|
+
const ConnectSolana = () => {
|
|
15
|
+
const { setStellarConnector, setRoute, log } = usePayContext();
|
|
16
|
+
const { kit, setPublicKey, setConnector } = useStellar();
|
|
17
|
+
// State to store the fetched Stellar wallets
|
|
18
|
+
const [stellarWallets, setStellarWallets] = useState([]);
|
|
19
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
20
|
+
// Fetch Stellar wallets when the kit is available
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
const fetchStellarWallets = async () => {
|
|
23
|
+
if (!kit)
|
|
24
|
+
return;
|
|
25
|
+
setIsLoading(true);
|
|
26
|
+
try {
|
|
27
|
+
const wallets = await kit.getSupportedWallets();
|
|
28
|
+
console.log('Stellar wallets:', wallets);
|
|
29
|
+
setStellarWallets(wallets);
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
console.error('Error fetching Stellar wallets:', error);
|
|
33
|
+
setStellarWallets([]);
|
|
34
|
+
}
|
|
35
|
+
finally {
|
|
36
|
+
setIsLoading(false);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
fetchStellarWallets();
|
|
40
|
+
}, [kit]);
|
|
41
|
+
// Create options list from the fetched wallets
|
|
42
|
+
const stellarOptions = useMemo(() => {
|
|
43
|
+
return stellarWallets
|
|
44
|
+
.filter((wallet) => wallet.isAvailable)
|
|
45
|
+
.map((wallet) => ({
|
|
46
|
+
id: wallet.id,
|
|
47
|
+
title: wallet.name.toLowerCase().split(' ').map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()).join(' '),
|
|
48
|
+
icons: [
|
|
49
|
+
jsx(SquircleIcon, { icon: wallet.icon, alt: wallet.name }, wallet.id),
|
|
50
|
+
],
|
|
51
|
+
onClick: async () => {
|
|
52
|
+
log("wallet.name ", wallet.id);
|
|
53
|
+
await kit?.setWallet(wallet.id);
|
|
54
|
+
kit?.getAddress().then(({ address }) => {
|
|
55
|
+
// Stellar Provider
|
|
56
|
+
setPublicKey(address);
|
|
57
|
+
setConnector(wallet);
|
|
58
|
+
// PayContext
|
|
59
|
+
setStellarConnector(wallet.id);
|
|
60
|
+
setRoute(ROUTES.STELLAR_CONNECTOR, {
|
|
61
|
+
event: "click-stellar-wallet",
|
|
62
|
+
walletName: wallet.name,
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
},
|
|
66
|
+
}));
|
|
67
|
+
}, [stellarWallets, kit]);
|
|
68
|
+
return (jsx(PageContent, { children: isLoading ? (jsx(WalletPaymentSpinner, { logo: jsx(Stellar, {}), logoShape: "circle", loading: true, unavailable: false })) : (jsxs(Fragment, { children: [stellarOptions.length === 0 && (jsxs(ModalContent, { style: {
|
|
69
|
+
display: "flex",
|
|
70
|
+
flexDirection: "column",
|
|
71
|
+
alignItems: "center",
|
|
72
|
+
justifyContent: "center",
|
|
73
|
+
paddingTop: 16,
|
|
74
|
+
paddingBottom: 16,
|
|
75
|
+
gap: 16,
|
|
76
|
+
}, children: [jsx(ModalH1, { children: "No Stellar wallets detected." }), jsx(SelectAnotherMethodButton, {})] })), stellarOptions.length > 0 && (jsxs(Fragment, { children: [jsx(OrderHeader, { minified: true, show: "stellar" }), jsx(OptionsList, { options: stellarOptions })] }))] })) }));
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
export { ConnectSolana as default };
|
|
80
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../src/components/Pages/Solana/ConnectStellar/index.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs","_Fragment"],"mappings":";;;;;;;;;;;;;AA6BM,MAAA,aAAa,GAAa,MAAK;IACnC,MAAM,EAAE,mBAAmB,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,aAAa,EAAE,CAAC;IAC/D,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,UAAU,EAAE,CAAC;;IAGzD,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAa,EAAE,CAAC,CAAC;IACrE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;;IAGlD,SAAS,CAAC,MAAK;AACb,QAAA,MAAM,mBAAmB,GAAG,YAAW;AACrC,YAAA,IAAI,CAAC,GAAG;gBAAE,OAAO;YACjB,YAAY,CAAC,IAAI,CAAC,CAAC;AACnB,YAAA,IAAI;AACF,gBAAA,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,mBAAmB,EAAE,CAAC;AAChD,gBAAA,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;gBACzC,iBAAiB,CAAC,OAAO,CAAC,CAAC;aAC5B;YAAC,OAAO,KAAK,EAAE;AACd,gBAAA,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;gBACxD,iBAAiB,CAAC,EAAE,CAAC,CAAC;aACvB;oBAAS;gBACR,YAAY,CAAC,KAAK,CAAC,CAAC;aACrB;AACH,SAAC,CAAC;AAEF,QAAA,mBAAmB,EAAE,CAAC;AACxB,KAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;;AAGV,IAAA,MAAM,cAAc,GAAG,OAAO,CAAC,MAAK;AAClC,QAAA,OAAO,cAAc;aAClB,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,WAAW,CAAC;AACtC,aAAA,GAAG,CAAC,CAAC,MAAM,MAAM;YAChB,EAAE,EAAE,MAAM,CAAC,EAAE;AACb,YAAA,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAC7H,YAAA,KAAK,EAAE;AACL,gBAAAA,GAAA,CAAC,YAAY,EAEX,EAAA,IAAI,EAAE,MAAM,CAAC,IAAI,EACjB,GAAG,EAAE,MAAM,CAAC,IAAI,IAFX,MAAM,CAAC,EAAE,CAGd;AACH,aAAA;YACD,OAAO,EAAE,YAAW;AAClB,gBAAA,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;gBAE/B,MAAM,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAChC,GAAG,EAAE,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,KAAI;;oBAErC,YAAY,CAAC,OAAO,CAAC,CAAC;oBACtB,YAAY,CAAC,MAAM,CAAC,CAAC;;AAGrB,oBAAA,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC/B,oBAAA,QAAQ,CAAC,MAAM,CAAC,iBAAiB,EAAE;AACjC,wBAAA,KAAK,EAAE,sBAAsB;wBAC7B,UAAU,EAAE,MAAM,CAAC,IAAI;AACxB,qBAAA,CAAC,CAAC;AACL,iBAAC,CAAC,CAAC;aACJ;AACF,SAAA,CAAC,CAAC,CAAC;AACR,KAAC,EAAE,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC;IAE1B,QACEA,IAAC,WAAW,EAAA,EAAA,QAAA,EACT,SAAS,IACRA,GAAA,CAAC,oBAAoB,EACnB,EAAA,IAAI,EAAEA,GAAC,CAAA,OAAO,KAAG,EACjB,SAAS,EAAC,QAAQ,EAClB,OAAO,EAAE,IAAI,EACb,WAAW,EAAE,KAAK,GAClB,KAEFC,IAAA,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CAEG,cAAc,CAAC,MAAM,KAAK,CAAC,KAC1BD,IAAC,CAAA,YAAY,EACX,EAAA,KAAK,EAAE;AACL,wBAAA,OAAO,EAAE,MAAM;AACf,wBAAA,aAAa,EAAE,QAAQ;AACvB,wBAAA,UAAU,EAAE,QAAQ;AACpB,wBAAA,cAAc,EAAE,QAAQ;AACxB,wBAAA,UAAU,EAAE,EAAE;AACd,wBAAA,aAAa,EAAE,EAAE;AACjB,wBAAA,GAAG,EAAE,EAAE;AACR,qBAAA,EAAA,QAAA,EAAA,CAEDD,IAAC,OAAO,EAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,CAAuC,EAC/CA,GAAC,CAAA,yBAAyB,KAAG,CAChB,EAAA,CAAA,CAChB,EAGA,cAAc,CAAC,MAAM,GAAG,CAAC,KACxBC,4BACED,GAAC,CAAA,WAAW,EAAC,EAAA,QAAQ,QAAC,IAAI,EAAC,SAAS,EAAG,CAAA,EACvCA,IAAC,WAAW,EAAA,EAAC,OAAO,EAAE,cAAc,GAAI,CACvC,EAAA,CAAA,CACJ,IACA,CACJ,EAAA,CACW,EACd;AACJ;;;;"}
|
|
@@ -1,27 +1,38 @@
|
|
|
1
1
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
2
|
import { useState, useEffect } from 'react';
|
|
3
|
-
import { ROUTES } from '../../../../constants/routes.js';
|
|
4
3
|
import { usePayContext } from '../../../../hooks/usePayContext.js';
|
|
5
|
-
import { WalletSignTransactionError, WalletSendTransactionError } from '@solana/wallet-adapter-base';
|
|
6
4
|
import { PageContent, ModalContent, ModalH1, Link } from '../../../Common/Modal/styles.js';
|
|
7
|
-
import { getChainExplorerTxUrl,
|
|
5
|
+
import { getChainExplorerTxUrl, rozoSolana, rozoSolanaUSDC, base } from '@rozoai/intent-common';
|
|
6
|
+
import { WalletSignTransactionError, WalletSendTransactionError } from '@solana/wallet-adapter-base';
|
|
7
|
+
import { ROUTES } from '../../../../constants/routes.js';
|
|
8
|
+
import { SOLANA_USDC_ASSET_CODE, ROZO_DAIMO_APP_ID, ROZO_SOLANA_USDC_MINT_ADDRESS } from '../../../../constants/rozoConfig.js';
|
|
8
9
|
import { useRozoPay } from '../../../../hooks/useDaimoPay.js';
|
|
10
|
+
import { useSolanaDestination } from '../../../../hooks/useSolanaDestination.js';
|
|
11
|
+
import { createRozoPaymentRequest, createRozoPayment } from '../../../../utils/api/payment.js';
|
|
12
|
+
import { roundTokenAmount } from '../../../../utils/format.js';
|
|
13
|
+
import { getSupportUrl } from '../../../../utils/supportUrl.js';
|
|
9
14
|
import Button from '../../../Common/Button/index.js';
|
|
10
15
|
import PaymentBreakdown from '../../../Common/PaymentBreakdown/index.js';
|
|
11
16
|
import TokenLogoSpinner from '../../../Spinners/TokenLogoSpinner/index.js';
|
|
12
17
|
|
|
13
18
|
var PayState;
|
|
14
19
|
(function (PayState) {
|
|
15
|
-
PayState["
|
|
20
|
+
PayState["CreatingPayment"] = "Creating Payment Record...";
|
|
21
|
+
PayState["RequestingPayment"] = "Waiting for Payment";
|
|
16
22
|
PayState["RequestCancelled"] = "Payment Cancelled";
|
|
17
23
|
PayState["RequestFailed"] = "Payment Failed";
|
|
18
24
|
PayState["RequestSuccessful"] = "Payment Successful";
|
|
19
25
|
})(PayState || (PayState = {}));
|
|
20
26
|
const PayWithSolanaToken = () => {
|
|
21
27
|
const { triggerResize, paymentState, setRoute, log, trpc } = usePayContext();
|
|
22
|
-
const { selectedSolanaTokenOption,
|
|
23
|
-
useRozoPay();
|
|
28
|
+
const { selectedSolanaTokenOption, payWithSolanaTokenRozo: payWithSolanaTokenImpl, payParams, setRozoPaymentId, setTxHash } = paymentState;
|
|
29
|
+
const { order, hydrateOrder, setPaymentRozoCompleted } = useRozoPay();
|
|
24
30
|
const [payState, setPayStateInner] = useState(PayState.RequestingPayment);
|
|
31
|
+
const [txURL, setTxURL] = useState();
|
|
32
|
+
const [isLoading, setIsLoading] = useState(true);
|
|
33
|
+
const [activeRozoPayment, setActiveRozoPayment] = useState();
|
|
34
|
+
// Get the destination address and payment direction using our custom hook
|
|
35
|
+
const { destinationAddress, isPayInSolanaOutBase } = useSolanaDestination(payParams);
|
|
25
36
|
const setPayState = (state) => {
|
|
26
37
|
if (state === payState)
|
|
27
38
|
return;
|
|
@@ -32,15 +43,84 @@ const PayWithSolanaToken = () => {
|
|
|
32
43
|
data: { state },
|
|
33
44
|
});
|
|
34
45
|
};
|
|
35
|
-
|
|
46
|
+
// ROZO API CALL
|
|
47
|
+
const handleCreatePayment = async (payToken, destinationAddress) => {
|
|
48
|
+
setPayState(PayState.CreatingPayment);
|
|
49
|
+
let amount = roundTokenAmount(payToken.amount, payToken.token);
|
|
50
|
+
const paymentData = createRozoPaymentRequest({
|
|
51
|
+
appId: payParams?.appId ?? ROZO_DAIMO_APP_ID,
|
|
52
|
+
display: {
|
|
53
|
+
intent: order?.metadata?.intent ?? "",
|
|
54
|
+
paymentValue: String(payToken.usd),
|
|
55
|
+
currency: "USD",
|
|
56
|
+
},
|
|
57
|
+
preferredChain: String(rozoSolanaUSDC.chainId),
|
|
58
|
+
preferredToken: "USDC",
|
|
59
|
+
destination: {
|
|
60
|
+
destinationAddress: isPayInSolanaOutBase
|
|
61
|
+
? payParams?.toAddress
|
|
62
|
+
: destinationAddress,
|
|
63
|
+
chainId: isPayInSolanaOutBase
|
|
64
|
+
? String(base.chainId)
|
|
65
|
+
: String(rozoSolana.chainId),
|
|
66
|
+
amountUnits: amount,
|
|
67
|
+
tokenSymbol: isPayInSolanaOutBase
|
|
68
|
+
? rozoSolanaUSDC.symbol
|
|
69
|
+
: SOLANA_USDC_ASSET_CODE,
|
|
70
|
+
tokenAddress: isPayInSolanaOutBase
|
|
71
|
+
? rozoSolanaUSDC.token
|
|
72
|
+
: ROZO_SOLANA_USDC_MINT_ADDRESS,
|
|
73
|
+
},
|
|
74
|
+
externalId: order?.externalId ?? "",
|
|
75
|
+
metadata: {
|
|
76
|
+
daimoOrderId: order?.id ?? "",
|
|
77
|
+
...(order?.metadata ?? {}),
|
|
78
|
+
},
|
|
79
|
+
});
|
|
80
|
+
// API Call
|
|
81
|
+
const response = await createRozoPayment(paymentData);
|
|
82
|
+
if (!response?.data?.id) {
|
|
83
|
+
throw new Error(response?.error?.message ?? "Payment creation failed");
|
|
84
|
+
}
|
|
85
|
+
setActiveRozoPayment(response.data);
|
|
86
|
+
return response.data;
|
|
87
|
+
};
|
|
88
|
+
// @NOTE: This is Pay In Solana by Rozo
|
|
89
|
+
// FOR TRANSFER ACTION
|
|
36
90
|
const handleTransfer = async (option) => {
|
|
37
|
-
|
|
91
|
+
setIsLoading(true);
|
|
38
92
|
try {
|
|
39
|
-
|
|
40
|
-
|
|
93
|
+
if (!destinationAddress) {
|
|
94
|
+
throw new Error("Solana destination address is required");
|
|
95
|
+
}
|
|
96
|
+
// await hydrateOrder(undefined, option);
|
|
97
|
+
let payment = activeRozoPayment;
|
|
98
|
+
if (!payment) {
|
|
99
|
+
// Use destinationAddress directly as it's now the middleware address
|
|
100
|
+
payment = await handleCreatePayment(option.required, destinationAddress);
|
|
101
|
+
}
|
|
102
|
+
setRozoPaymentId(payment.id);
|
|
103
|
+
setPayState(PayState.RequestingPayment);
|
|
104
|
+
const paymentData = {
|
|
105
|
+
tokenAddress: payment.metadata.payintokenaddress ?? SOLANA_USDC_ASSET_CODE,
|
|
106
|
+
destAddress: isPayInSolanaOutBase
|
|
107
|
+
? payment.metadata.receivingAddress
|
|
108
|
+
: destinationAddress,
|
|
109
|
+
usdcAmount: payment.destination.amountUnits,
|
|
110
|
+
solanaAmount: roundTokenAmount(option.required.amount, option.required.token),
|
|
111
|
+
};
|
|
112
|
+
if (payment.metadata?.memo) {
|
|
113
|
+
Object.assign(paymentData, { memo: payment.metadata.memo });
|
|
114
|
+
}
|
|
115
|
+
const result = await payWithSolanaTokenImpl(option, paymentData);
|
|
116
|
+
console.log("[PAY SOLANA] Result", result, getChainExplorerTxUrl(rozoSolana.chainId, result.txHash));
|
|
117
|
+
setTxURL(getChainExplorerTxUrl(rozoSolana.chainId, result.txHash));
|
|
41
118
|
if (result.success) {
|
|
42
119
|
setPayState(PayState.RequestSuccessful);
|
|
120
|
+
setTxHash(result.txHash);
|
|
43
121
|
setTimeout(() => {
|
|
122
|
+
setActiveRozoPayment(undefined);
|
|
123
|
+
setPaymentRozoCompleted(true);
|
|
44
124
|
setRoute(ROUTES.CONFIRMATION, { event: "wait-pay-with-solana" });
|
|
45
125
|
}, 200);
|
|
46
126
|
}
|
|
@@ -59,6 +139,34 @@ const PayWithSolanaToken = () => {
|
|
|
59
139
|
}
|
|
60
140
|
}
|
|
61
141
|
};
|
|
142
|
+
// @NOTE: This is Daimo Pay In Solana (by default)
|
|
143
|
+
// const handleTransfer = async (option: WalletPaymentOption) => {
|
|
144
|
+
// setPayState(PayState.RequestingPayment);
|
|
145
|
+
// try {
|
|
146
|
+
// const result = await payWithSolanaToken(option);
|
|
147
|
+
// setTxURL(getChainExplorerTxUrl(solana.chainId, result.txHash));
|
|
148
|
+
// if (result.success) {
|
|
149
|
+
// setPayState(PayState.RequestSuccessful);
|
|
150
|
+
// setTimeout(() => {
|
|
151
|
+
// setRoute(ROUTES.CONFIRMATION, { event: "wait-pay-with-solana" });
|
|
152
|
+
// }, 200);
|
|
153
|
+
// } else {
|
|
154
|
+
// setPayState(PayState.RequestFailed);
|
|
155
|
+
// }
|
|
156
|
+
// } catch (error) {
|
|
157
|
+
// console.error(error);
|
|
158
|
+
// if (
|
|
159
|
+
// error instanceof WalletSignTransactionError ||
|
|
160
|
+
// error instanceof WalletSendTransactionError
|
|
161
|
+
// ) {
|
|
162
|
+
// setPayState(PayState.RequestCancelled);
|
|
163
|
+
// } else {
|
|
164
|
+
// setPayState(PayState.RequestFailed);
|
|
165
|
+
// }
|
|
166
|
+
// }
|
|
167
|
+
// };
|
|
168
|
+
// @NOTE: This is Pay In Solana by Rozo
|
|
169
|
+
// FOR TRANSFER ACTION
|
|
62
170
|
useEffect(() => {
|
|
63
171
|
if (!selectedSolanaTokenOption)
|
|
64
172
|
return;
|
|
@@ -72,7 +180,9 @@ const PayWithSolanaToken = () => {
|
|
|
72
180
|
if (selectedSolanaTokenOption == null) {
|
|
73
181
|
return jsx(PageContent, {});
|
|
74
182
|
}
|
|
75
|
-
return (jsxs(PageContent, { children: [selectedSolanaTokenOption && (jsx(TokenLogoSpinner, { token: selectedSolanaTokenOption.required.token })), 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 && (jsx(Button, { onClick: () => handleTransfer(selectedSolanaTokenOption), children: "Retry Payment" }))
|
|
183
|
+
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 && (jsx(Button, { onClick: () => handleTransfer(selectedSolanaTokenOption), children: "Retry Payment" })), payState === PayState.RequestFailed && (jsx(Button, { onClick: () => {
|
|
184
|
+
window.open(getSupportUrl(order?.id?.toString() ?? "", `Pay with Solana token${txURL ? ` ${txURL}` : ""}`), "_blank");
|
|
185
|
+
}, children: "Contact Support" }))] })] }));
|
|
76
186
|
};
|
|
77
187
|
|
|
78
188
|
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"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../src/components/Pages/Solana/PayWithSolanaToken/index.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":"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"}
|
|
@@ -4,16 +4,16 @@ 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
6
|
import { getChainExplorerTxUrl, stellar, base, baseUSDC } from '@rozoai/intent-common';
|
|
7
|
+
import { ROZO_STELLAR_ADDRESS, ROZO_DAIMO_APP_ID, STELLAR_USDC_ASSET_CODE, STELLAR_USDC_ISSUER_PK } from '../../../../constants/rozoConfig.js';
|
|
7
8
|
import { useRozoPay } from '../../../../hooks/useDaimoPay.js';
|
|
8
9
|
import { useStellarDestination } from '../../../../hooks/useStellarDestination.js';
|
|
10
|
+
import { useStellar } from '../../../../provider/StellarContextProvider.js';
|
|
11
|
+
import { createRozoPaymentRequest, createRozoPayment } from '../../../../utils/api/payment.js';
|
|
12
|
+
import { roundTokenAmount } from '../../../../utils/format.js';
|
|
9
13
|
import { getSupportUrl } from '../../../../utils/supportUrl.js';
|
|
10
14
|
import Button from '../../../Common/Button/index.js';
|
|
11
15
|
import PaymentBreakdown from '../../../Common/PaymentBreakdown/index.js';
|
|
12
16
|
import TokenLogoSpinner from '../../../Spinners/TokenLogoSpinner/index.js';
|
|
13
|
-
import { roundTokenAmount } from '../../../../utils/format.js';
|
|
14
|
-
import { createRozoPaymentRequest, createRozoPayment } from '../../../../utils/api/payment.js';
|
|
15
|
-
import { ROZO_STELLAR_ADDRESS, ROZO_DAIMO_APP_ID, STELLAR_USDC_ASSET_CODE, STELLAR_USDC_ISSUER_PK } from '../../../../constants/rozoConfig.js';
|
|
16
|
-
import { useStellar } from '../../../../provider/StellarContextProvider.js';
|
|
17
17
|
|
|
18
18
|
var PayState;
|
|
19
19
|
(function (PayState) {
|
|
@@ -87,7 +87,7 @@ const PayWithStellarToken = () => {
|
|
|
87
87
|
if (!destinationAddress) {
|
|
88
88
|
throw new Error("Stellar destination address is required");
|
|
89
89
|
}
|
|
90
|
-
await hydrateOrder();
|
|
90
|
+
await hydrateOrder(undefined, option);
|
|
91
91
|
let payment = activeRozoPayment;
|
|
92
92
|
if (!payment) {
|
|
93
93
|
// Use destinationAddress directly as it's now the middleware address
|
|
@@ -95,13 +95,17 @@ const PayWithStellarToken = () => {
|
|
|
95
95
|
}
|
|
96
96
|
setRozoPaymentId(payment.id);
|
|
97
97
|
setPayState(PayState.RequestingPayment);
|
|
98
|
-
const
|
|
98
|
+
const paymentData = {
|
|
99
99
|
destAddress: isPayInStellarOutBase
|
|
100
|
-
? payment.
|
|
100
|
+
? payment.metadata.receivingAddress ?? ROZO_STELLAR_ADDRESS
|
|
101
101
|
: destinationAddress,
|
|
102
102
|
usdcAmount: payment.destination.amountUnits,
|
|
103
103
|
stellarAmount: roundTokenAmount(option.required.amount, option.required.token),
|
|
104
|
-
}
|
|
104
|
+
};
|
|
105
|
+
if (payment.metadata?.memo) {
|
|
106
|
+
Object.assign(paymentData, { memo: payment.metadata.memo });
|
|
107
|
+
}
|
|
108
|
+
const result = await payWithStellarTokenImpl(option.required, paymentData);
|
|
105
109
|
setTxURL(getChainExplorerTxUrl(stellar.chainId, result.txHash));
|
|
106
110
|
if (result.success) {
|
|
107
111
|
setPayState(PayState.RequestSuccessful);
|
|
@@ -135,10 +139,10 @@ const PayWithStellarToken = () => {
|
|
|
135
139
|
// Give user time to see the UI before opening
|
|
136
140
|
const transferTimeout = setTimeout(() => handleTransfer(selectedStellarTokenOption), 100);
|
|
137
141
|
return () => clearTimeout(transferTimeout);
|
|
138
|
-
}, [selectedStellarTokenOption]);
|
|
142
|
+
}, [selectedStellarTokenOption]);
|
|
139
143
|
useEffect(() => {
|
|
140
144
|
triggerResize();
|
|
141
|
-
}, [payState]);
|
|
145
|
+
}, [payState]);
|
|
142
146
|
if (selectedStellarTokenOption == null) {
|
|
143
147
|
return jsx(PageContent, {});
|
|
144
148
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../../src/components/Pages/Stellar/PayWithStellarToken/index.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":";;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../src/components/Pages/Stellar/PayWithStellarToken/index.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":"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"}
|