From f074c243d8ab06c501a1ed8db97536a7002a72c6 Mon Sep 17 00:00:00 2001 From: amerkadicE <97883527+amerkadicE@users.noreply.github.com> Date: Wed, 17 Aug 2022 19:13:03 +0200 Subject: [PATCH] Fix for randomly resets of updated values in network edit form (#14370) Code refactor Fix test Fix warning jank Rerunning e2e tests Co-authored-by: Alex Donesky Co-authored-by: Ariella Vu <20778143+digiwand@users.noreply.github.com> --- .../networks-form/networks-form.js | 50 ++++++++++++------- 1 file changed, 33 insertions(+), 17 deletions(-) diff --git a/ui/pages/settings/networks-tab/networks-form/networks-form.js b/ui/pages/settings/networks-tab/networks-form/networks-form.js index 0a6a5836d..06ab71128 100644 --- a/ui/pages/settings/networks-tab/networks-form/networks-form.js +++ b/ui/pages/settings/networks-tab/networks-form/networks-form.js @@ -12,6 +12,7 @@ import validUrl from 'valid-url'; import log from 'loglevel'; import classnames from 'classnames'; import { addHexPrefix } from 'ethereumjs-util'; +import { isEqual } from 'lodash'; import { useI18nContext } from '../../../../hooks/useI18nContext'; import { isPrefixedFormattedHexString, @@ -104,6 +105,8 @@ const NetworksForm = ({ const chainIdMatchesFeaturedRPC = FEATURED_RPCS.some( (featuredRpc) => Number(featuredRpc.chainId) === Number(chainId), ); + const [isEditing, setIsEditing] = useState(Boolean(addNewNetwork)); + const [previousNetwork, setPreviousNetwork] = useState(selectedNetwork); const resetForm = useCallback(() => { setNetworkName(selectedNetworkName || ''); @@ -114,6 +117,8 @@ const NetworksForm = ({ setErrors({}); setWarnings({}); setIsSubmitting(false); + setIsEditing(false); + setPreviousNetwork(selectedNetwork); }, [selectedNetwork, selectedNetworkName]); const stateIsUnchanged = () => { @@ -149,11 +154,12 @@ const NetworksForm = ({ setErrors({}); setIsSubmitting(false); } else if ( - prevNetworkName.current !== selectedNetworkName || - prevRpcUrl.current !== selectedNetwork.rpcUrl || - prevChainId.current !== selectedNetwork.chainId || - prevTicker.current !== selectedNetwork.ticker || - prevBlockExplorerUrl.current !== selectedNetwork.blockExplorerUrl + (prevNetworkName.current !== selectedNetworkName || + prevRpcUrl.current !== selectedNetwork.rpcUrl || + prevChainId.current !== selectedNetwork.chainId || + prevTicker.current !== selectedNetwork.ticker || + prevBlockExplorerUrl.current !== selectedNetwork.blockExplorerUrl) && + (!isEditing || !isEqual(selectedNetwork, previousNetwork)) ) { resetForm(selectedNetwork); } @@ -161,14 +167,9 @@ const NetworksForm = ({ selectedNetwork, selectedNetworkName, addNewNetwork, - setNetworkName, - setRpcUrl, - setChainId, - setTicker, - setBlockExplorerUrl, - setErrors, - setIsSubmitting, + previousNetwork, resetForm, + isEditing, ]); useEffect(() => { @@ -607,14 +608,20 @@ const NetworksForm = ({ { + setIsEditing(true); + setNetworkName(value); + }} titleText={t('networkName')} value={networkName} disabled={viewOnly} /> { + setIsEditing(true); + setRpcUrl(value); + }} titleText={t('rpcUrl')} value={ rpcUrl?.includes(`/v3/${infuraProjectId}`) @@ -625,7 +632,10 @@ const NetworksForm = ({ /> { + setIsEditing(true); + setChainId(value); + }} titleText={t('chainId')} value={chainId} disabled={viewOnly} @@ -633,14 +643,20 @@ const NetworksForm = ({ /> { + setIsEditing(true); + setTicker(value); + }} titleText={t('currencySymbol')} value={ticker} disabled={viewOnly} /> { + setIsEditing(true); + setBlockExplorerUrl(value); + }} titleText={t('blockExplorerUrl')} titleUnit={t('optionalWithParanthesis')} value={blockExplorerUrl}