From adba716596bd5eb9034a5248faf6d4fc9bed29d7 Mon Sep 17 00:00:00 2001 From: mirceahasegan Date: Tue, 17 Dec 2024 12:32:58 +0100 Subject: [PATCH] fix(nami): missing value dependency in useCallback (#1598) Asset callbacks used state values but did not list them as dependency. Another issue is that state was mutated directly before setting it. --- packages/nami/src/ui/app/pages/send.tsx | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/packages/nami/src/ui/app/pages/send.tsx b/packages/nami/src/ui/app/pages/send.tsx index c2f0392226..58106993d8 100644 --- a/packages/nami/src/ui/app/pages/send.tsx +++ b/packages/nami/src/ui/app/pages/send.tsx @@ -392,7 +392,7 @@ const Send = ({ setValue({ ...value, assets: assetsList }); }); }, - [triggerTxUpdate, setValue], + [triggerTxUpdate, setValue, value], ); const removeAsset = useCallback( @@ -403,7 +403,7 @@ const Send = ({ setValue({ ...value, assets: assetsList }); }); }, - [assets.current, triggerTxUpdate, setValue], + [assets.current, triggerTxUpdate, setValue, value], ); React.useEffect(() => { @@ -433,13 +433,12 @@ const Send = ({ async (asset: Readonly, val: string) => { if (!assets.current[asset.unit]) return; assets.current[asset.unit].input = val; - const v = value; - v.assets = objectToArray(assets.current); + const newValue = { ...value, assets: objectToArray(assets.current) }; triggerTxUpdate(() => { - setValue({ ...v, assets: v.assets }); + setValue(newValue); }); }, - [assets.current, triggerTxUpdate, setValue], + [assets.current, triggerTxUpdate, setValue, value], ); const setMessageDebounced = useMemo(() => debounce(setMessage, 300), []); @@ -574,12 +573,11 @@ const Send = ({ decimalScale={6} onInput={e => { const val = e.target.value; - value.ada = val; - value.personalAda = val; - const v = value; triggerTxUpdate(() => { setValue({ - ...v, + ...value, + ada: val, + personalAda: val, }); }); }}