@coin-voyage/paykit 0.1.20 → 0.1.21

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.
@@ -1,8 +1,8 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { assertNotNull, getChainName, PayOrderStatus } from "@coin-voyage/shared/common";
3
2
  import { useQuery } from "@tanstack/react-query";
4
3
  import { AnimatePresence } from "framer-motion";
5
4
  import { useCallback, useEffect, useRef } from "react";
5
+ import { usePaymentLifecycle } from "../../hooks/usePaymentLifecycle";
6
6
  import useIsMounted from "../../hooks/useIsMounted";
7
7
  import { ResetContainer } from "../../styles";
8
8
  import usePayContext from "../contexts/pay";
@@ -20,6 +20,9 @@ export function PayButton(props) {
20
20
  /** Like PayButton, but with custom styling. */
21
21
  function PayButtonCustom(props) {
22
22
  const { paymentState, showPayment, setOpen, setOnOpen, setOnClose } = usePayContext();
23
+ const { onPaymentStarted, onPaymentCompleted, onPaymentBounced } = props;
24
+ const order = paymentState.payOrder;
25
+ usePaymentLifecycle(paymentState, { onPaymentStarted, onPaymentCompleted, onPaymentBounced });
23
26
  // Pre-load payment info in background.
24
27
  // Reload when any of the info changes.
25
28
  const depositParams = "toAddress" in props
@@ -48,54 +51,10 @@ function PayButtonCustom(props) {
48
51
  enabled: depositParams != null,
49
52
  });
50
53
  useEffect(() => {
51
- if (payId != null) {
52
- paymentState.setPayId(payId);
53
- }
54
- }, [payId]);
55
- // Payment events: call these three event handlers.
56
- const { onPaymentStarted, onPaymentCompleted, onPaymentBounced } = props;
57
- const order = paymentState.payOrder;
58
- const isStarted = order?.status && [PayOrderStatus.AWAITING_CONFIRMATION, PayOrderStatus.EXECUTING_ORDER, PayOrderStatus.COMPLETED].includes(order.status);
59
- const isFinalized = order?.status === PayOrderStatus.COMPLETED || order?.status === PayOrderStatus.REFUNDED;
60
- const sentStart = useRef(false);
61
- useEffect(() => {
62
- if (sentStart.current || !order?.payment || !isStarted)
63
- return;
64
- const payment = order.payment;
65
- const chainId = payment.src.chain_id;
66
- sentStart.current = true;
67
- onPaymentStarted?.({
68
- type: "payorder_confirming",
69
- payorder_id: order.id,
70
- chain_id: chainId,
71
- chain: getChainName(chainId) ?? "Unknown",
72
- source_transaction_hash: order.deposit_tx_hash ?? "",
73
- });
74
- }, [order, isStarted]);
75
- const sentComplete = useRef(false);
76
- useEffect(() => {
77
- if (sentComplete.current || !order?.payment || !isFinalized)
54
+ if (!payId)
78
55
  return;
79
- const payment = order.payment;
80
- const dstChainId = payment.dst.chain_id;
81
- if (order.status === PayOrderStatus.COMPLETED) {
82
- onPaymentCompleted?.({
83
- type: "payorder_completed",
84
- payorder_id: order.id,
85
- chain_id: dstChainId,
86
- chain: getChainName(dstChainId) ?? "Unknown",
87
- destination_tx_hash: assertNotNull(order.receiving_tx_hash),
88
- });
89
- }
90
- else if (order.status === PayOrderStatus.REFUNDED) {
91
- onPaymentBounced?.({
92
- type: "payorder_refunded",
93
- payorder_id: order.id,
94
- refund_address: order.payment?.refund_address ?? "",
95
- refund_tx_hash: order.refund_tx_hash ?? "",
96
- });
97
- }
98
- }, [order, isFinalized]);
56
+ paymentState.setPayId(payId);
57
+ }, [payId]);
99
58
  // Set the onOpen and onClose callbacks
