From 6f636645f782cab7dbf48af68e751e4fa5f987ba Mon Sep 17 00:00:00 2001 From: muzam1l Date: Tue, 31 May 2022 00:53:58 +0530 Subject: [PATCH] Fix json saving mismatch --- components/Transaction/index.tsx | 3 ++- components/Transaction/json.tsx | 13 +++++++------ state/transactions.ts | 8 ++++---- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/components/Transaction/index.tsx b/components/Transaction/index.tsx index 31c535d..58bef25 100644 --- a/components/Transaction/index.tsx +++ b/components/Transaction/index.tsx @@ -86,9 +86,10 @@ const Transaction: FC = ({ const submitTest = useCallback(async () => { let st: TransactionState | undefined; + const tt = txState.selectedTransaction?.value; if (viewType === "json") { // save the editor state first - const pst = prepareState(editorValue || "", txState); + const pst = prepareState(editorValue || "", tt); if (!pst) return; st = setState(pst); diff --git a/components/Transaction/json.tsx b/components/Transaction/json.tsx index c4bcd09..59df717 100644 --- a/components/Transaction/json.tsx +++ b/components/Transaction/json.tsx @@ -42,7 +42,9 @@ export const TxJson: FC = ({ const { editorValue = value, estimatedFee } = txState; const { theme } = useTheme(); const [hasUnsaved, setHasUnsaved] = useState(false); - const [currTxType, setCurrTxType] = useState(); + const [currTxType, setCurrTxType] = useState( + txState.selectedTransaction?.value + ); useEffect(() => { setState({ editorValue: value }); @@ -66,8 +68,8 @@ export const TxJson: FC = ({ else setHasUnsaved(true); }, [editorValue, value]); - const saveState = (value: string, txState: TransactionState) => { - const tx = prepareState(value, txState); + const saveState = (value: string, transactionType?: string) => { + const tx = prepareState(value, transactionType); if (tx) setState(tx); }; @@ -82,7 +84,7 @@ export const TxJson: FC = ({ const onExit = (value: string) => { const options = parseJSON(value); if (options) { - saveState(value, txState); + saveState(value, currTxType); return; } showAlert("Error!", { @@ -178,7 +180,6 @@ export const TxJson: FC = ({ useEffect(() => { if (!monaco) return; getSchemas().then(schemas => { - console.log("seeung schmea"); monaco.languages.json.jsonDefaults.setDiagnosticsOptions({ validate: true, schemas, @@ -221,7 +222,7 @@ export const TxJson: FC = ({ {hasUnsaved && ( This file has unsaved changes.{" "} - saveState(editorValue, txState)}>save{" "} + saveState(editorValue, currTxType)}>save{" "} discard )} diff --git a/state/transactions.ts b/state/transactions.ts index da808c0..ba97da1 100644 --- a/state/transactions.ts +++ b/state/transactions.ts @@ -141,7 +141,7 @@ export const prepareTransaction = (data: any) => { } // editor value to state -export const prepareState = (value: string, txState: TransactionState) => { +export const prepareState = (value: string, transactionType?: string) => { const options = parseJSON(value); if (!options) { showAlert("Error!", { @@ -152,7 +152,7 @@ export const prepareState = (value: string, txState: TransactionState) => { const { Account, TransactionType, Destination, ...rest } = options; let tx: Partial = {}; - const { txFields } = txState + const txFields = getTxFields(transactionType) if (Account) { const acc = state.accounts.find(acc => acc.address === Account); @@ -207,7 +207,7 @@ export const prepareState = (value: string, txState: TransactionState) => { if (isXrp) { rest[field] = { $type: "xrp", - $value: +value / 1000000, // TODO maybe use bigint? + $value: +value / 1000000, // ! maybe use bigint? }; } else if (typeof value === "object") { rest[field] = { @@ -223,7 +223,7 @@ export const prepareState = (value: string, txState: TransactionState) => { return tx } -export const getTxFields = (tt: string) => { +export const getTxFields = (tt?: string) => { const txFields: TxFields | undefined = transactionsData.find( tx => tx.TransactionType === tt );