From e93850484bf2a58adfb86d1c76ce11f931d95f12 Mon Sep 17 00:00:00 2001 From: Bill Date: Mon, 22 Jan 2024 09:55:26 -0800 Subject: [PATCH] CCTP deposit/withdraw to throw error if nobleClient is not initialized (#215) * CCTP deposit/withdraw to throw error if nobleClient is not initialized * update error str --- src/lib/abacus/dydxChainTransactions.ts | 4 ++++ src/views/forms/AccountManagementForms/DepositForm.tsx | 4 ++++ src/views/forms/AccountManagementForms/WithdrawForm.tsx | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/src/lib/abacus/dydxChainTransactions.ts b/src/lib/abacus/dydxChainTransactions.ts index 56c4a8c..efe0fb8 100644 --- a/src/lib/abacus/dydxChainTransactions.ts +++ b/src/lib/abacus/dydxChainTransactions.ts @@ -56,6 +56,10 @@ class DydxChainTransactions implements AbacusDYDXChainTransactionsProtocol { this.store = undefined; } + get isNobleClientConnected(): boolean { + return this.nobleClient?.isConnected ?? false; + } + setStore(store: RootStore): void { this.store = store; } diff --git a/src/views/forms/AccountManagementForms/DepositForm.tsx b/src/views/forms/AccountManagementForms/DepositForm.tsx index a0235e1..f2074d5 100644 --- a/src/views/forms/AccountManagementForms/DepositForm.tsx +++ b/src/views/forms/AccountManagementForms/DepositForm.tsx @@ -235,6 +235,10 @@ export const DepositForm = ({ onDeposit, onError }: DepositFormProps) => { throw new Error('Missing request payload'); } + if (isCctp && !abacusStateManager.chainTransactions.isNobleClientConnected) { + throw new Error('Noble RPC endpoint unaccessible'); + } + setIsLoading(true); await validateTokenApproval(); diff --git a/src/views/forms/AccountManagementForms/WithdrawForm.tsx b/src/views/forms/AccountManagementForms/WithdrawForm.tsx index 5a629ec..fb2410a 100644 --- a/src/views/forms/AccountManagementForms/WithdrawForm.tsx +++ b/src/views/forms/AccountManagementForms/WithdrawForm.tsx @@ -148,6 +148,10 @@ export const WithdrawForm = () => { throw new Error('Invalid request payload'); } + if (isCctp && !abacusStateManager.chainTransactions.isNobleClientConnected) { + throw new Error('Noble RPC endpoint unaccessible'); + } + setIsLoading(true); setError(undefined);