From 3ef16942174ff3c4afab350edb12763f1af4e746 Mon Sep 17 00:00:00 2001 From: hueso Date: Sun, 22 Jun 2025 02:21:46 -0300 Subject: [PATCH] unified networks list --- src/App.vue | 24 ++++++++--------------- src/composables/useUser.ts | 3 +-- src/model/Networks.ts | 39 ++++++++++++++------------------------ 3 files changed, 23 insertions(+), 43 deletions(-) diff --git a/src/App.vue b/src/App.vue index b9816b9..ce39c57 100644 --- a/src/App.vue +++ b/src/App.vue @@ -5,8 +5,8 @@ import SpinnerComponent from "@/components/SpinnerComponent.vue"; import ToasterComponent from "@/components/ToasterComponent.vue"; import { init, useOnboard } from "@web3-onboard/vue"; import injectedModule from "@web3-onboard/injected-wallets"; -import { Networks } from "./model/Networks"; -import { NetworkEnum } from "./model/NetworkEnum"; +import { Networks } from "@/model/Networks"; +import { NetworkEnum } from "@/model/NetworkEnum"; import { ref } from "vue"; const route = useRoute(); @@ -15,20 +15,12 @@ const targetNetwork = ref(NetworkEnum.sepolia); const web3Onboard = init({ wallets: [injected], - chains: [ - { - id: Networks[NetworkEnum.sepolia].chainId, - token: "ETH", - label: "Sepolia", - rpcUrl: import.meta.env.VITE_SEPOLIA_API_URL, - }, - { - id: Networks[NetworkEnum.rootstock].chainId, - token: "tRBTC", - label: "Rootstock Testnet", - rpcUrl: import.meta.env.VITE_ROOTSTOCK_API_URL, - }, - ], + chains: Object.entries(Networks).map(([, network]) => ({ + id: network.chainId, + token: network.token, + label: network.chainName, + rpcUrl: network.rpcUrl, + })), connect: { autoConnectLastWallet: true, }, diff --git a/src/composables/useUser.ts b/src/composables/useUser.ts index 2d23009..4a51ce6 100644 --- a/src/composables/useUser.ts +++ b/src/composables/useUser.ts @@ -2,7 +2,6 @@ import { ref } from "vue"; import { NetworkEnum, TokenEnum } from "../model/NetworkEnum"; import type { ValidDeposit } from "@/model/ValidDeposit"; import type { Participant } from "../utils/bbPay"; -import { NetworkById } from "@/model/Networks"; import type { Address } from "viem" const walletAddress = ref
(null); @@ -33,7 +32,7 @@ export function useUser() { }; const setNetworkId = (network: string | number) => { - networkName.value = NetworkById(network) || NetworkEnum.sepolia; + networkName.value = Number(network) as NetworkEnum || NetworkEnum.sepolia; networkId.value = Number(network); }; diff --git a/src/model/Networks.ts b/src/model/Networks.ts index 5633124..14b797d 100644 --- a/src/model/Networks.ts +++ b/src/model/Networks.ts @@ -1,37 +1,26 @@ import { NetworkEnum } from "@/model/NetworkEnum"; -export const NetworkById = ( - chainId: string | number -): NetworkEnum | undefined => { - const normalizedChainId = - typeof chainId === "number" ? chainId : Number(chainId); +export interface NetworkConfig { + chainId: string; + chainName: string; + token: string; + rpcUrl?: string; + blockExplorerUrl?: string; +} - for (const [network, details] of Object.entries(Networks)) { - if (Number(details.chainId) === normalizedChainId) { - return network as unknown as NetworkEnum; - } - } - - return undefined; -}; - -export const Networks = { +export const Networks: { [key in NetworkEnum]: NetworkConfig } = { [NetworkEnum.sepolia]: { chainId: "0xAA36A7", chainName: "Sepolia Testnet", + token: "ETH", + rpcUrl: import.meta.env.VITE_SEPOLIA_API_URL, + blockExplorerUrl: "https://sepolia.etherscan.io", }, [NetworkEnum.rootstock]: { chainId: "0x1F", chainName: "Rootstock Testnet", - rpcUrls: ["https://public-node.testnet.rsk.co/"], - iconUrls: [ - "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAoCAYAAACWwljjAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAPOSURBVHgBxVhNUhpBFH6vGdxp4S4LoSYnEE8gnEA4AbpMJUQ4gXgCRJK1egLxBOIJJCdwJElVllMu49Cd1z04zD/dY1H5qihmut/M93VPv59uhHdAXFaPAaEDgA2/BaeA4hq/zG+gIBAKQoyr9yshid4Jdn+2oQAYFIC4rA2zxUhgS3yrDqEAjGdIDD/YYG09aRl7L7vYd10wgPkMlcoNfdvtFhjCXJBAeyO2S5gLQuFo25bEIxjCCt8oN2Z46I+Mu4A4SbjwojQBi1+BDl5LP+JNYlhtQRmPsjjQN1ILldwY7JTXOuD9bWL/jxO8dFy7oL9TyMcIu/PeSghxlLduQUA9jwPXiAk98HLw5jFiaFfAEjRLImPR0qi7z+2VmArZ7zzqcDAS01ljCKqf7QSjxb7jKkIhTohu6rOCq64RjsNiFEo7x7ocSNMvlddhPWb0CQ6gAAw4HKZpKGFDcWhzSEG6kbQCm4dLbi9m+XlpBTHea2D31zTSNtxrAGMNdcP5FPuxfhlKdCHgASUJxcd7zUcobkAPXvkzWGyf7uVCt2M2DtkMljaHSxu92WWLAz8OjWsD+juD/4tzcpqBSh3yQrmwoNFFMZNuDB7bJRsp/hzMMQqeT+NQ96KtNEBK+SG+23XgHgUyy8FPjpPozy3M4sZwh1/nLRMOK26Mn50Z5IHjA6XkBugJSn1XHkeBbK8dJsxsl0jMEOUpm0o9+gkX+7+TI0E+0x6Hsk0ijyNYQ/4OAqWn2aF+5cLxEoRq6idqtyEPtFhp/XyMNI2p9ADFUc/iYL5h7YzEXEEyptj04mvVHxkGP4F8MS4sWDsqRr4DbyGZRiIcqCKtpRMYeTMcpVVAFewqMVPSjUkMVQTBp6BPVKeiTqN65E0qP1AvIArWC98qcQsms39oDeBEtoXFKFgLbQ76ZKiXiRH2E01UF9Go+kGDh32/LWHZAD2OQ7mGdLO4ndrqWaHZyNyD6XJUWEq6yIQqReOweCe49ivD2DNUIutjJgXpHwyUtyPbY/IMWehfBA0IZxQSQoW9rKXL+ltq0oKqYC+RB6yLKys4xEw/Idde5R02cTGOcgh1LSNnid+nihIqcN0tr48MhL89L2uoG+Dqv5Px/IwqAhkqnEi296M1OyLPqVCgdKhcuKNjlUnQL4X78cRk1E1JlMkBME1sFE0gRrRJZGs3iT44bRZP5z0wQJHzIZMMbpztN1t+FDhsMBe0YNfatimHDetgLGiZGkYapqPwYt6YIAWPDYI9fSrETfjkwwSFT2EVrV/USY+r+/GGNp2I7zoW/gdR9aOdZ/lPGgAAAABJRU5ErkJggg==", - ], - nativeCurrency: { - name: "tRBTC", - symbol: "tRBTC", - decimals: 18, - }, - blockExplorerUrls: ["https://explorer.testnet.rootstock.io/"], + token: "tRBTC", + rpcUrl: import.meta.env.VITE_ROOTSTOCK_API_URL, + blockExplorerUrl: "https://explorer.testnet.rsk.co", }, };