100
59
  useEffect(() => {
101
60
  setOnOpen(props.onOpen);
@@ -116,7 +75,8 @@ function PayButtonCustom(props) {
116
75
  hasAutoOpened.current = true;
117
76
  }, [order, props.defaultOpen, hasAutoOpened.current]);
118
77
  // Validation
119
- if ((payId == null) == (depositParams == null)) {
78
+ if ((payId == null && depositParams == null) ||
79
+ (payId != null && depositParams != null)) {
120
80
  throw new Error("Must specify either payId or depositParams, not both");
121
81
  }
122
82
  const { children, closeOnSuccess, resetOnSuccess } = props;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/pay-button/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/pay-button/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { PayOrderCompletedEvent, PayOrderConfirmingEvent, PayOrderRefundedEvent } from "@coin-voyage/shared/common";
2
+ import { PaymentState } from "./usePaymentState";
3
+ type PaymentLifecycleHandlers = {
4
+ onPaymentStarted: ((event: PayOrderConfirmingEvent) => void) | undefined;
5
+ onPaymentCompleted: ((event: PayOrderCompletedEvent) => void) | undefined;
6
+ onPaymentBounced: ((event: PayOrderRefundedEvent) => void) | undefined;
7
+ };
8
+ export declare function usePaymentLifecycle(paymentState: PaymentState, { onPaymentStarted, onPaymentCompleted, onPaymentBounced }: PaymentLifecycleHandlers): {
9
+ isStarted: boolean;
10
+ isFinalized: boolean;
11
+ order: import("@coin-voyage/shared/common").PayOrder | undefined;
12
+ };
13
+ export {};
@@ -0,0 +1,72 @@
1
+ import { getChainName, PayOrderMode, PayOrderStatus } from "@coin-voyage/shared/common";
2
+ import { useEffect, useMemo, useRef } from "react";
3
+ export function usePaymentLifecycle(paymentState, { onPaymentStarted, onPaymentCompleted, onPaymentBounced }) {
4
+ const sentStart = useRef(false);
5
+ const sentComplete = useRef(false);
6
+ const order = paymentState.payOrder;
7
+ const orderStatus = order?.status;
8
+ const isSale = order?.mode === PayOrderMode.SALE;
9
+ const completedStates = [
10
+ PayOrderStatus.COMPLETED,
11
+ PayOrderStatus.REFUNDED,
12
+ ];
13
+ const isStarted = useMemo(() => {
14
+ if (!orderStatus)
15
+ return false;
16
+ const startedStatus = [
17
+ ...completedStates,
18
+ PayOrderStatus.AWAITING_CONFIRMATION,
19
+ PayOrderStatus.OPTIMISTIC_CONFIRMED,
20
+ PayOrderStatus.EXECUTING_ORDER
21
+ ];
22
+ return startedStatus.includes(orderStatus);
23
+ }, [orderStatus, isSale]);
24
+ const isFinalized = useMemo(() => {
25
+ if (!orderStatus)
26
+ return false;
27
+ const finalizedStatus = [...completedStates];
28
+ if (isSale) {
29
+ finalizedStatus.push(PayOrderStatus.OPTIMISTIC_CONFIRMED, PayOrderStatus.EXECUTING_ORDER);
30
+ }
31
+ return finalizedStatus.includes(orderStatus);
32
+ }, [orderStatus, isSale]);
33
+ useEffect(() => {
34
+ if (sentStart.current || !order?.payment || !isStarted)
35
+ return;
36
+ const payment = order.payment;
37
+ const chainId = payment.src.chain_id;
38
+ sentStart.current = true;
39
+ onPaymentStarted?.({
40
+ type: "payorder_confirming",
41
+ payorder_id: order.id,
42
+ chain_id: chainId,
43
+ chain: getChainName(chainId) ?? "Unknown",
44
+ source_transaction_hash: order.deposit_tx_hash ?? "",
45
+ });
46
+ }, [order, isStarted, onPaymentStarted]);
47
+ useEffect(() => {
48
+ if (sentComplete.current || !order?.payment || !isFinalized)
49
+ return;
50
+ const payment = order.payment;
51
+ const dstChainId = payment.dst.chain_id;
52
+ sentComplete.current = true;
53
+ if (order.status === PayOrderStatus.REFUNDED) {
54
+ onPaymentBounced?.({
55
+ type: "payorder_refunded",
56
+ payorder_id: order.id,
57
+ refund_address: payment.refund_address,
58
+ refund_tx_hash: order.refund_tx_hash ?? "",
59
+ });
60
+ return;
61
+ }
62
+ onPaymentCompleted?.({
63
+ type: "payorder_completed",
64
+ payorder_id: order.id,
65
+ chain_id: dstChainId,
66
+ chain: getChainName(dstChainId) ?? "Unknown",
67
+ destination_tx_hash: order.receiving_tx_hash ?? "",
68
+ });
69
+ }, [order, isFinalized, onPaymentCompleted, onPaymentBounced]);
70
+ return { isStarted, isFinalized, order };
71
+ }
72
+ //# sourceMappingURL=usePaymentLifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePaymentLifecycle.js","sourceRoot":"","sources":["../../src/hooks/usePaymentLifecycle.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@coin-voyage/paykit",
3
3
  "description": "Seamless crypto payments. Onboard users from any chain, any coin into your app with one click.",
4
- "version": "0.1.20",
4
+ "version": "0.1.21",
5
5
  "private": false,
6
6
  "sideEffects": false,
7
7
  "author": "Lars <lars@coinvoyage.io>",
@@ -63,8 +63,8 @@
63
63
  "resize-observer-polyfill": "^1.5.1",
64
64
  "styled-components": "^5.3.11",
65
65
  "zod": "3.24.1",
66
- "@coin-voyage/crypto": "0.0.23",
67
- "@coin-voyage/shared": "0.0.17"
66
+ "@coin-voyage/crypto": "0.0.24",
67
+ "@coin-voyage/shared": "0.0.18"
68
68
  },
69
69
  "devDependencies": {
70
70
  "@types/qrcode": "^1.4.2",