diff --git a/src/common/helpers/masa/index.ts b/src/common/helpers/masa/index.ts index d4d93fe0..61eed9b6 100644 --- a/src/common/helpers/masa/index.ts +++ b/src/common/helpers/masa/index.ts @@ -2,6 +2,25 @@ import { environments, Masa } from '@masa-finance/masa-sdk'; import { ethers, Wallet } from 'ethers'; import { ArweaveConfig } from '../provider/masa-context'; +const getChainName = (chainId) => { + switch (chainId) { + case 1: + return 'mainnet'; + case 5: + return 'goerli'; + case 44787: + return 'alfajores'; + case 42220: + return 'celo'; + case 137: + return 'polygon'; + case 80001: + return 'mumbai'; + + default: + return 'goerli'; + } +}; export const createRandomWallet = (): Wallet | null => { console.info('Creating random wallet!'); const wallet = ethers.Wallet.createRandom(); @@ -37,6 +56,7 @@ export const createNewMasa = ( cookie: cookie || undefined, wallet: signer, apiUrl: environment.apiUrl, + network: getChainName(signer?.provider?._network?.chainId ?? 5), environment: environment.environment, arweave: { host: arweaveConfig?.host || 'arweave.net', diff --git a/src/common/helpers/provider/masa-context.tsx b/src/common/helpers/provider/masa-context.tsx index 56fdf8fc..f6a8f51f 100644 --- a/src/common/helpers/provider/masa-context.tsx +++ b/src/common/helpers/provider/masa-context.tsx @@ -96,7 +96,9 @@ export const MasaContextProvider = ({ handlePurchaseIdentity, isLoading: identityLoading, } = useIdentity(masaInstance, walletAddress); + const { soulnames } = useSoulnames(masaInstance, walletAddress, identity); + const { creditScores, isLoading: creditScoreLoading, @@ -163,6 +165,7 @@ export const MasaContextProvider = ({ }, [modalCallback, setModalOpen, loggedIn, isConnected]); useEffect(() => { + console.log('PROVIDER', { provider }); if (noWallet) { setMasaInstance( createNewMasa(undefined, environment, arweaveConfig, cookie) diff --git a/src/common/helpers/provider/modules/identity/identity.ts b/src/common/helpers/provider/modules/identity/identity.ts index f64aca8a..9c142668 100644 --- a/src/common/helpers/provider/modules/identity/identity.ts +++ b/src/common/helpers/provider/modules/identity/identity.ts @@ -2,11 +2,20 @@ import { useCallback } from 'react'; import { useQuery } from 'react-query'; import { queryClient } from '../../masa-provider'; +const AVAILABLE_NETWORKS = ['goerli', 'eth']; + export const useIdentity = function (masa, walletAddress) { + console.log('NETWORK', masa?.config.network); + const { data, status, isLoading, error } = useQuery( `identity-${walletAddress}`, () => masa.identity.load(walletAddress), - { enabled: !!masa && !!walletAddress } + { + enabled: + !!masa && + !!walletAddress && + AVAILABLE_NETWORKS.includes(masa?.config?.network), + } ); const handlePurchaseIdentity = useCallback(async () => { diff --git a/src/common/helpers/provider/use-metamask.ts b/src/common/helpers/provider/use-metamask.ts index ff930784..d939ef8b 100644 --- a/src/common/helpers/provider/use-metamask.ts +++ b/src/common/helpers/provider/use-metamask.ts @@ -92,6 +92,22 @@ export const useMetamask = ({ disable }: { disable?: boolean }) => { queryClient.invalidateQueries('wallet'); } }); + + //@ts-ignore + window?.ethereum?.on('networkChanged', async (accounts) => { + //@ts-ignore + const newProvider = new ethers.providers.Web3Provider(window?.ethereum); + if (newProvider) { + await newProvider.send('eth_requestAccounts', []); + + await accountChangedHandler(newProvider.getSigner(0)); + if (newProvider && setProvider) { + setProvider(newProvider.getSigner(0)); + onConnect(); + } + queryClient.invalidateQueries('wallet'); + } + }); } }, [handleLogout, disconnect, setProvider]);