mirror of
https://github.com/MetaFam/TheGame.git
synced 2026-01-14 17:08:00 -05:00
* beginning ESM transition: Ceramic libraries, Next.js, & TypeScript configuration 🇭🇰 * updating Chakra, React, & Next image `import`s 👔 * upgrading `@types/react`, import extensions for Node, & b64 SVG to PNG ⛹🏿♀️ * fixing relative import names & upddating @types packages 📻 * removoing WYSIWYG editor, draft-js, & updating express ⛹🏿♀️ * updating OpenSea 🚲 * ¡@metafam/utils is building! 📰 * ¡Discord bot is building! 👘 * ¡backend is building! 🛩 * fixed everything but Ceramic DID update 🏍 * switching to DID:PKH 📦 * fixing "only one child allowed" error 🙇🏿♀️ * importing `React` as required by tsc's `isolatedModules` 🇲🇰 * disabling testing rather than taking the time to fix jest ⚜ * removing set `types` from `tsconfig` to fix compilation error 🥦 * printing tests disabled warning, hopefully 🙀 * setting file to be copied to the new resolver 👁️🗨️ * "paths-resolver" not "paths-resolve" 🦴 * switching back to relative paths rather than trying to fix `paths` ⏳ * `yarn backend:dev` not working, testing GitHub build 🎺 * removing design system build & fixing some images ✊🏿 * fixed "expected function got string" error & trying to address undefined HTMLElement 🐡 * fixing @emotion/react tree shaking by making external 🏏 * including eslint config in Dockerfile 🌾 * fixing more images 🎯 * updating DIDs & switching back to an updated DID:3 ❇ * switching to w3s.link gateway & fixing early termination of storage endpoint 🔭 * switching back to ipfs.io gateway b/c w3s.link serves SVGs as application/xml which are CORB blocked 🥾 * fixing node config name in eslint ignore & shortening some paths 🧰 * fixing ts-node not handling project references 🥁
44 lines
1.1 KiB
TypeScript
44 lines
1.1 KiB
TypeScript
import { Button, MetaMaskIcon, Text, Tooltip } from '@metafam/ds';
|
|
import { useWeb3 } from 'lib/hooks';
|
|
import React, { useCallback, useState } from 'react';
|
|
import { switchChainOnMetaMask } from 'utils/metamask';
|
|
import { NETWORK_INFO } from 'utils/networks';
|
|
|
|
export const SwitchNetworkButton: React.FC<{ chainId?: string }> = ({
|
|
chainId = '0x1',
|
|
}) => {
|
|
const { connected, isMetaMask } = useWeb3();
|
|
const networkInfo = NETWORK_INFO[chainId];
|
|
|
|
const [isLoading, setLoading] = useState(false);
|
|
|
|
const onClick = useCallback(async () => {
|
|
if (connected) {
|
|
setLoading(true);
|
|
await switchChainOnMetaMask(chainId);
|
|
setLoading(false);
|
|
}
|
|
}, [connected, chainId]);
|
|
|
|
if (!connected || !networkInfo) return null;
|
|
|
|
const { name } = networkInfo;
|
|
|
|
return isMetaMask ? (
|
|
<Tooltip label="Click to switch network on Metamask" hasArrow>
|
|
<Button
|
|
size="sm"
|
|
fontSize="md"
|
|
px={2}
|
|
colorScheme="pink"
|
|
leftIcon={<MetaMaskIcon />}
|
|
{...{ isLoading, onClick }}
|
|
>
|
|
{name}
|
|
</Button>
|
|
</Tooltip>
|
|
) : (
|
|
<Text as="span">{name}</Text>
|
|
);
|
|
};
|