on master help sign in
metamask: detect presence through official package
commit8ad8a74904ef0c6d5f58b6e675dbaf958459a86e authorHunter Miller <hunter@thisdot.co> dateFri 11 Feb 2022, 15:24 (5 years ago) parent54f5889
4 files changed+12−4
package-lock.json+5 package.json+1 src/store/lib/useControlledPointsStore.js+3−3 src/store/network.js+3−1
package-lock.json+5
@@ -4720,6 +4720,11 @@
47204720 "resolved": "https://registry.npmjs.org/@ledgerhq/logs/-/logs-6.2.0.tgz",
47214721 "integrity": "sha512-SLyFyD7ElMhgKWPYedFGCT/ilcbGPgL5hXXYHxOM79Fs5fWi0zaUpt5oGqGMsOAAFaMa9/rbun0pokzPhEFz8A=="
47224722 },
4723+ "@metamask/detect-provider": {
4724+ "version": "1.2.0",
4725+ "resolved": "https://registry.npmjs.org/@metamask/detect-provider/-/detect-provider-1.2.0.tgz",
4726+ "integrity": "sha512-ocA76vt+8D0thgXZ7LxFPyqw3H7988qblgzddTDA6B8a/yU0uKV42QR/DhA+Jh11rJjxW0jKvwb5htA6krNZDQ=="
4727+ },
47234728 "@microsoft/fetch-event-source": {
47244729 "version": "2.0.1",
47254730 "resolved": "https://registry.npmjs.org/@microsoft/fetch-event-source/-/fetch-event-source-2.0.1.tgz",
package.json+1
@@ -18,6 +18,7 @@
1818 "@ethereumjs/tx": "^3.3.0",
1919 "@ledgerhq/hw-app-eth": "^6.5.0",
2020 "@ledgerhq/hw-transport-u2f": "^5.36.0-deprecated",
21+ "@metamask/detect-provider": "^1.2.0",
2122 "@reach/disclosure": "^0.15.0",
2223 "@reach/menu-button": "^0.15.1",
2324 "@reach/tabs": "^0.15.0",
src/store/lib/useControlledPointsStore.js+3−3
@@ -10,7 +10,7 @@ import { useNetwork } from '../network';
1010import { ONE_MINUTE } from 'lib/constants';
1111
1212export default function useControlledPointsStore() {
13− const { contracts } = useNetwork();
13+ const { contracts, web3 } = useNetwork();
1414 const { wallet } = useWallet();
1515 const { getPoints, getPointsDetails } = useRoller();
1616
@@ -19,7 +19,7 @@ export default function useControlledPointsStore() {
1919 const syncControlledPoints = useCallback(async () => {
2020 const _contracts = contracts.getOrElse(null);
2121 const _wallet = wallet.getOrElse(null);
22− if (!_contracts || !_wallet) {
22+ if ((!web3 && Nothing.HasInstance(web3)) || !_contracts || !_wallet) {
2323 return;
2424 }
2525
@@ -115,7 +115,7 @@ export default function useControlledPointsStore() {
115115 console.error('failed to fetch controlled points', error);
116116 _setControlledPoints(Just(Result.Error(JSON.stringify(error))));
117117 }
118− }, [contracts, wallet, getPoints, getPointsDetails]);
118+ }, [web3, contracts, wallet, getPoints, getPointsDetails]);
119119
120120 // sync controlled points whenever wallet or contracts changes
121121 useEffect(() => {
src/store/network.js+3−1
@@ -16,6 +16,7 @@ import { isDevelopment } from '../lib/flags';
1616import { Grid } from 'indigo-react';
1717import View from 'components/View';
1818import Blinky from 'components/Blinky';
19+import detectEthereumProvider from '@metamask/detect-provider';
1920
2021function _useNetwork(initialNetworkType = null) {
2122 const [networkType, setNetworkType] = useState(initialNetworkType);
@@ -26,7 +27,8 @@ function _useNetwork(initialNetworkType = null) {
2627
2728 useEffect(() => {
2829 (async () => {
29− if (window.ethereum) {
30+ const provider = await detectEthereumProvider();
31+ if (provider) {
3032 try {
3133 setMetamask(true);
3234 setNetworkType(chainIdToNetworkType(window.ethereum.chainId));