UNPKG

autemaliquam

Version:

A simple, maximally extensible, dependency minimized framework for building modern Ethereum dApps

1 lines 7.73 kB
{"ast":null,"code":"import { useState, useEffect } from 'react';\nimport { useWeb3React } from '@web3-react-wan/core';\nimport { injected } from './connectors';\nexport function useEagerConnect() {\n const {\n activate,\n active\n } = useWeb3React();\n const {\n 0: tried,\n 1: setTried\n } = useState(false);\n useEffect(() => {\n injected.isAuthorized().then(isAuthorized => {\n if (isAuthorized) {\n activate(injected, undefined, true).catch(() => {\n setTried(true);\n });\n } else {\n setTried(true);\n }\n });\n }, []); // intentionally only running on mount (make sure it's only mounted once :))\n // if the connection worked, wait until we get confirmation of that to flip the flag\n\n useEffect(() => {\n if (!tried && active) {\n setTried(true);\n }\n }, [tried, active]);\n return tried;\n}\nexport function useInactiveListener(suppress = false) {\n const {\n active,\n error,\n activate\n } = useWeb3React();\n useEffect(() => {\n const {\n ethereum\n } = window;\n\n if (ethereum && ethereum.on && !active && !error && !suppress) {\n const handleConnect = () => {\n console.log(\"Handling 'connect' event\");\n activate(injected);\n };\n\n const handleChainChanged = chainId => {\n console.log(\"Handling 'chainChanged' event with payload\", chainId);\n activate(injected);\n };\n\n const handleAccountsChanged = accounts => {\n console.log(\"Handling 'accountsChanged' event with payload\", accounts);\n\n if (accounts.length > 0) {\n activate(injected);\n }\n };\n\n const handleNetworkChanged = networkId => {\n console.log(\"Handling 'networkChanged' event with payload\", networkId);\n activate(injected);\n };\n\n ethereum.on('connect', handleConnect);\n ethereum.on('chainChanged', handleChainChanged);\n ethereum.on('accountsChanged', handleAccountsChanged);\n ethereum.on('networkChanged', handleNetworkChanged);\n return () => {\n if (ethereum.removeListener) {\n ethereum.removeListener('connect', handleConnect);\n ethereum.removeListener('chainChanged', handleChainChanged);\n ethereum.removeListener('accountsChanged', handleAccountsChanged);\n ethereum.removeListener('networkChanged', handleNetworkChanged);\n }\n };\n }\n }, [active, error, suppress, activate]);\n}","map":{"version":3,"sources":["/home/jsw/code/codeoneline/web3-react/example/hooks.ts"],"names":["useState","useEffect","useWeb3React","injected","useEagerConnect","activate","active","tried","setTried","isAuthorized","then","undefined","catch","useInactiveListener","suppress","error","ethereum","window","on","handleConnect","console","log","handleChainChanged","chainId","handleAccountsChanged","accounts","length","handleNetworkChanged","networkId","removeListener"],"mappings":"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","sourcesContent":["import { useState, useEffect } from 'react'\nimport { useWeb3React } from '@web3-react-wan/core'\n\nimport { injected } from './connectors'\n\nexport function useEagerConnect() {\n const { activate, active } = useWeb3React()\n\n const [tried, setTried] = useState(false)\n\n useEffect(() => {\n injected.isAuthorized().then((isAuthorized: boolean) => {\n if (isAuthorized) {\n activate(injected, undefined, true).catch(() => {\n setTried(true)\n })\n } else {\n setTried(true)\n }\n })\n }, []) // intentionally only running on mount (make sure it's only mounted once :))\n\n // if the connection worked, wait until we get confirmation of that to flip the flag\n useEffect(() => {\n if (!tried && active) {\n setTried(true)\n }\n }, [tried, active])\n\n return tried\n}\n\nexport function useInactiveListener(suppress: boolean = false) {\n const { active, error, activate } = useWeb3React()\n\n useEffect((): any => {\n const { ethereum } = window as any\n if (ethereum && ethereum.on && !active && !error && !suppress) {\n const handleConnect = () => {\n console.log(\"Handling 'connect' event\")\n activate(injected)\n }\n const handleChainChanged = (chainId: string | number) => {\n console.log(\"Handling 'chainChanged' event with payload\", chainId)\n activate(injected)\n }\n const handleAccountsChanged = (accounts: string[]) => {\n console.log(\"Handling 'accountsChanged' event with payload\", accounts)\n if (accounts.length > 0) {\n activate(injected)\n }\n }\n const handleNetworkChanged = (networkId: string | number) => {\n console.log(\"Handling 'networkChanged' event with payload\", networkId)\n activate(injected)\n }\n\n ethereum.on('connect', handleConnect)\n ethereum.on('chainChanged', handleChainChanged)\n ethereum.on('accountsChanged', handleAccountsChanged)\n ethereum.on('networkChanged', handleNetworkChanged)\n\n return () => {\n if (ethereum.removeListener) {\n ethereum.removeListener('connect', handleConnect)\n ethereum.removeListener('chainChanged', handleChainChanged)\n ethereum.removeListener('accountsChanged', handleAccountsChanged)\n ethereum.removeListener('networkChanged', handleNetworkChanged)\n }\n }\n }\n }, [active, error, suppress, activate])\n}\n"]},"metadata":{},"sourceType":"module"}