From 0b4ceae6b2b5c9a0d09adddaf6ef4d6648dccd37 Mon Sep 17 00:00:00 2001 From: Nabarun Date: Wed, 12 Feb 2025 09:17:56 +0000 Subject: [PATCH] Set default networks list on app start (#21) Part of https://www.notion.so/Simplify-login-flow-in-deploy-laconic-com-190a6b22d47280a9924cc38f8cf4c891 Co-authored-by: IshaVenikar Reviewed-on: https://git.vdb.to/cerc-io/laconic-wallet-web/pulls/21 Co-authored-by: Nabarun Co-committed-by: Nabarun --- src/context/NetworksContext.tsx | 37 ++++++++++++------- src/utils/constants.ts | 4 +- .../stack/laconic-wallet-web/README.md | 2 +- 3 files changed, 28 insertions(+), 15 deletions(-) diff --git a/src/context/NetworksContext.tsx b/src/context/NetworksContext.tsx index 10c49f5..ec311e6 100644 --- a/src/context/NetworksContext.tsx +++ b/src/context/NetworksContext.tsx @@ -1,8 +1,9 @@ import React, { createContext, useContext, useEffect, useState } from 'react'; import { NetworksDataState } from '../types'; -import { retrieveNetworksData, storeNetworkData } from '../utils/accounts'; +import { retrieveNetworksData } from '../utils/accounts'; import { DEFAULT_NETWORKS, EIP155 } from '../utils/constants'; +import { setInternetCredentials } from '../utils/key-store'; const NetworksContext = createContext<{ networksData: NetworksDataState[]; @@ -27,28 +28,38 @@ const useNetworks = () => { return networksContext; }; +const DEFAULT_NETWORKS_DATA = DEFAULT_NETWORKS.map((defaultNetwork, index) => ( + { + ...defaultNetwork, + networkId: index.toString() + }) +); + const NetworksProvider = ({ children }: { children: React.ReactNode }) => { - const [networksData, setNetworksData] = useState([]); + const [networksData, setNetworksData] = useState(DEFAULT_NETWORKS_DATA); const [networkType, setNetworkType] = useState(EIP155); const [selectedNetwork, setSelectedNetwork] = useState(); useEffect(() => { const fetchData = async () => { - const retrievedNetworks = await retrieveNetworksData(); + let retrievedNetworks = await retrieveNetworksData(); + if (retrievedNetworks.length === 0) { - for (const defaultNetwork of DEFAULT_NETWORKS) { - await storeNetworkData(defaultNetwork); - } + setInternetCredentials( + 'networks', + '_', + JSON.stringify(DEFAULT_NETWORKS_DATA), + ); + + retrievedNetworks = DEFAULT_NETWORKS_DATA; } - const retrievedNewNetworks = await retrieveNetworksData(); - setNetworksData(retrievedNewNetworks); - setSelectedNetwork(retrievedNewNetworks[0]); + + setNetworksData(retrievedNetworks); + setSelectedNetwork(retrievedNetworks[0]); }; - if (networksData.length === 0) { - fetchData(); - } - }, [networksData]); + fetchData(); + }, []); useEffect(() => { setSelectedNetwork(prevSelectedNetwork => { diff --git a/src/utils/constants.ts b/src/utils/constants.ts index 8269e8e..8d03e44 100644 --- a/src/utils/constants.ts +++ b/src/utils/constants.ts @@ -1,9 +1,11 @@ import { COSMOS_TESTNET_CHAINS } from './wallet-connect/COSMOSData'; import { EIP155_CHAINS } from './wallet-connect/EIP155Data'; +import { NetworksFormData } from '../types'; export const EIP155 = 'eip155'; export const COSMOS = 'cosmos'; -export const DEFAULT_NETWORKS = [ + +export const DEFAULT_NETWORKS: NetworksFormData[] = [ { chainId: 'laconic-testnet-2', networkName: 'laconicd testnet-2', diff --git a/stack/stack-orchestrator/stack/laconic-wallet-web/README.md b/stack/stack-orchestrator/stack/laconic-wallet-web/README.md index cb340d3..6e0567c 100644 --- a/stack/stack-orchestrator/stack/laconic-wallet-web/README.md +++ b/stack/stack-orchestrator/stack/laconic-wallet-web/README.md @@ -66,7 +66,7 @@ Instructions for running the `laconic-wallet-web` using [laconic-so](https://git # Deploy app URL used for checking origin of the messages for auto-sign-in route # Deploy app repo: https://git.vdb.to/cerc-io/snowballtools-base - REACT_APP_DEPLOY_APP_URL= + CERC_DEPLOY_APP_URL= ``` ## Start the deployment