From 1ec4780e144d1d8a9d41d74a7b7c57b63b2f13af Mon Sep 17 00:00:00 2001 From: Filipe Soccol Date: Tue, 15 Apr 2025 17:56:32 -0300 Subject: [PATCH] Fixed some reactivity for network selected. --- src/blockchain/__tests__/addresses.spec.ts | 14 +++---- src/components/ToasterComponent.vue | 44 +++++----------------- src/components/TopBar/TopBar.vue | 15 +++++++- src/composables/useUser.ts | 9 +++-- src/model/Networks.ts | 15 ++++++++ 5 files changed, 52 insertions(+), 45 deletions(-) diff --git a/src/blockchain/__tests__/addresses.spec.ts b/src/blockchain/__tests__/addresses.spec.ts index 8ea10ec..82ebbc8 100644 --- a/src/blockchain/__tests__/addresses.spec.ts +++ b/src/blockchain/__tests__/addresses.spec.ts @@ -26,7 +26,7 @@ describe("addresses.ts functions", () => { it("getTokenAddress Ethereum", () => { const user = useUser(); - user.setNetworkId(NetworkEnum.sepolia); + user.setNetworkId(11155111); expect(getTokenAddress(TokenEnum.BRZ)).toBe( "0x4A2886EAEc931e04297ed336Cc55c4eb7C75BA00" ); @@ -34,7 +34,7 @@ describe("addresses.ts functions", () => { it("getTokenAddress Rootstock", () => { const user = useUser(); - user.setNetworkId(NetworkEnum.rootstock); + user.setNetworkId(30); expect(getTokenAddress(TokenEnum.BRZ)).toBe( "0xfE841c74250e57640390f46d914C88d22C51e82e" ); @@ -48,7 +48,7 @@ describe("addresses.ts functions", () => { it("getP2PixAddress Ethereum", () => { const user = useUser(); - user.setNetworkId(NetworkEnum.sepolia); + user.setNetworkId(11155111); expect(getP2PixAddress()).toBe( "0x2414817FF64A114d91eCFA16a834d3fCf69103d4" ); @@ -56,7 +56,7 @@ describe("addresses.ts functions", () => { it("getP2PixAddress Rootstock", () => { const user = useUser(); - user.setNetworkId(NetworkEnum.rootstock); + user.setNetworkId(30); expect(getP2PixAddress()).toBe( "0x98ba35eb14b38D6Aa709338283af3e922476dE34" ); @@ -70,13 +70,13 @@ describe("addresses.ts functions", () => { it("getProviderUrl Ethereum", () => { const user = useUser(); - user.setNetworkId(NetworkEnum.sepolia); + user.setNetworkId(11155111); expect(getProviderUrl()).toBe(import.meta.env.VITE_GOERLI_API_URL); }); it("getProviderUrl Rootstock", () => { const user = useUser(); - user.setNetworkId(NetworkEnum.rootstock); + user.setNetworkId(30); expect(getProviderUrl()).toBe(import.meta.env.VITE_ROOTSTOCK_API_URL); }); @@ -86,7 +86,7 @@ describe("addresses.ts functions", () => { it("isPossibleNetwork Returns", () => { const user = useUser(); - user.setNetworkId(NetworkEnum.sepolia); + user.setNetworkId(11155111); expect(isPossibleNetwork(0x5 as NetworkEnum)).toBe(true); expect(isPossibleNetwork(5 as NetworkEnum)).toBe(true); expect(isPossibleNetwork(0x13881 as NetworkEnum)).toBe(true); diff --git a/src/components/ToasterComponent.vue b/src/components/ToasterComponent.vue index 31f23e7..6e9fb18 100644 --- a/src/components/ToasterComponent.vue +++ b/src/components/ToasterComponent.vue @@ -2,42 +2,19 @@ import { ref, computed, watch, onMounted } from "vue"; import { useOnboard } from "@web3-onboard/vue"; import { Networks } from "../model/Networks"; -import { NetworkEnum } from "../model/NetworkEnum"; -import type { PropType } from "vue"; import { useUser } from "@/composables/useUser"; -const props = defineProps({ - targetNetwork: { - type: Object as PropType, - default: NetworkEnum.sepolia, - }, -}); - const { connectedWallet } = useOnboard(); const user = useUser(); -const { networkName } = user; +const { networkId, networkName } = user; const isWrongNetwork = ref(false); -const currentNetworkName = ref(""); -const targetNetworkName = computed( - () => Networks[props.targetNetwork as keyof typeof Networks].chainName -); +const targetNetworkName = computed(() => Networks[networkName.value].chainName); const checkNetwork = () => { if (connectedWallet.value) { const chainId = connectedWallet.value.chains[0].id; - const targetChainId = - Networks[props.targetNetwork as keyof typeof Networks].chainId; - - isWrongNetwork.value = - chainId.toLowerCase() !== targetChainId.toLowerCase(); - - // Find current network name - Object.entries(Networks).forEach(([key, network]) => { - if (network.chainId === chainId) { - currentNetworkName.value = network.chainName; - } - }); + isWrongNetwork.value = Number(chainId) !== networkId.value; } else { isWrongNetwork.value = false; // No wallet connected yet } @@ -46,11 +23,13 @@ const checkNetwork = () => { const switchNetwork = async () => { try { if (connectedWallet.value && connectedWallet.value.provider) { - const targetChainId = - Networks[props.targetNetwork as keyof typeof Networks].chainId; await connectedWallet.value.provider.request({ method: "wallet_switchEthereumChain", - params: [{ chainId: targetChainId }], + params: [ + { + chainId: Networks[networkName.value].chainId, + }, + ], }); } } catch (error) { @@ -59,8 +38,8 @@ const switchNetwork = async () => { }; onMounted(checkNetwork); -watch(connectedWallet, checkNetwork, { immediate: true }); -watch(networkName, checkNetwork, { immediate: true }); +watch(connectedWallet, checkNetwork); +watch(networkId, checkNetwork, { immediate: true });