otterscan/src/AddressTransactionByNonce.tsx

56 lines
1.6 KiB
TypeScript
Raw Normal View History

import React, { useContext } from "react";
import { useNavigate } from "react-router-dom";
import StandardFrame from "./StandardFrame";
import AddressOrENSNameInvalidNonce from "./components/AddressOrENSNameInvalidNonce";
import { ChecksummedAddress } from "./types";
import { transactionURL } from "./url";
import { useTransactionBySenderAndNonce } from "./useErigonHooks";
import { RuntimeContext } from "./useRuntime";
type AddressTransactionByNonceProps = {
checksummedAddress: ChecksummedAddress | undefined;
2022-01-31 19:26:27 +00:00
rawNonce: string;
};
const AddressTransactionByNonce: React.FC<AddressTransactionByNonceProps> = ({
checksummedAddress,
2022-01-31 19:26:27 +00:00
rawNonce,
}) => {
const { provider } = useContext(RuntimeContext);
2022-01-31 19:26:27 +00:00
const nonce = parseInt(rawNonce, 10);
const txHash = useTransactionBySenderAndNonce(
provider,
checksummedAddress,
2022-01-31 19:26:27 +00:00
isNaN(nonce) ? undefined : nonce
);
const navigate = useNavigate();
2022-01-31 19:26:27 +00:00
if (checksummedAddress !== undefined && isNaN(nonce)) {
return (
<StandardFrame>
<AddressOrENSNameInvalidNonce
addressOrENSName={checksummedAddress}
2022-01-31 19:26:27 +00:00
nonce={rawNonce}
/>
</StandardFrame>
);
}
2022-01-31 19:26:27 +00:00
if (checksummedAddress !== undefined && !isNaN(nonce) && txHash === null) {
return (
<StandardFrame>
<AddressOrENSNameInvalidNonce
addressOrENSName={checksummedAddress}
nonce={nonce.toString()}
/>
</StandardFrame>
);
}
if (txHash) {
2022-01-31 19:28:08 +00:00
navigate(transactionURL(txHash), { replace: true });
}
return <StandardFrame />;
};
export default AddressTransactionByNonce;