From ed9917bcc38217f1539ae52a2eb0d4e99511ed94 Mon Sep 17 00:00:00 2001 From: "Justin R. Evans" Date: Thu, 27 Jul 2023 06:06:57 -0400 Subject: [PATCH] PR feedback, fix amounts issue on unbond --- .../src/Approvals/ApproveTx/ConfirmTx.tsx | 75 +++++-------------- apps/extension/src/Approvals/types.ts | 22 ++++++ apps/namada-interface/.prettierrc | 3 +- packages/shared/lib/src/sdk/tx.rs | 4 +- 4 files changed, 43 insertions(+), 61 deletions(-) diff --git a/apps/extension/src/Approvals/ApproveTx/ConfirmTx.tsx b/apps/extension/src/Approvals/ApproveTx/ConfirmTx.tsx index 8ceb5b8e7..4f11c9eda 100644 --- a/apps/extension/src/Approvals/ApproveTx/ConfirmTx.tsx +++ b/apps/extension/src/Approvals/ApproveTx/ConfirmTx.tsx @@ -19,16 +19,10 @@ import { } from "Approvals/Approvals.components"; import { Ports } from "router"; import { useRequester } from "hooks/useRequester"; -import { - SubmitApprovedBondMsg, - SubmitApprovedTransferMsg, - SubmitApprovedUnbondMsg, - SubmitApprovedWithdrawMsg, -} from "background/approvals"; import { Address } from "App/Accounts/AccountListing.components"; import { closeCurrentTab } from "utils"; import { FetchAndStoreMaspParamsMsg, HasMaspParamsMsg } from "provider"; -import { TxTypeLabel } from "Approvals/types"; +import { ApproveMsg, SupportedTx, TxTypeLabel, txMap } from "Approvals/types"; type Props = { details?: ApprovalDetails; @@ -50,64 +44,33 @@ export const ConfirmTx: React.FC = ({ details }) => { ); try { + const Msg: ApproveMsg | undefined = txMap.get(txType as SupportedTx); if (!msgId) { throw new Error("msgId was not provided!"); } - switch (txType) { - case TxType.Bond: { - await requester.sendMessage( - Ports.Background, - new SubmitApprovedBondMsg(msgId, password) - ); - setStatusInfo(""); - setStatus(Status.Completed); - break; - } - case TxType.Transfer: { - const hasMaspParams = await requester.sendMessage( - Ports.Background, - new HasMaspParamsMsg() - ); + if (!Msg) { + throw new Error("Unsupported transaction!"); + } - if (!hasMaspParams) { - setStatusInfo("Fetching MASP parameters..."); - try { - await requester.sendMessage( - Ports.Background, - new FetchAndStoreMaspParamsMsg() - ); - } catch (e) { - setError(`Fetching MASP parameters failed: ${e}`); - setStatus(Status.Failed); - } - } - await requester.sendMessage( - Ports.Background, - new SubmitApprovedTransferMsg(msgId, password) - ); - setStatusInfo(""); - setStatus(Status.Completed); - break; - } - case TxType.Unbond: { - await requester.sendMessage( - Ports.Background, - new SubmitApprovedUnbondMsg(msgId, password) - ); - setStatusInfo(""); - setStatus(Status.Completed); - break; - } - case TxType.Withdraw: { + const hasMaspParams = await requester.sendMessage( + Ports.Background, + new HasMaspParamsMsg() + ); + + if (!hasMaspParams) { + setStatusInfo("Fetching MASP parameters..."); + try { await requester.sendMessage( Ports.Background, - new SubmitApprovedWithdrawMsg(msgId, password) + new FetchAndStoreMaspParamsMsg() ); - setStatusInfo(""); - setStatus(Status.Completed); - break; + } catch (e) { + setError(`Fetching MASP parameters failed: ${e}`); + setStatus(Status.Failed); } } + + await requester.sendMessage(Ports.Background, new Msg(msgId, password)); } catch (e) { console.info(e); setError(`${e}`); diff --git a/apps/extension/src/Approvals/types.ts b/apps/extension/src/Approvals/types.ts index 1c2313334..de8d1ba57 100644 --- a/apps/extension/src/Approvals/types.ts +++ b/apps/extension/src/Approvals/types.ts @@ -1,4 +1,11 @@ import { TxType } from "@namada/shared"; +import { + SubmitApprovedBondMsg, + SubmitApprovedTransferMsg, + SubmitApprovedUnbondMsg, + SubmitApprovedWithdrawMsg, +} from "background/approvals"; +import { Message } from "router"; export enum TopLevelRoute { Default = "/", @@ -19,3 +26,18 @@ export const TxTypeLabel: Record = { [TxType.Withdraw]: "withdraw", [TxType.RevealPK]: "reveal-pk", }; + +export type SupportedTx = Extract< + TxType, + TxType.Bond | TxType.Unbond | TxType.Transfer | TxType.Withdraw +>; + +export type ApproveMsg = new (msgId: string, password: string) => unknown & + Message; + +export const txMap: Map = new Map([ + [TxType.Bond, SubmitApprovedBondMsg], + [TxType.Unbond, SubmitApprovedUnbondMsg], + [TxType.Transfer, SubmitApprovedTransferMsg], + [TxType.Withdraw, SubmitApprovedWithdrawMsg], +]); diff --git a/apps/namada-interface/.prettierrc b/apps/namada-interface/.prettierrc index 193626a11..f0eb61e0f 100644 --- a/apps/namada-interface/.prettierrc +++ b/apps/namada-interface/.prettierrc @@ -2,6 +2,5 @@ "trailingComma": "es5", "tabWidth": 2, "semi": true, - "singleQuote": false, - "bracketSpacing": false + "singleQuote": false } diff --git a/packages/shared/lib/src/sdk/tx.rs b/packages/shared/lib/src/sdk/tx.rs index 1b83723fe..f208d142f 100644 --- a/packages/shared/lib/src/sdk/tx.rs +++ b/packages/shared/lib/src/sdk/tx.rs @@ -104,10 +104,8 @@ pub fn unbond_tx_args(tx_msg: &[u8], password: Option) -> Result