-
Notifications
You must be signed in to change notification settings - Fork 82
Expand file tree
/
Copy pathTransactionPage.tsx
More file actions
68 lines (63 loc) · 2.03 KB
/
Copy pathTransactionPage.tsx
File metadata and controls
68 lines (63 loc) · 2.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import React, { useEffect, useState } from "react";
import useInterval from "@use-it/interval";
import { useExplorer } from "@chainsafe/chainbridge-ui-core";
import { TransferDetailView } from "../../components";
import { fetchTransaction } from "@chainsafe/chainbridge-ui-core";
import { computeTransferDetails } from "../../utils/Helpers";
import {
DepositRecord,
TransferDetails,
} from "@chainsafe/chainbridge-ui-core";
import { useStyles } from "./styles";
const TransactionPage = () => {
const {
__RUNTIME_CONFIG__: {
UI: { transactionAutoUpdateInterval },
},
} = window;
const classes = useStyles();
const explorerContext = useExplorer();
const {
explorerState: { chains },
} = explorerContext;
const [transaction, setTransaction] = useState<DepositRecord | undefined>();
const [delay, setDelay] = useState<null | number>(
transactionAutoUpdateInterval ?? 5000
);
const [
transferDetailed,
setTransferDetailed,
] = useState<TransferDetails | null>(null);
const urlSplited = window.location.pathname.split("/");
const txHash = urlSplited[urlSplited.length - 1];
useEffect(() => {
fetchTransaction(txHash, setTransaction);
}, []);
useInterval(() => {
fetchTransaction(txHash, setTransaction);
console.log("This will run every", transactionAutoUpdateInterval);
console.log(transaction);
if (transaction && (transaction.status === 3 || transaction.status === 4)) {
console.log("transaction status", transaction.status);
console.log("stopping requests");
setDelay(null);
}
}, delay);
useEffect(() => {
if (transaction && Object.keys(transaction).length) {
const txDetail = computeTransferDetails(
transaction as DepositRecord,
chains
);
setTransferDetailed(txDetail);
}
}, [transaction]);
return (
<div className={classes.transferDetailViewContainer}>
{transferDetailed && (
<TransferDetailView transferDetails={transferDetailed!} />
)}
</div>
);
};
export default TransactionPage;