From 187da1d6a7ffbf9c049d584d0bfe8e8a96516b8f Mon Sep 17 00:00:00 2001 From: Clemens Ley Date: Mon, 22 Apr 2024 16:47:03 +0200 Subject: [PATCH 01/10] Explorer: make switching networks more robust when not logged in --- packages/explorer/src/components/Navbar.tsx | 104 ++++++++++++-------- 1 file changed, 61 insertions(+), 43 deletions(-) diff --git a/packages/explorer/src/components/Navbar.tsx b/packages/explorer/src/components/Navbar.tsx index 0fa6e66b6..adb9d2045 100644 --- a/packages/explorer/src/components/Navbar.tsx +++ b/packages/explorer/src/components/Navbar.tsx @@ -41,10 +41,26 @@ function formatChainAndNetwork(chain: string, network: string) { } function ModalContent() { + const [chain, setChain] = useState('') + const [network, setNetwork] = useState('') const [url, setUrl] = useState('') - function setNetwork(e: React.SyntheticEvent) { + const { showSnackBar } = UtilsContext.useUtilsComponents() + + function submit(e: React.SyntheticEvent) { e.preventDefault() - localStorage.setItem('URL', url) + + const isValidChain = ['LTC', 'BTC', 'DOGE'].includes(chain) + const isValidNetwork = ['mainnet', 'testnet', 'regtest'].includes(network) + + if (!isValidChain || !isValidNetwork) { + showSnackBar('Error setting chain, network, or url', false) + } else { + localStorage.setItem('URL', url) + localStorage.setItem('CHAIN', chain) + localStorage.setItem('NETWORK', network) + window.location.href = "/" + } + } function closeModal() { @@ -52,14 +68,14 @@ function ModalContent() { } return ( -
+
-
@@ -123,7 +164,8 @@ function NotLoggedMenu() { setDropDownLabel(formatChainAndNetwork(chain, network)) window.location.href = '/' } catch (err) { - showSnackBar('Error setting chain and network', false) + if (err instanceof Error && !err.message.startsWith('Cannot find environment variable ')) + throw err Modal.get(modalId).show() } } @@ -139,20 +181,8 @@ function NotLoggedMenu() { className="flex items-center justify-between w-full py-2 px-3 text-gray-900 rounded hover:bg-gray-100 md:hover:bg-transparent md:border-0 md:hover:text-blue-700 md:p-0 md:w-auto dark:text-white md:dark:hover:text-blue-500 dark:focus:text-white dark:border-gray-700 dark:hover:bg-gray-700 md:dark:hover:bg-transparent" > {dropDownLabel} -