@mintmoney/react 0.1.0-alpha.3 → 0.1.0-alpha.5
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/README.md +109 -0
- package/dist/css/styles.css +0 -2
- package/dist/esm/api/checkouts.js +16 -0
- package/dist/esm/api/checkouts.js.map +1 -0
- package/dist/esm/api/generated.js +554 -0
- package/dist/esm/api/generated.js.map +1 -0
- package/dist/esm/api/index.js +15 -0
- package/dist/esm/api/index.js.map +1 -0
- package/dist/esm/api/payments.js +23 -0
- package/dist/esm/api/payments.js.map +1 -0
- package/dist/esm/api/types.js +2 -0
- package/dist/esm/api/types.js.map +1 -0
- package/dist/esm/checkout/container.js +10 -0
- package/dist/esm/checkout/container.js.map +1 -0
- package/dist/esm/checkout/index.js +13 -0
- package/dist/esm/checkout/index.js.map +1 -0
- package/dist/esm/checkout/modal.js +65 -0
- package/dist/esm/checkout/modal.js.map +1 -0
- package/dist/esm/checkout/views/back.js +8 -0
- package/dist/esm/checkout/views/back.js.map +1 -0
- package/dist/esm/checkout/views/card-intent/details.js +12 -0
- package/dist/esm/checkout/views/card-intent/details.js.map +1 -0
- package/dist/esm/checkout/views/crypto-intent/curreny.js +28 -0
- package/dist/esm/checkout/views/crypto-intent/curreny.js.map +1 -0
- package/dist/esm/checkout/views/crypto-intent/direct-details.js +25 -0
- package/dist/esm/checkout/views/crypto-intent/direct-details.js.map +1 -0
- package/dist/esm/checkout/views/crypto-intent/methods.js +26 -0
- package/dist/esm/checkout/views/crypto-intent/methods.js.map +1 -0
- package/dist/esm/checkout/views/crypto-intent/processing.js +41 -0
- package/dist/esm/checkout/views/crypto-intent/processing.js.map +1 -0
- package/dist/esm/checkout/views/crypto-intent/success.js +20 -0
- package/dist/esm/checkout/views/crypto-intent/success.js.map +1 -0
- package/dist/esm/checkout/views/initial.js +32 -0
- package/dist/esm/checkout/views/initial.js.map +1 -0
- package/dist/esm/checkout/views/method-select.js +17 -0
- package/dist/esm/checkout/views/method-select.js.map +1 -0
- package/dist/esm/components/icons/checkMark.js +1 -1
- package/dist/esm/components/icons/close.js +1 -1
- package/dist/esm/components/lists/index.js +1 -1
- package/dist/esm/components/lists/index.js.map +1 -1
- package/dist/esm/context.js +1 -1
- package/dist/esm/context.js.map +1 -1
- package/dist/esm/index.js +4 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/state/checkout/store.js +220 -0
- package/dist/esm/state/checkout/store.js.map +1 -0
- package/dist/esm/utils/cn.js +4 -0
- package/dist/esm/utils/cn.js.map +1 -0
- package/dist/types/api/checkouts.d.ts +9 -0
- package/dist/types/api/checkouts.d.ts.map +1 -0
- package/dist/types/api/generated.d.ts +903 -0
- package/dist/types/api/generated.d.ts.map +1 -0
- package/dist/types/api/index.d.ts +5 -0
- package/dist/types/api/index.d.ts.map +1 -0
- package/dist/types/api/payments.d.ts +6 -0
- package/dist/types/api/payments.d.ts.map +1 -0
- package/dist/types/api/types.d.ts +19 -0
- package/dist/types/api/types.d.ts.map +1 -0
- package/dist/types/checkout/container.d.ts +2 -0
- package/dist/types/checkout/container.d.ts.map +1 -0
- package/dist/types/checkout/index.d.ts +6 -0
- package/dist/types/checkout/index.d.ts.map +1 -0
- package/dist/types/checkout/modal.d.ts +10 -0
- package/dist/types/checkout/modal.d.ts.map +1 -0
- package/dist/types/checkout/views/back.d.ts +6 -0
- package/dist/types/checkout/views/back.d.ts.map +1 -0
- package/dist/types/checkout/views/card-intent/details.d.ts +3 -0
- package/dist/types/checkout/views/card-intent/details.d.ts.map +1 -0
- package/dist/types/checkout/views/crypto-intent/curreny.d.ts +3 -0
- package/dist/types/checkout/views/crypto-intent/curreny.d.ts.map +1 -0
- package/dist/types/checkout/views/crypto-intent/direct-details.d.ts +3 -0
- package/dist/types/checkout/views/crypto-intent/direct-details.d.ts.map +1 -0
- package/dist/types/checkout/views/crypto-intent/methods.d.ts +3 -0
- package/dist/types/checkout/views/crypto-intent/methods.d.ts.map +1 -0
- package/dist/types/checkout/views/crypto-intent/processing.d.ts +3 -0
- package/dist/types/checkout/views/crypto-intent/processing.d.ts.map +1 -0
- package/dist/types/checkout/views/crypto-intent/success.d.ts +7 -0
- package/dist/types/checkout/views/crypto-intent/success.d.ts.map +1 -0
- package/dist/types/checkout/views/initial.d.ts +7 -0
- package/dist/types/checkout/views/initial.d.ts.map +1 -0
- package/dist/types/checkout/views/method-select.d.ts +3 -0
- package/dist/types/checkout/views/method-select.d.ts.map +1 -0
- package/dist/types/components/lists/index.d.ts +2 -1
- package/dist/types/components/lists/index.d.ts.map +1 -1
- package/dist/types/index.d.ts +4 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/state/checkout/store.d.ts +66 -0
- package/dist/types/state/checkout/store.d.ts.map +1 -0
- package/dist/types/utils/cn.d.ts +4 -0
- package/dist/types/utils/cn.d.ts.map +1 -0
- package/package.json +55 -65
- package/dist/esm/components/buttons/buttons.stories.js +0 -18
- package/dist/esm/components/buttons/buttons.stories.js.map +0 -1
- package/dist/esm/components/lists/lists.stories.js +0 -42
- package/dist/esm/components/lists/lists.stories.js.map +0 -1
- package/dist/esm/components/loading/loading.stories.js +0 -8
- package/dist/esm/components/loading/loading.stories.js.map +0 -1
- package/dist/esm/components/text/text.stories.js +0 -34
- package/dist/esm/components/text/text.stories.js.map +0 -1
- package/dist/esm/exports/components.js +0 -2
- package/dist/esm/exports/components.js.map +0 -1
- package/dist/esm/exports/config.js +0 -3
- package/dist/esm/exports/config.js.map +0 -1
- package/dist/esm/exports/index.js +0 -4
- package/dist/esm/exports/index.js.map +0 -1
- package/dist/esm/exports/themes.js +0 -2
- package/dist/esm/exports/themes.js.map +0 -1
- package/dist/types/components/buttons/buttons.stories.d.ts +0 -7
- package/dist/types/components/buttons/buttons.stories.d.ts.map +0 -1
- package/dist/types/components/lists/lists.stories.d.ts +0 -27
- package/dist/types/components/lists/lists.stories.d.ts.map +0 -1
- package/dist/types/components/loading/loading.stories.d.ts +0 -4
- package/dist/types/components/loading/loading.stories.d.ts.map +0 -1
- package/dist/types/components/text/text.stories.d.ts +0 -5
- package/dist/types/components/text/text.stories.d.ts.map +0 -1
- package/dist/types/exports/components.d.ts +0 -2
- package/dist/types/exports/components.d.ts.map +0 -1
- package/dist/types/exports/config.d.ts +0 -3
- package/dist/types/exports/config.d.ts.map +0 -1
- package/dist/types/exports/index.d.ts +0 -5
- package/dist/types/exports/index.d.ts.map +0 -1
- package/dist/types/exports/themes.d.ts +0 -2
- package/dist/types/exports/themes.d.ts.map +0 -1
- package/src/components/index.ts +0 -6
- package/src/components/modals/index.ts +0 -3
- package/src/config.ts +0 -29
- package/src/exports/components.ts +0 -1
- package/src/exports/config.ts +0 -2
- package/src/exports/index.ts +0 -7
- package/src/exports/themes.ts +0 -1
- package/src/index.ts +0 -0
- package/src/themes/types.ts +0 -35
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { ModalWithView } from "../components/modals/modal-with-views.js";
|
|
3
|
+
import { MethodSelectViewContent } from "./views/method-select.js";
|
|
4
|
+
import { ModalBackButton } from "./views/back.js";
|
|
5
|
+
import { CryptoIntentViewContent } from "./views/crypto-intent/methods.js";
|
|
6
|
+
import { CardIntentViewContent } from "./views/card-intent/details.js";
|
|
7
|
+
import { CryptontentSelectCurrencyViewContent } from "./views/crypto-intent/curreny.js";
|
|
8
|
+
import { CryptoIntentDirectDetailsViewContent } from "./views/crypto-intent/direct-details.js";
|
|
9
|
+
import { CryptoIntentPaymentStatusViewContent } from "./views/crypto-intent/processing.js";
|
|
10
|
+
import { InitialiseCheckoutViewContent } from "./views/initial.js";
|
|
11
|
+
import { CryptoIntentPaymentSuccessViewContent } from "./views/crypto-intent/success.js";
|
|
12
|
+
export const CheckoutModal = (props) => {
|
|
13
|
+
return (_jsx(ModalWithView, { className: "mm-checkout-modal", initialView: "initial", isOpen: props.open, onOpenChange: props.onOpenChange, views: {
|
|
14
|
+
initial: {
|
|
15
|
+
title: "",
|
|
16
|
+
content: () => (_jsx(InitialiseCheckoutViewContent, { checkoutId: props.checkoutId, amount: props.amount })),
|
|
17
|
+
},
|
|
18
|
+
methods: {
|
|
19
|
+
title: "Order Summary",
|
|
20
|
+
content: () => _jsx(MethodSelectViewContent, {}),
|
|
21
|
+
},
|
|
22
|
+
cryptoIntent: {
|
|
23
|
+
title: "Pay with Crypto",
|
|
24
|
+
content: () => _jsx(CryptoIntentViewContent, {}),
|
|
25
|
+
footer: () => _jsx(ModalBackButton, { view: "methods" }),
|
|
26
|
+
},
|
|
27
|
+
cryptoIntentSelectCurrency: {
|
|
28
|
+
title: "Select Currency",
|
|
29
|
+
content: () => _jsx(CryptontentSelectCurrencyViewContent, {}),
|
|
30
|
+
footer: () => _jsx(ModalBackButton, { view: "cryptoIntent" }),
|
|
31
|
+
},
|
|
32
|
+
cryptoIntentDirectDetails: {
|
|
33
|
+
title: "Pay Direct",
|
|
34
|
+
content: () => _jsx(CryptoIntentDirectDetailsViewContent, {}),
|
|
35
|
+
footer: () => _jsx(ModalBackButton, { view: "cryptoIntent" }),
|
|
36
|
+
},
|
|
37
|
+
cryptoIntentPaymentStatus: {
|
|
38
|
+
title: "Payment Processing",
|
|
39
|
+
content: () => _jsx(CryptoIntentPaymentStatusViewContent, {}),
|
|
40
|
+
},
|
|
41
|
+
cryptoIntentPaymentSuccess: {
|
|
42
|
+
title: "Payment Successful",
|
|
43
|
+
content: () => (_jsx(CryptoIntentPaymentSuccessViewContent, { onClose: props.onOpenChange })),
|
|
44
|
+
},
|
|
45
|
+
cardIntent: {
|
|
46
|
+
title: "Pay by Card",
|
|
47
|
+
content: () => _jsx(CardIntentViewContent, {}),
|
|
48
|
+
footer: () => _jsx(ModalBackButton, { view: "methods" }),
|
|
49
|
+
},
|
|
50
|
+
success: {
|
|
51
|
+
title: "Payment Successful",
|
|
52
|
+
header: () => _jsx("p", { className: "", children: "Transfer complete" }),
|
|
53
|
+
content: () => _jsx(_Fragment, {}),
|
|
54
|
+
footer: () => _jsx("button", { className: "", children: "Success" }),
|
|
55
|
+
},
|
|
56
|
+
failed: {
|
|
57
|
+
title: "Payment Failed",
|
|
58
|
+
header: () => _jsx("p", { className: "", children: "Failed" }),
|
|
59
|
+
content: () => _jsx(_Fragment, {}),
|
|
60
|
+
navigateButtonPosition: "center",
|
|
61
|
+
navigateShouldGoToView: "methods",
|
|
62
|
+
},
|
|
63
|
+
} }));
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=modal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modal.js","sourceRoot":"","sources":["../../../src/checkout/modal.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useModalWithView, StyledButton } from "../../components/index.js";
|
|
3
|
+
const ModalBackButton = ({ view }) => {
|
|
4
|
+
const { goToView } = useModalWithView();
|
|
5
|
+
return (_jsx(StyledButton, { onClick: () => goToView(view), variant: "secondary", children: "Back" }));
|
|
6
|
+
};
|
|
7
|
+
export { ModalBackButton };
|
|
8
|
+
//# sourceMappingURL=back.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"back.js","sourceRoot":"","sources":["../../../../src/checkout/views/back.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAM3E,MAAM,eAAe,GAAG,CAAC,EAAE,IAAI,EAAmB,EAAE,EAAE;IACpD,MAAM,EAAE,QAAQ,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAExC,OAAO,CACL,KAAC,YAAY,IAAC,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAW,qBAElD,CAChB,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useRef } from "react";
|
|
3
|
+
import { useMintMoneyConfig } from "../../../context.js";
|
|
4
|
+
import { StyledButton } from "../../../components/buttons/index.js";
|
|
5
|
+
import { ModalViewContainer } from "../../container.js";
|
|
6
|
+
const CardIntentViewContent = () => {
|
|
7
|
+
const modalRef = useRef(null);
|
|
8
|
+
const config = useMintMoneyConfig();
|
|
9
|
+
return (_jsx(ModalViewContainer, { ref: modalRef, children: _jsxs("div", { className: "button-group", children: [_jsx(StyledButton, { theme: config.theme.btn.primary, children: "Connect Wallet" }), _jsx(StyledButton, { theme: config.theme.btn.primary, children: "Direct Payment" })] }) }));
|
|
10
|
+
};
|
|
11
|
+
export { CardIntentViewContent };
|
|
12
|
+
//# sourceMappingURL=details.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"details.js","sourceRoot":"","sources":["../../../../../src/checkout/views/card-intent/details.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAEpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,qBAAqB,GAAG,GAAG,EAAE;IACjC,MAAM,QAAQ,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;IAEpC,OAAO,CACL,KAAC,kBAAkB,IAAC,GAAG,EAAE,QAAQ,YAC/B,eAAK,SAAS,EAAC,cAAc,aAC3B,KAAC,YAAY,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,+BAE9B,EACf,KAAC,YAAY,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,+BAE9B,IACX,GACa,CACtB,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useRef } from "react";
|
|
3
|
+
import { useModalWithView, SelectableList, Text, Loader, } from "../../../components/index.js";
|
|
4
|
+
import { useCheckoutStore, ACTIONS, createCheckoutCryptoPaymentAttempt, } from "../../../state/checkout/store.js";
|
|
5
|
+
import { ModalViewContainer } from "../../container.js";
|
|
6
|
+
import { useMintMoneyConfig } from "../../../context.js";
|
|
7
|
+
const CryptontentSelectCurrencyViewContent = () => {
|
|
8
|
+
const modalRef = useRef(null);
|
|
9
|
+
const { goToView } = useModalWithView();
|
|
10
|
+
const { checkout, cryptoCurrencies, loading } = useCheckoutStore();
|
|
11
|
+
const config = useMintMoneyConfig();
|
|
12
|
+
const isLoading = loading[ACTIONS.GET_CRYPTO_CURRENCIES] ||
|
|
13
|
+
loading[ACTIONS.CREATE_PAYMENT_ATTEMPT];
|
|
14
|
+
if (checkout && !checkout.checkout_config.crypto?.enabled)
|
|
15
|
+
goToView("failed", { reason: "crypto_not_enabled" });
|
|
16
|
+
const handleSelectCurrency = async (currency) => {
|
|
17
|
+
try {
|
|
18
|
+
await createCheckoutCryptoPaymentAttempt(currency);
|
|
19
|
+
goToView("cryptoIntentDirectDetails");
|
|
20
|
+
}
|
|
21
|
+
catch { }
|
|
22
|
+
};
|
|
23
|
+
if (isLoading)
|
|
24
|
+
return _jsx(Loader, {});
|
|
25
|
+
return (_jsxs(ModalViewContainer, { ref: modalRef, children: [_jsx(Text, { size: "base", color: config.theme.font.color.tertiary, weight: "normal", children: "Select a currency to complete payment with." }), _jsx(SelectableList, { items: cryptoCurrencies ?? [], getKey: (currency) => currency.asset, getLabel: (currency) => `${currency.chain_name} ${currency.asset_name}`, onSelect: handleSelectCurrency })] }));
|
|
26
|
+
};
|
|
27
|
+
export { CryptontentSelectCurrencyViewContent };
|
|
28
|
+
//# sourceMappingURL=curreny.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"curreny.js","sourceRoot":"","sources":["../../../../../src/checkout/views/crypto-intent/curreny.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE/B,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,IAAI,EACJ,MAAM,GACP,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,gBAAgB,EAChB,OAAO,EACP,kCAAkC,GACnC,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,oCAAoC,GAAG,GAAG,EAAE;IAChD,MAAM,QAAQ,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAC9C,MAAM,EAAE,QAAQ,EAAE,GAAG,gBAAgB,EAAE,CAAC;IACxC,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,GAAG,gBAAgB,EAAE,CAAC;IACnE,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;IAEpC,MAAM,SAAS,GACb,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC;QACtC,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAE1C,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO;QACvD,QAAQ,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC;IAEvD,MAAM,oBAAoB,GAAG,KAAK,EAAE,QAAwB,EAAE,EAAE;QAC9D,IAAI,CAAC;YACH,MAAM,kCAAkC,CAAC,QAAQ,CAAC,CAAC;YACnD,QAAQ,CAAC,2BAA2B,CAAC,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC,CAAC;IAEF,IAAI,SAAS;QAAE,OAAO,KAAC,MAAM,KAAG,CAAC;IAEjC,OAAO,CACL,MAAC,kBAAkB,IAAC,GAAG,EAAE,QAAQ,aAC/B,KAAC,IAAI,IACH,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EACvC,MAAM,EAAE,QAAQ,4DAGX,EAEP,KAAC,cAAc,IACb,KAAK,EAAE,gBAAgB,IAAI,EAAE,EAC7B,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EACpC,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,UAAU,EAAE,EACvE,QAAQ,EAAE,oBAAoB,GAC9B,IACiB,CACtB,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,oCAAoC,EAAE,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useRef } from "react";
|
|
3
|
+
import QRCode from "react-qr-code";
|
|
4
|
+
import { useModalWithView, StyledButton, Text, } from "../../../components/index.js";
|
|
5
|
+
import { useMintMoneyConfig } from "../../../context.js";
|
|
6
|
+
import { useCheckoutStore } from "../../../state/checkout/store.js";
|
|
7
|
+
import { ModalViewContainer } from "../../container.js";
|
|
8
|
+
const CryptoIntentDirectDetailsViewContent = () => {
|
|
9
|
+
const modalRef = useRef(null);
|
|
10
|
+
const { goToView } = useModalWithView();
|
|
11
|
+
const { cryptoPaymentAttempt } = useCheckoutStore();
|
|
12
|
+
const config = useMintMoneyConfig();
|
|
13
|
+
const handleConfirm = () => {
|
|
14
|
+
goToView("cryptoIntentPaymentStatus");
|
|
15
|
+
};
|
|
16
|
+
if (!cryptoPaymentAttempt) {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
const copyToClipboard = () => {
|
|
20
|
+
navigator.clipboard.writeText(cryptoPaymentAttempt.destination_address);
|
|
21
|
+
};
|
|
22
|
+
return (_jsxs(ModalViewContainer, { ref: modalRef, children: [_jsx(Text, { size: "base", weight: "normal", color: config.theme.font.color.secondary, children: "Scan the QR code or copy the address to send payment." }), _jsx("div", { className: "mm-qr-container", children: _jsx(QRCode, { value: cryptoPaymentAttempt.destination_address, size: 160 }) }), _jsxs("div", { className: "mm-address-container", children: [_jsx(Text, { size: "sm", weight: "light", color: config.theme.font.color.tertiary, children: cryptoPaymentAttempt.destination_address }), _jsx("button", { className: "copy-button", onClick: copyToClipboard, children: "Copy" })] }), _jsx(StyledButton, { onClick: handleConfirm, variant: "primary", children: "Confirm" })] }));
|
|
23
|
+
};
|
|
24
|
+
export { CryptoIntentDirectDetailsViewContent };
|
|
25
|
+
//# sourceMappingURL=direct-details.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"direct-details.js","sourceRoot":"","sources":["../../../../../src/checkout/views/crypto-intent/direct-details.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC/B,OAAO,MAAM,MAAM,eAAe,CAAC;AACnC,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,IAAI,GACL,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,oCAAoC,GAAG,GAAG,EAAE;IAChD,MAAM,QAAQ,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAC9C,MAAM,EAAE,QAAQ,EAAE,GAAG,gBAAgB,EAAE,CAAC;IACxC,MAAM,EAAE,oBAAoB,EAAE,GAAG,gBAAgB,EAAE,CAAC;IACpD,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;IAEpC,MAAM,aAAa,GAAG,GAAG,EAAE;QACzB,QAAQ,CAAC,2BAA2B,CAAC,CAAC;IACxC,CAAC,CAAC;IAEF,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,eAAe,GAAG,GAAG,EAAE;QAC3B,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;IAC1E,CAAC,CAAC;IAEF,OAAO,CACL,MAAC,kBAAkB,IAAC,GAAG,EAAE,QAAQ,aAC/B,KAAC,IAAI,IACH,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,QAAQ,EACf,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,sEAGnC,EAEP,cAAK,SAAS,EAAC,iBAAiB,YAC9B,KAAC,MAAM,IAAC,KAAK,EAAE,oBAAoB,CAAC,mBAAmB,EAAE,IAAI,EAAE,GAAG,GAAI,GAClE,EAEN,eAAK,SAAS,EAAC,sBAAsB,aACnC,KAAC,IAAI,IAAC,IAAI,EAAC,IAAI,EAAC,MAAM,EAAC,OAAO,EAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,YACnE,oBAAoB,CAAC,mBAAmB,GACpC,EACP,iBAAQ,SAAS,EAAC,aAAa,EAAC,OAAO,EAAE,eAAe,qBAE/C,IACL,EAEN,KAAC,YAAY,IAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,wBAEzC,IACI,CACtB,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,oCAAoC,EAAE,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useRef } from "react";
|
|
3
|
+
import { useModalWithView, SelectableList } from "../../../components/index.js";
|
|
4
|
+
import { ModalViewContainer } from "../../container.js";
|
|
5
|
+
const CryptoIntentViewContent = () => {
|
|
6
|
+
const modalRef = useRef(null);
|
|
7
|
+
const { goToView } = useModalWithView();
|
|
8
|
+
const methods = [
|
|
9
|
+
{
|
|
10
|
+
key: "wallet",
|
|
11
|
+
label: "Connect Wallet",
|
|
12
|
+
view: "cryptoIntentSelectCurrency",
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
key: "direct",
|
|
16
|
+
label: "Direct Payment",
|
|
17
|
+
view: "cryptoIntentSelectCurrency",
|
|
18
|
+
},
|
|
19
|
+
];
|
|
20
|
+
const handleMethodSelect = () => {
|
|
21
|
+
goToView("cryptoIntentSelectCurrency");
|
|
22
|
+
};
|
|
23
|
+
return (_jsx(ModalViewContainer, { ref: modalRef, children: _jsx(SelectableList, { items: methods, getKey: (method) => method.key, getLabel: (method) => method.label, onSelect: handleMethodSelect }) }));
|
|
24
|
+
};
|
|
25
|
+
export { CryptoIntentViewContent };
|
|
26
|
+
//# sourceMappingURL=methods.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"methods.js","sourceRoot":"","sources":["../../../../../src/checkout/views/crypto-intent/methods.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEhF,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,uBAAuB,GAAG,GAAG,EAAE;IACnC,MAAM,QAAQ,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAC9C,MAAM,EAAE,QAAQ,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAQxC,MAAM,OAAO,GAAuB;QAClC;YACE,GAAG,EAAE,QAAQ;YACb,KAAK,EAAE,gBAAgB;YACvB,IAAI,EAAE,4BAA4B;SACnC;QACD;YACE,GAAG,EAAE,QAAQ;YACb,KAAK,EAAE,gBAAgB;YACvB,IAAI,EAAE,4BAA4B;SACnC;KACF,CAAC;IAEF,MAAM,kBAAkB,GAAG,GAAG,EAAE;QAC9B,QAAQ,CAAC,4BAA4B,CAAC,CAAC;IACzC,CAAC,CAAC;IAEF,OAAO,CACL,KAAC,kBAAkB,IAAC,GAAG,EAAE,QAAQ,YAC/B,KAAC,cAAc,IACb,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,CAAC,MAAwB,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,EAChD,QAAQ,EAAE,CAAC,MAAwB,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,EACpD,QAAQ,EAAE,kBAAkB,GAC5B,GACiB,CACtB,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,uBAAuB,EAAE,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState } from "react";
|
|
3
|
+
import { useModalWithView, Loader, Text } from "../../../components/index.js";
|
|
4
|
+
import { useMintMoneyConfig } from "../../../context.js";
|
|
5
|
+
import { useCheckoutStore, getPayment } from "../../../state/checkout/store.js";
|
|
6
|
+
const POLL_INTERVAL = 5000;
|
|
7
|
+
const CryptoIntentPaymentStatusViewContent = () => {
|
|
8
|
+
const { goToView } = useModalWithView();
|
|
9
|
+
const { payment } = useCheckoutStore();
|
|
10
|
+
const config = useMintMoneyConfig();
|
|
11
|
+
const [_status, setStatus] = useState(payment?.status || "confirming_payment");
|
|
12
|
+
useEffect(() => {
|
|
13
|
+
let isMounted = true;
|
|
14
|
+
const pollPaymentStatus = async () => {
|
|
15
|
+
try {
|
|
16
|
+
const updatedPayment = await getPayment();
|
|
17
|
+
if (!updatedPayment || !isMounted)
|
|
18
|
+
return;
|
|
19
|
+
setStatus(updatedPayment.status);
|
|
20
|
+
if (updatedPayment.status) {
|
|
21
|
+
goToView("cryptoIntentPaymentSuccess");
|
|
22
|
+
}
|
|
23
|
+
else if (updatedPayment.status === "failed") {
|
|
24
|
+
goToView("paymentFailed");
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
console.error("Error fetching payment status:", error);
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
pollPaymentStatus();
|
|
32
|
+
const interval = setInterval(async () => await pollPaymentStatus(), POLL_INTERVAL);
|
|
33
|
+
return () => {
|
|
34
|
+
isMounted = false;
|
|
35
|
+
clearInterval(interval);
|
|
36
|
+
};
|
|
37
|
+
}, []);
|
|
38
|
+
return (_jsxs("div", { className: "loading-container", children: [_jsx(Loader, { asChild: true }), _jsx(Text, { size: "base", color: config.theme.font.color.tertiary, children: "Payment pending..." })] }));
|
|
39
|
+
};
|
|
40
|
+
export { CryptoIntentPaymentStatusViewContent };
|
|
41
|
+
//# sourceMappingURL=processing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"processing.js","sourceRoot":"","sources":["../../../../../src/checkout/views/crypto-intent/processing.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAEhF,MAAM,aAAa,GAAG,IAAI,CAAC;AAE3B,MAAM,oCAAoC,GAAG,GAAG,EAAE;IAChD,MAAM,EAAE,QAAQ,EAAE,GAAG,gBAAgB,EAAE,CAAC;IACxC,MAAM,EAAE,OAAO,EAAE,GAAG,gBAAgB,EAAE,CAAC;IACvC,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;IAEpC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,QAAQ,CACnC,OAAO,EAAE,MAAM,IAAI,oBAAoB,CACxC,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS,GAAG,IAAI,CAAC;QAErB,MAAM,iBAAiB,GAAG,KAAK,IAAI,EAAE;YACnC,IAAI,CAAC;gBACH,MAAM,cAAc,GAAG,MAAM,UAAU,EAAE,CAAC;gBAC1C,IAAI,CAAC,cAAc,IAAI,CAAC,SAAS;oBAAE,OAAO;gBAE1C,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;gBAEjC,IAAI,cAAc,CAAC,MAAM,EAAE,CAAC;oBAC1B,QAAQ,CAAC,4BAA4B,CAAC,CAAC;gBACzC,CAAC;qBAAM,IAAI,cAAc,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;oBAC9C,QAAQ,CAAC,eAAe,CAAC,CAAC;gBAC5B,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;YACzD,CAAC;QACH,CAAC,CAAC;QAEF,iBAAiB,EAAE,CAAC;QACpB,MAAM,QAAQ,GAAG,WAAW,CAC1B,KAAK,IAAI,EAAE,CAAC,MAAM,iBAAiB,EAAE,EACrC,aAAa,CACd,CAAC;QAEF,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,KAAK,CAAC;YAClB,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACL,eAAK,SAAS,EAAC,mBAAmB,aAChC,KAAC,MAAM,IAAC,OAAO,EAAE,IAAI,GAAI,EACzB,KAAC,IAAI,IAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,mCAElD,IACH,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,oCAAoC,EAAE,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { StyledButton, CheckMarkIcon, useModalWithView, } from "../../../components/index.js";
|
|
3
|
+
import { ModalViewContainer } from "../../container.js";
|
|
4
|
+
import { resetCheckoutStore } from "../../../state/checkout/store.js";
|
|
5
|
+
const CryptoIntentPaymentSuccessViewContent = ({ onClose }) => {
|
|
6
|
+
const { goToView } = useModalWithView();
|
|
7
|
+
const handleClose = () => {
|
|
8
|
+
resetCheckoutStore();
|
|
9
|
+
goToView("initial");
|
|
10
|
+
onClose(false);
|
|
11
|
+
};
|
|
12
|
+
return (_jsxs(ModalViewContainer, { style: { justifyContent: "flex-end" }, children: [_jsx("div", { style: {
|
|
13
|
+
position: "absolute",
|
|
14
|
+
top: "calc(50% - 24px)",
|
|
15
|
+
left: "50%",
|
|
16
|
+
transform: "translate(-50%, -50%)",
|
|
17
|
+
}, children: _jsx(CheckMarkIcon, { size: 64 }) }), _jsx(StyledButton, { style: { marginTop: "auto" }, variant: "primary", onClick: handleClose, children: "Complete" })] }));
|
|
18
|
+
};
|
|
19
|
+
export { CryptoIntentPaymentSuccessViewContent };
|
|
20
|
+
//# sourceMappingURL=success.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"success.js","sourceRoot":"","sources":["../../../../../src/checkout/views/crypto-intent/success.tsx"],"names":[],"mappings":";AACA,OAAO,EACL,YAAY,EACZ,aAAa,EACb,gBAAgB,GACjB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAMtE,MAAM,qCAAqC,GAAG,CAAC,EAAE,OAAO,EAAS,EAAE,EAAE;IACnE,MAAM,EAAE,QAAQ,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAExC,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,kBAAkB,EAAE,CAAC;QACrB,QAAQ,CAAC,SAAS,CAAC,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC,CAAC;IAEF,OAAO,CACL,MAAC,kBAAkB,IAAC,KAAK,EAAE,EAAE,cAAc,EAAE,UAAU,EAAE,aACvD,cACE,KAAK,EAAE;oBACL,QAAQ,EAAE,UAAU;oBACpB,GAAG,EAAE,kBAAkB;oBACvB,IAAI,EAAE,KAAK;oBACX,SAAS,EAAE,uBAAuB;iBACnC,YAED,KAAC,aAAa,IAAC,IAAI,EAAE,EAAE,GAAI,GACvB,EACN,KAAC,YAAY,IACX,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAC5B,OAAO,EAAE,SAAS,EAClB,OAAO,EAAE,WAAW,yBAGP,IACI,CACtB,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,qCAAqC,EAAE,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState } from "react";
|
|
3
|
+
import { Loader, useModalWithView } from "../../components/index.js";
|
|
4
|
+
import { ACTIONS, createCheckoutPayment, initialiseStore, useCheckoutStore, } from "../../state/checkout/store.js";
|
|
5
|
+
const InitialiseCheckoutViewContent = (props) => {
|
|
6
|
+
const { goToView } = useModalWithView();
|
|
7
|
+
const { error, checkout, payment } = useCheckoutStore();
|
|
8
|
+
const [loading, setLoading] = useState(true);
|
|
9
|
+
useEffect(() => {
|
|
10
|
+
const setup = async () => {
|
|
11
|
+
await initialiseStore(props.checkoutId, props.amount);
|
|
12
|
+
await createCheckoutPayment();
|
|
13
|
+
};
|
|
14
|
+
setup();
|
|
15
|
+
const timeout = setTimeout(() => setLoading(false), 1500);
|
|
16
|
+
return () => clearTimeout(timeout);
|
|
17
|
+
}, [props.checkoutId, props.amount]);
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
const hasErrors = error[ACTIONS.GET_CHECKOUT_CONFIG] || error[ACTIONS.CREATE_PAYMENT];
|
|
20
|
+
console.log(error);
|
|
21
|
+
if (hasErrors) {
|
|
22
|
+
goToView("failed", { reason: "get_checkout" });
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
if (checkout && payment && !loading) {
|
|
26
|
+
goToView("methods");
|
|
27
|
+
}
|
|
28
|
+
}, [error, checkout, payment, loading]);
|
|
29
|
+
return loading ? _jsx(Loader, {}) : null;
|
|
30
|
+
};
|
|
31
|
+
export { InitialiseCheckoutViewContent };
|
|
32
|
+
//# sourceMappingURL=initial.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initial.js","sourceRoot":"","sources":["../../../../src/checkout/views/initial.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAErE,OAAO,EACL,OAAO,EACP,qBAAqB,EACrB,eAAe,EACf,gBAAgB,GACjB,MAAM,+BAA+B,CAAC;AAOvC,MAAM,6BAA6B,GAAG,CAAC,KAAmB,EAAE,EAAE;IAC5D,MAAM,EAAE,QAAQ,EAAE,GAAG,gBAAgB,EAAE,CAAC;IACxC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAExD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE7C,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE;YACvB,MAAM,eAAe,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YACtD,MAAM,qBAAqB,EAAE,CAAC;QAChC,CAAC,CAAC;QAEF,KAAK,EAAE,CAAC;QAER,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;QAE1D,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAErC,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,SAAS,GACb,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAEtE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAEnB,IAAI,SAAS,EAAE,CAAC;YACd,QAAQ,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;YAC/C,OAAO;QACT,CAAC;QAED,IAAI,QAAQ,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;YACpC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAExC,OAAO,OAAO,CAAC,CAAC,CAAC,KAAC,MAAM,KAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AACrC,CAAC,CAAC;AAEF,OAAO,EAAE,6BAA6B,EAAE,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useRef } from "react";
|
|
3
|
+
import { useModalWithView, SelectableList } from "../../components/index.js";
|
|
4
|
+
import { ModalViewContainer } from "../container.js";
|
|
5
|
+
import { useCheckoutStore, ACTIONS, setCheckoutMethod, } from "../../state/checkout/store.js";
|
|
6
|
+
const MethodSelectViewContent = () => {
|
|
7
|
+
const { goToView } = useModalWithView();
|
|
8
|
+
const modalRef = useRef(null);
|
|
9
|
+
const { methods, loading } = useCheckoutStore();
|
|
10
|
+
const handleSelectMethod = (method) => {
|
|
11
|
+
setCheckoutMethod(method);
|
|
12
|
+
goToView(method.intentName);
|
|
13
|
+
};
|
|
14
|
+
return (_jsx(ModalViewContainer, { ref: modalRef, children: _jsx(SelectableList, { title: "Select payment method", items: methods || [], getKey: (method) => method.name, getLabel: (method) => method.name, onSelect: handleSelectMethod, loading: loading[ACTIONS.GET_CHECKOUT_CONFIG] }) }));
|
|
15
|
+
};
|
|
16
|
+
export { MethodSelectViewContent };
|
|
17
|
+
//# sourceMappingURL=method-select.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"method-select.js","sourceRoot":"","sources":["../../../../src/checkout/views/method-select.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAG7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,EACL,gBAAgB,EAChB,OAAO,EACP,iBAAiB,GAClB,MAAM,+BAA+B,CAAC;AAEvC,MAAM,uBAAuB,GAAG,GAAG,EAAE;IACnC,MAAM,EAAE,QAAQ,EAAE,GAAG,gBAAgB,EAAE,CAAC;IACxC,MAAM,QAAQ,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAC9C,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAEhD,MAAM,kBAAkB,GAAG,CAAC,MAAsB,EAAE,EAAE;QACpD,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC1B,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC,CAAC;IAEF,OAAO,CACL,KAAC,kBAAkB,IAAC,GAAG,EAAE,QAAQ,YAC/B,KAAC,cAAc,IACb,KAAK,EAAE,uBAAuB,EAC9B,KAAK,EAAE,OAAO,IAAI,EAAE,EACpB,MAAM,EAAE,CAAC,MAAsB,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAC/C,QAAQ,EAAE,CAAC,MAAsB,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EACjD,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAC7C,GACiB,CACtB,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,uBAAuB,EAAE,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { styled } from "styled-components";
|
|
3
|
-
import { useMintMoneyConfig } from "
|
|
3
|
+
import { useMintMoneyConfig } from "../../context.js";
|
|
4
4
|
const StyledSvg = styled.svg `
|
|
5
5
|
stroke: ${({ color }) => color};
|
|
6
6
|
width: ${({ width }) => width}px;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { styled } from "styled-components";
|
|
3
|
-
import { useMintMoneyConfig } from "
|
|
3
|
+
import { useMintMoneyConfig } from "../../context.js";
|
|
4
4
|
const StyledSvg = styled.svg `
|
|
5
5
|
stroke: ${({ color }) => color};
|
|
6
6
|
width: ${({ width }) => width}px;
|
|
@@ -11,5 +11,5 @@ const SelectableList = ({ title, items, getKey, getLabel, onSelect, loading = fa
|
|
|
11
11
|
}
|
|
12
12
|
return (_jsxs(_Fragment, { children: [title && (_jsx(Text, { size: "base", color: config.theme.font.color.secondary, weight: "semibold", children: title })), _jsx("div", { className: "mm-selectable-list__button-group", children: items.length > 0 ? (items.map((item) => (_jsx(StyledButton, { onClick: () => onSelect(item), variant: "primary", children: getLabel(item) }, getKey(item))))) : (_jsx(ListEmpty, { content: noItemsMsg })) })] }));
|
|
13
13
|
};
|
|
14
|
-
export { SelectableList };
|
|
14
|
+
export { SelectableList, ListEmpty };
|
|
15
15
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/lists/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAYvC,MAAM,cAAc,GAAG,CAAK,EAC1B,KAAK,EACL,KAAK,EACL,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,OAAO,GAAG,KAAK,EACf,UAAU,GAAG,sBAAsB,GACZ,EAAE,EAAE;IAC3B,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;IAEpC,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,KAAC,MAAM,IAAC,OAAO,EAAE,IAAI,GAAI,CAAC;IACnC,CAAC;IAED,OAAO,CACL,8BACG,KAAK,IAAI,CACR,KAAC,IAAI,IACH,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EACxC,MAAM,EAAE,UAAU,YAEjB,KAAK,GACD,CACR,EACD,cAAK,SAAS,EAAC,kCAAkC,YAC9C,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAClB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAClB,KAAC,YAAY,IAEX,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAC7B,OAAO,EAAE,SAAS,YAEjB,QAAQ,CAAC,IAAI,CAAC,IAJV,MAAM,CAAC,IAAI,CAAC,CAKJ,CAChB,CAAC,CACH,CAAC,CAAC,CAAC,CACF,KAAC,SAAS,IAAC,OAAO,EAAE,UAAU,GAAI,CACnC,GACG,IACL,CACJ,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/lists/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAYvC,MAAM,cAAc,GAAG,CAAK,EAC1B,KAAK,EACL,KAAK,EACL,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,OAAO,GAAG,KAAK,EACf,UAAU,GAAG,sBAAsB,GACZ,EAAE,EAAE;IAC3B,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;IAEpC,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,KAAC,MAAM,IAAC,OAAO,EAAE,IAAI,GAAI,CAAC;IACnC,CAAC;IAED,OAAO,CACL,8BACG,KAAK,IAAI,CACR,KAAC,IAAI,IACH,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EACxC,MAAM,EAAE,UAAU,YAEjB,KAAK,GACD,CACR,EACD,cAAK,SAAS,EAAC,kCAAkC,YAC9C,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAClB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAClB,KAAC,YAAY,IAEX,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAC7B,OAAO,EAAE,SAAS,YAEjB,QAAQ,CAAC,IAAI,CAAC,IAJV,MAAM,CAAC,IAAI,CAAC,CAKJ,CAChB,CAAC,CACH,CAAC,CAAC,CAAC,CACF,KAAC,SAAS,IAAC,OAAO,EAAE,UAAU,GAAI,CACnC,GACG,IACL,CACJ,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC"}
|
package/dist/esm/context.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
3
|
import { createContext, useContext } from "react";
|
|
4
|
-
import { api } from "
|
|
4
|
+
import { api } from "./api/index.js";
|
|
5
5
|
import { ThemeProvider } from "styled-components";
|
|
6
6
|
const MintMoneyContext = createContext(undefined);
|
|
7
7
|
export function MintMoneyProvider({ config, children, }) {
|
package/dist/esm/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/context.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAc,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEzD,OAAO,EAAE,GAAG,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/context.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAc,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEzD,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,MAAM,gBAAgB,GAAG,aAAa,CAAqB,SAAS,CAAC,CAAC;AAOtE,MAAM,UAAU,iBAAiB,CAAC,EAChC,MAAM,EACN,QAAQ,GACe;IACvB,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACtC,OAAO,CACL,KAAC,gBAAgB,CAAC,QAAQ,IAAC,KAAK,EAAE,MAAM,YACtC,KAAC,aAAa,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,YAChC,cAAK,SAAS,EAAC,SAAS,YAAE,QAAQ,GAAO,GAC3B,GACU,CAC7B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,MAAM,OAAO,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/dist/esm/index.js
CHANGED
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
import { create } from "zustand";
|
|
2
|
+
import { immer } from "zustand/middleware/immer";
|
|
3
|
+
import { getCheckoutById, getCheckoutCryptoCurrencies, } from "../../api/checkouts.js";
|
|
4
|
+
import { createPayment, createPaymentAttempt, getPaymentById, } from "../../api/payments.js";
|
|
5
|
+
export var ACTIONS;
|
|
6
|
+
(function (ACTIONS) {
|
|
7
|
+
ACTIONS["GET_CHECKOUT_CONFIG"] = "GET_CHECKOUT_CONFIG";
|
|
8
|
+
ACTIONS["GET_CRYPTO_CURRENCIES"] = "GET_CRYPTO_CURRENCIES";
|
|
9
|
+
ACTIONS["CREATE_PAYMENT"] = "CREATE_PAYMENT";
|
|
10
|
+
ACTIONS["GET_PAYMENT"] = "GET_PAYMENT";
|
|
11
|
+
ACTIONS["CREATE_PAYMENT_ATTEMPT"] = "CREATE_PAYMENT_ATTEMPT";
|
|
12
|
+
})(ACTIONS || (ACTIONS = {}));
|
|
13
|
+
const initialActionState = (initialValue) => Object.values(ACTIONS).reduce((acc, action) => {
|
|
14
|
+
acc[action] = initialValue;
|
|
15
|
+
return acc;
|
|
16
|
+
}, {});
|
|
17
|
+
export const useCheckoutStore = create()(immer((_set, _get) => ({
|
|
18
|
+
amount: null,
|
|
19
|
+
checkoutId: null,
|
|
20
|
+
selectedMethod: null,
|
|
21
|
+
selectedCurrency: null,
|
|
22
|
+
methods: null,
|
|
23
|
+
cryptoCurrencies: null,
|
|
24
|
+
checkout: null,
|
|
25
|
+
payment: null,
|
|
26
|
+
cryptoPaymentAttempt: null,
|
|
27
|
+
loading: initialActionState(false),
|
|
28
|
+
error: initialActionState(null),
|
|
29
|
+
})));
|
|
30
|
+
const set = useCheckoutStore.setState;
|
|
31
|
+
const get = () => useCheckoutStore.getState();
|
|
32
|
+
// Actions: Directly expose the function
|
|
33
|
+
export const clearErrors = () => {
|
|
34
|
+
set((state) => {
|
|
35
|
+
Object.values(ACTIONS).forEach((action) => {
|
|
36
|
+
state.error[action] = null;
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
export const initialiseStore = async (checkoutId, amount) => {
|
|
41
|
+
set((state) => {
|
|
42
|
+
state.checkoutId = checkoutId;
|
|
43
|
+
state.amount = amount;
|
|
44
|
+
});
|
|
45
|
+
try {
|
|
46
|
+
await getCheckoutConfig(checkoutId);
|
|
47
|
+
}
|
|
48
|
+
catch (err) {
|
|
49
|
+
set((state) => {
|
|
50
|
+
state.error[ACTIONS.GET_CHECKOUT_CONFIG] = "Failed to load checkout";
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
export const createCheckoutPayment = async () => {
|
|
55
|
+
const checkoutId = useCheckoutStore.getState().checkoutId;
|
|
56
|
+
const amount = useCheckoutStore.getState().amount;
|
|
57
|
+
if (!checkoutId || !amount) {
|
|
58
|
+
console.error(`checkoutId and amount are required to make a payment.`);
|
|
59
|
+
set((state) => {
|
|
60
|
+
state.error[ACTIONS.CREATE_PAYMENT] = "Failed to create payment";
|
|
61
|
+
state.loading[ACTIONS.CREATE_PAYMENT] = false;
|
|
62
|
+
});
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
try {
|
|
66
|
+
set((state) => {
|
|
67
|
+
state.error[ACTIONS.CREATE_PAYMENT] = null;
|
|
68
|
+
state.loading[ACTIONS.CREATE_PAYMENT] = true;
|
|
69
|
+
});
|
|
70
|
+
const payment = await createPayment({ checkoutId, amount });
|
|
71
|
+
set((state) => {
|
|
72
|
+
state.payment = payment;
|
|
73
|
+
state.error[ACTIONS.CREATE_PAYMENT] = null;
|
|
74
|
+
state.loading[ACTIONS.CREATE_PAYMENT] = false;
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
catch (err) {
|
|
78
|
+
set((state) => {
|
|
79
|
+
state.error[ACTIONS.CREATE_PAYMENT] = "Failed to create payment";
|
|
80
|
+
state.loading[ACTIONS.CREATE_PAYMENT] = false;
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
export const createCheckoutCryptoPaymentAttempt = async (currency) => {
|
|
85
|
+
const paymentId = useCheckoutStore.getState().payment?.id;
|
|
86
|
+
if (!paymentId) {
|
|
87
|
+
throw Error("Cannot create payment attempt without payment object.");
|
|
88
|
+
}
|
|
89
|
+
try {
|
|
90
|
+
set((state) => {
|
|
91
|
+
state.error[ACTIONS.CREATE_PAYMENT_ATTEMPT] = null;
|
|
92
|
+
state.loading[ACTIONS.CREATE_PAYMENT_ATTEMPT] = true;
|
|
93
|
+
});
|
|
94
|
+
const attempt = await createPaymentAttempt(paymentId, currency);
|
|
95
|
+
const payment = await getPaymentById(paymentId);
|
|
96
|
+
set((state) => {
|
|
97
|
+
state.payment = payment;
|
|
98
|
+
state.cryptoPaymentAttempt = attempt;
|
|
99
|
+
state.error[ACTIONS.CREATE_PAYMENT_ATTEMPT] = null;
|
|
100
|
+
state.loading[ACTIONS.CREATE_PAYMENT_ATTEMPT] = false;
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
catch (err) {
|
|
104
|
+
const error = err;
|
|
105
|
+
set((state) => {
|
|
106
|
+
state.error[ACTIONS.CREATE_PAYMENT_ATTEMPT] = error.message;
|
|
107
|
+
state.loading[ACTIONS.CREATE_PAYMENT_ATTEMPT] = false;
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
export function getAvailableCheckoutMethods(checkout) {
|
|
112
|
+
const methods = [];
|
|
113
|
+
if (checkout.checkout_config.crypto?.enabled) {
|
|
114
|
+
methods.push({
|
|
115
|
+
name: "Pay with Crypto",
|
|
116
|
+
intentName: "cryptoIntent",
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
if (checkout.checkout_config.card?.enabled) {
|
|
120
|
+
methods.push({
|
|
121
|
+
name: "Pay by Card",
|
|
122
|
+
intentName: "cardIntent",
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
return methods;
|
|
126
|
+
}
|
|
127
|
+
export const getCheckoutConfig = async (checkoutId) => {
|
|
128
|
+
const ACTION = ACTIONS.GET_CHECKOUT_CONFIG;
|
|
129
|
+
set((state) => {
|
|
130
|
+
state.loading[ACTION] = true;
|
|
131
|
+
state.error[ACTION] = null;
|
|
132
|
+
});
|
|
133
|
+
try {
|
|
134
|
+
const resp = await getCheckoutById(checkoutId);
|
|
135
|
+
if (resp) {
|
|
136
|
+
set((state) => {
|
|
137
|
+
state.checkout = resp;
|
|
138
|
+
state.methods = getAvailableCheckoutMethods(resp);
|
|
139
|
+
state.cryptoCurrencies = getCheckoutCryptoCurrencies(resp);
|
|
140
|
+
state.loading[ACTION] = false;
|
|
141
|
+
state.error[ACTION] = null;
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
set((state) => {
|
|
146
|
+
state.loading[ACTION] = false;
|
|
147
|
+
state.error[ACTION] = "Failed to load checkout";
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
catch (error) {
|
|
152
|
+
set((state) => {
|
|
153
|
+
state.loading[ACTION] = false;
|
|
154
|
+
state.error[ACTION] = "Failed to load checkout methods";
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
export const getPayment = async () => {
|
|
159
|
+
const ACTION = ACTIONS.GET_PAYMENT;
|
|
160
|
+
set((state) => {
|
|
161
|
+
state.loading[ACTION] = true;
|
|
162
|
+
state.error[ACTION] = null;
|
|
163
|
+
});
|
|
164
|
+
const payment = get().payment;
|
|
165
|
+
if (!payment) {
|
|
166
|
+
set((state) => {
|
|
167
|
+
state.loading[ACTION] = false;
|
|
168
|
+
state.error[ACTION] = "No payment found";
|
|
169
|
+
});
|
|
170
|
+
return null;
|
|
171
|
+
}
|
|
172
|
+
try {
|
|
173
|
+
const resp = await getPaymentById(payment.id);
|
|
174
|
+
if (resp) {
|
|
175
|
+
set((state) => {
|
|
176
|
+
state.payment = resp;
|
|
177
|
+
state.loading[ACTION] = false;
|
|
178
|
+
state.error[ACTION] = null;
|
|
179
|
+
});
|
|
180
|
+
return resp;
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
set((state) => {
|
|
184
|
+
state.loading[ACTION] = false;
|
|
185
|
+
state.error[ACTION] = "Failed to load payment";
|
|
186
|
+
});
|
|
187
|
+
return null;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
catch (error) {
|
|
191
|
+
set((state) => {
|
|
192
|
+
state.loading[ACTION] = false;
|
|
193
|
+
state.error[ACTION] = "Failed to load payment";
|
|
194
|
+
});
|
|
195
|
+
return null;
|
|
196
|
+
}
|
|
197
|
+
};
|
|
198
|
+
export const resetCheckoutStore = () => {
|
|
199
|
+
set((state) => {
|
|
200
|
+
Object.assign(state, {
|
|
201
|
+
amount: null,
|
|
202
|
+
checkoutId: null,
|
|
203
|
+
selectedMethod: null,
|
|
204
|
+
selectedCurrency: null,
|
|
205
|
+
methods: null,
|
|
206
|
+
cryptoCurrencies: null,
|
|
207
|
+
checkout: null,
|
|
208
|
+
payment: null,
|
|
209
|
+
cryptoPaymentAttempt: null,
|
|
210
|
+
loading: initialActionState(false),
|
|
211
|
+
error: initialActionState(null),
|
|
212
|
+
});
|
|
213
|
+
});
|
|
214
|
+
};
|
|
215
|
+
export const setCheckoutMethod = (method) => {
|
|
216
|
+
set((state) => {
|
|
217
|
+
state.selectedMethod = method;
|
|
218
|
+
});
|
|
219
|
+
};
|
|
220
|
+
//# sourceMappingURL=store.js.map
|