From 0519dcf556e7cd99709868aee7e499788dfaed42 Mon Sep 17 00:00:00 2001 From: fbwoolf Date: Wed, 26 Jul 2023 14:55:13 -0500 Subject: [PATCH] fix: catch rpc sign psbt error --- src/app/pages/rpc-sign-psbt/use-rpc-sign-psbt.tsx | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/app/pages/rpc-sign-psbt/use-rpc-sign-psbt.tsx b/src/app/pages/rpc-sign-psbt/use-rpc-sign-psbt.tsx index 1f859f9f..577f0368 100644 --- a/src/app/pages/rpc-sign-psbt/use-rpc-sign-psbt.tsx +++ b/src/app/pages/rpc-sign-psbt/use-rpc-sign-psbt.tsx @@ -1,13 +1,17 @@ +import { useNavigate } from 'react-router-dom'; + import { RpcErrorCode } from '@btckit/types'; import * as btc from '@scure/btc-signer'; import { bytesToHex } from '@stacks/common'; +import { RouteUrls } from '@shared/route-urls'; import { makeRpcErrorResponse, makeRpcSuccessResponse } from '@shared/rpc/rpc-methods'; import { useRpcSignPsbtParams } from '@app/common/psbt/use-psbt-request-params'; import { usePsbtSigner } from '@app/features/psbt-signer/hooks/use-psbt-signer'; export function useRpcSignPsbt() { + const navigate = useNavigate(); const { origin, tabId, requestId, psbtHex, allowedSighash, signAtIndex } = useRpcSignPsbtParams(); const { signPsbt, getPsbtAsTransaction } = usePsbtSigner(); @@ -21,7 +25,13 @@ export function useRpcSignPsbt() { onSignPsbt(inputs: btc.TransactionInput[]) { const tx = getPsbtAsTransaction(psbtHex); - signPsbt({ allowedSighash, indexesToSign: signAtIndex, inputs, tx }); + try { + signPsbt({ allowedSighash, indexesToSign: signAtIndex, inputs, tx }); + } catch (e) { + return navigate(RouteUrls.RequestError, { + state: { message: e instanceof Error ? e.message : '', title: 'Failed to sign' }, + }); + } const psbt = tx.toPSBT();