UNPKG

@particle-network/connectkit

Version:
8 lines (7 loc) 25.3 kB
{ "version": 3, "sources": ["../../src/components/refreshIcon/index.tsx", "../../src/pages/walletInfo/index.tsx"], "sourcesContent": ["import { motion, useAnimation } from 'framer-motion';\nimport React, { useEffect, useState } from 'react';\nimport { styled } from 'styled-components';\n\ninterface RefreshIconProps extends React.SVGProps<SVGSVGElement> {\n spin?: boolean;\n}\n\nconst StyleRefreshIcon = styled.div`\n color: var(--pcm-body-color-secondary);\n width: 20px;\n min-width: 20px;\n display: flex;\n align-items: center;\n\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n color: var(--pcm-body-color);\n }\n }\n`;\n\nexport const RefreshIcon: React.FC<RefreshIconProps> = ({ spin, ...props }) => {\n const controls = useAnimation();\n const [isSpinning, setIsSpinning] = useState(false);\n useEffect(() => {\n let animation;\n\n const startSpinning = async () => {\n if (isSpinning) {\n animation = await controls.start({\n rotate: [0, 360],\n transition: { repeat: Infinity, duration: 1, ease: 'linear' },\n });\n }\n };\n\n if (spin) {\n setIsSpinning(true);\n startSpinning();\n } else {\n setIsSpinning(false);\n controls.stop();\n }\n\n return () => {\n if (animation) {\n animation.stop();\n }\n };\n }, [spin, controls, isSpinning]);\n\n return (\n <StyleRefreshIcon>\n <motion.svg\n width='20'\n height='20'\n viewBox='0 0 20 20'\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n {...(props as any)}\n animate={controls}\n >\n <path\n d='M18.6187 5.63377C18.3947 5.52181 18.0589 5.63377 17.9469 5.96963L17.4991 7.20111C16.8274 5.52181 15.8198 4.17837 14.2525 3.28275C12.3493 2.16321 10.2221 1.7154 8.09503 2.27517C5.07229 2.94689 2.83323 5.18595 2.04955 8.20869C1.9376 8.54455 2.16151 8.76846 2.38541 8.88041C2.72127 8.88041 2.94518 8.76846 3.05713 8.4326C3.72885 5.74572 5.74401 3.73056 8.43089 3.17079C10.3341 2.72298 12.2373 3.05884 13.8047 4.06642C15.1481 4.85009 16.1557 6.08158 16.7154 7.53697L15.372 6.97721C15.1481 6.86525 14.8122 6.97721 14.7003 7.31307C14.5883 7.53697 14.7003 7.87283 14.9242 7.98479L17.1633 8.88041C17.2752 8.99237 17.3872 8.99237 17.4991 8.99237H17.6111C17.6111 8.99237 17.6111 8.99237 17.723 8.99237C17.835 8.99237 17.9469 8.88041 17.9469 8.76846L18.9545 6.19353C19.0665 5.96963 18.8426 5.74572 18.6187 5.63377Z'\n fill='currentColor'\n stroke='currentColor'\n strokeWidth='0.3'\n />\n <path\n d='M17.6111 11.1195C17.3872 11.0076 17.0513 11.2315 17.0513 11.4554C16.3796 14.1423 14.3644 16.1574 11.6776 16.7172C9.77434 17.165 7.87114 16.8291 6.30379 15.8216C4.96035 15.0379 3.95277 13.8064 3.393 12.351L4.73644 12.9108C4.96035 13.0227 5.29621 12.9108 5.40816 12.5749C5.52012 12.351 5.40816 12.0151 5.18426 11.9032L2.83324 11.1195C2.72128 11.1195 2.60933 11.0076 2.49738 11.0076H2.38542C2.38542 11.0076 2.38542 11.0076 2.27347 11.0076C2.16152 11.1195 2.04956 11.2315 2.04956 11.3434L1.04198 13.8064C0.930029 14.0303 1.04198 14.3662 1.37784 14.4781C1.60175 14.5901 1.93761 14.4781 2.04956 14.1423L2.49738 12.9108C3.1691 14.4781 4.17668 15.8216 5.74402 16.7172C7.64723 17.8367 9.77434 18.2845 11.9015 17.7248C14.9242 17.053 17.2752 14.702 17.9469 11.6793C18.0589 11.4554 17.835 11.2315 17.6111 11.1195Z'\n fill='currentColor'\n stroke='currentColor'\n strokeWidth='0.3'\n />\n </motion.svg>\n </StyleRefreshIcon>\n );\n};\n\nexport default RefreshIcon;\n", "import { getChainIcon, getChainType, type SolanaChain } from '@particle-network/connector-core';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport { RoutePath } from '..';\nimport AccountSecurityIcon from '../../assets/icons/AccountSecurityIcon';\nimport BuyIcon from '../../assets/icons/BuyIcon';\nimport DisconnectIcon from '../../assets/icons/DisconnectIcon';\nimport DownArrowIcon from '../../assets/icons/DownArrowIcon';\nimport ErrorIcon from '../../assets/icons/ErrorIcon';\nimport PlusIcon from '../../assets/icons/PlusIcon';\nimport ReceiveIcon from '../../assets/icons/ReceiveIcon';\nimport WalletIcon from '../../assets/icons/WalletIcon';\nimport ChainDropdown from '../../components/chainDropdown';\nimport CircleSpinner from '../../components/circleSpinner';\nimport { StyleSwitchNetwork } from '../../components/connectedWidget/styles';\nimport { FlexBetween, FlexCenter, FlexLeft, PageContent } from '../../components/modal/styles';\nimport RefreshIcon from '../../components/refreshIcon';\nimport { SocialItem } from '../../components/socialLogin/styles';\nimport { useAccount } from '../../hooks/useAccount';\nimport { useAddress } from '../../hooks/useAddress';\nimport { useAppearance } from '../../hooks/useAppearance';\nimport { useChains } from '../../hooks/useChains';\nimport { useDisconnect } from '../../hooks/useDisconnect';\nimport { useEmbeddedWallet } from '../../hooks/useEmbeddedWallet';\nimport useLocales from '../../hooks/useLocales';\nimport { useParticleAuth } from '../../hooks/useParticleAuth';\nimport { usePublicClient } from '../../hooks/usePublicClient';\nimport { useRouter } from '../../hooks/useRouter';\nimport { useWalletConnections } from '../../hooks/useWalletConnections';\nimport { useWallets } from '../../hooks/useWallets';\nimport { formatTokenAmount, getBuyUrl, popupWindow } from '../../utils';\nimport { getChainDisplayName } from '../../utils/chains';\nimport {\n StyleActionIcon,\n StyleActionText,\n StyleActions,\n StyleBalance,\n StyleChainName,\n StyleDisconnectContent,\n StyleDisconnectLoading,\n StyleFooter,\n StyleFooterLabel,\n StyleModalContainer,\n StyleTextButton2,\n StyleWalletIcon,\n StyleWalletInfo,\n StyleWalletInfoLeft,\n StyleWalletInfoRight,\n StyleWalletText,\n} from './styles';\n\nconst Page = () => {\n const chainList = useChains();\n const { chain, chainId: currentChainId, isConnected } = useAccount();\n const locales = useLocales();\n const chains = useChains();\n const [walletConnection] = useWalletConnections();\n const client = usePublicClient();\n const [primaryWallet] = useWallets();\n const { openAccountAndSecurity, openLinkLoginAccount, getUserInfo, openSetSecurityAccount } = useParticleAuth();\n const embeddedWallet = useEmbeddedWallet();\n const address = useAddress();\n const { close, navigate } = useRouter();\n const { disconnectAsync } = useDisconnect({\n onSettled(data, error) {\n console.log('wallet disconnect');\n },\n });\n\n const [refreshBalance, setRefreshBalance] = useState(false);\n const [chainDropdownVisible, setChainDropdownVisible] = useState(false);\n const [balance, setBalance] = useState<string | null>(null);\n const timer = useRef<NodeJS.Timeout>(undefined);\n const walletInfoLeftRef = useRef<HTMLDivElement>(null);\n const [disconnectLoading, setDisconnectLoading] = useState(false);\n\n const currentChainType = useMemo(() => {\n if (chainList && chainList?.length && currentChainId) {\n const chain = chainList.find((item) => item.id === currentChainId);\n if (chain) {\n return getChainType(chain);\n }\n return '';\n } else {\n return '';\n }\n }, [chainList, currentChainId]);\n\n /**\n * \u662F\u5426\u652F\u6301\u5F53\u524D\u94FE\n */\n const supportChain = useMemo(() => {\n return chains.some((item) => item.id === chain?.id);\n }, [chain, chains]);\n\n const getBalance = async () => {\n if (!currentChainType) {\n return;\n }\n const params =\n currentChainType === 'evm' ? { address } : primaryWallet?.getWalletClient?.<SolanaChain>()?.publicKey;\n if (address && params && client) {\n client\n .getBalance(params as any)\n .then((res) => {\n const { decimals = 1 } = chain?.nativeCurrency || {};\n\n const balance = formatTokenAmount(BigInt(res), decimals, 5) || '0';\n setBalance(balance);\n const key = `${chain?.id}-${address}-balance`?.toLowerCase();\n localStorage.setItem(key, balance);\n })\n .catch((e) => {\n //ignore\n console.log('get balance error', e);\n });\n }\n };\n\n const isParticle = useMemo(() => {\n return Boolean(walletConnection && walletConnection.walletProps.connector.walletConnectorType === 'particleAuth');\n }, [walletConnection]);\n\n const getCachedBalance = () => {\n const key = `${chain?.id}-${address}-balance`?.toLowerCase();\n return localStorage.getItem(key) || '0';\n };\n\n const { appearance } = useAppearance();\n\n const buyUrl = useMemo(() => {\n if (address) {\n return getBuyUrl(currentChainId, address, '', appearance.mode);\n }\n return undefined;\n }, [address, currentChainId, appearance.mode]);\n\n useEffect(() => {\n if (address && chain && client && primaryWallet) {\n setBalance(getCachedBalance());\n getBalance();\n }\n }, [address, client, chain, primaryWallet]);\n\n useEffect(() => {\n if (chain?.id && address) {\n setBalance(getCachedBalance());\n }\n }, [chain?.id, address, balance]);\n\n return (\n <PageContent>\n <StyleModalContainer>\n <StyleWalletInfo>\n <StyleWalletInfoLeft\n ref={walletInfoLeftRef}\n selected={chains?.length > 1 || !supportChain}\n onClick={() => {\n if (chains?.length > 1 || !supportChain) {\n setChainDropdownVisible(!chainDropdownVisible);\n }\n }}\n >\n {isConnected && (\n <>\n {supportChain ? (\n <>\n {chain && <StyleWalletIcon src={getChainIcon(chain)} alt='' />}\n <StyleChainName>{getChainDisplayName(chain)}</StyleChainName>\n </>\n ) : (\n <StyleSwitchNetwork>\n <ErrorIcon />\n {locales.switchNetwork}\n </StyleSwitchNetwork>\n )}\n\n {(chains?.length > 1 || !supportChain) && (\n <StyleWalletText>\n <DownArrowIcon\n width={12}\n height={12}\n spin={!!chainDropdownVisible}\n color={supportChain ? 'var(--pcm-body-color-secondary)' : 'var(--pcm-error-color)'}\n />\n </StyleWalletText>\n )}\n </>\n )}\n </StyleWalletInfoLeft>\n {supportChain && (\n <StyleWalletInfoRight>\n <StyleBalance>\n {balance || 0} &nbsp;\n {chain?.nativeCurrency.symbol?.replace('tBNB', 'BNB')}\n </StyleBalance>\n <RefreshIcon\n style={{ cursor: 'pointer' }}\n spin={refreshBalance}\n onClick={async () => {\n clearTimeout(timer.current);\n const start = new Date().getTime();\n setRefreshBalance(true);\n await getBalance();\n const remain = 1000 - (new Date().getTime() - start);\n timer.current = setTimeout(\n () => {\n setRefreshBalance(false);\n },\n remain > 0 ? remain : 0\n );\n }}\n />\n </StyleWalletInfoRight>\n )}\n\n <ChainDropdown\n visible={chainDropdownVisible}\n setVisible={setChainDropdownVisible}\n clickAwayElements={[walletInfoLeftRef as any]}\n maxHeight={200}\n supportChain={supportChain}\n top={50}\n />\n </StyleWalletInfo>\n <StyleActions>\n <SocialItem\n $isDisabled={Boolean(!buyUrl)}\n $felxRow={false}\n onClick={() => {\n if (!buyUrl) return;\n\n const height = parseInt((window.innerHeight * 0.8).toString());\n let width = height * 0.6;\n if (width > 1000) {\n width = 1000;\n }\n if (width > window.innerWidth) {\n width = parseInt((window.innerWidth * 0.9).toString());\n }\n popupWindow(buyUrl, 'Particle Network', width, height);\n close();\n }}\n >\n <FlexCenter\n style={{\n width: '100%',\n gap: '6px',\n }}\n >\n <BuyIcon\n className={StyleActionIcon}\n style={{\n width: '20px',\n }}\n />\n <StyleActionText>{locales.buy}</StyleActionText>\n </FlexCenter>\n </SocialItem>\n\n <SocialItem\n $felxRow={false}\n $isDisabled={Boolean(!address) || !chain}\n onClick={() => {\n navigate(RoutePath.Receive);\n }}\n >\n <FlexCenter\n style={{\n width: '100%',\n gap: '6px',\n }}\n >\n <ReceiveIcon\n className={StyleActionIcon}\n style={{\n width: '18px',\n }}\n />\n <StyleActionText>{locales.receive}</StyleActionText>\n </FlexCenter>\n </SocialItem>\n\n {embeddedWallet && embeddedWallet.isCanOpen && (\n <SocialItem\n $felxRow={false}\n $isDisabled={Boolean(!address)}\n onClick={() => {\n embeddedWallet.openWallet();\n close();\n }}\n >\n <FlexCenter\n style={{\n width: '100%',\n gap: '6px',\n }}\n >\n <WalletIcon\n className={StyleActionIcon}\n style={{\n width: '20px',\n }}\n />\n <StyleActionText>{locales.wallet}</StyleActionText>\n </FlexCenter>\n </SocialItem>\n )}\n\n {isParticle && (\n <SocialItem\n $felxRow={false}\n onClick={() => {\n openAccountAndSecurity();\n close();\n }}\n >\n <FlexCenter\n style={{\n width: '100%',\n gap: '6px',\n }}\n >\n <AccountSecurityIcon\n className={StyleActionIcon}\n style={{\n width: '20px',\n }}\n />\n <StyleActionText>{locales.accountAndSecurity}</StyleActionText>\n </FlexCenter>\n </SocialItem>\n )}\n </StyleActions>\n <StyleFooter>\n <FlexBetween>\n {isParticle ? (\n <StyleTextButton2\n onClick={() => {\n const useInfo = getUserInfo();\n const { email, phone } = useInfo.security_account || {};\n if (!email && !phone) {\n openSetSecurityAccount();\n close();\n } else {\n openLinkLoginAccount();\n close();\n }\n }}\n >\n <FlexLeft gap={5}>\n <PlusIcon className={StyleActionIcon} />\n <StyleFooterLabel>{locales.linkLoginAccount}</StyleFooterLabel>\n </FlexLeft>\n </StyleTextButton2>\n ) : (\n <div></div>\n )}\n\n <StyleTextButton2 $disconnectLoading={disconnectLoading}>\n <FlexLeft\n gap={5}\n onClick={() => {\n setDisconnectLoading(true);\n disconnectAsync().finally(() => {\n setTimeout(() => {\n setDisconnectLoading(false);\n }, 300);\n });\n }}\n >\n <StyleDisconnectContent>\n {disconnectLoading && (\n <StyleDisconnectLoading>\n <CircleSpinner width={16} inset={0} height={16} logo={<></>} />\n </StyleDisconnectLoading>\n )}\n\n <DisconnectIcon className={StyleActionIcon} />\n </StyleDisconnectContent>\n <StyleFooterLabel>{locales.disconnect}</StyleFooterLabel>\n </FlexLeft>\n </StyleTextButton2>\n </FlexBetween>\n </StyleFooter>\n </StyleModalContainer>\n </PageContent>\n );\n};\n\nexport default Page;\n"], "mappings": "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", "names": ["useEffect", "useState", "jsx", "jsxs", "init_styles", "chain", "balance"] }