Add useEthereumProvider hook

This commit is contained in:
kjmczk
2022-03-22 20:02:31 +09:00
parent a6b418e7be
commit cdf69e18c3

View File

@@ -0,0 +1,30 @@
import { useEffect, useState } from 'react';
import detectEthereumProvider from '@metamask/detect-provider';
import type { ExternalProvider } from '@ethersproject/providers';
export function useEthereumProvider() {
const [ethereumProvider, setEthereumProvider] =
useState<ExternalProvider | null>(null);
const [isMetaMask, setIsMetaMask] = useState(false);
useEffect(() => {
async function detectProvider() {
const provider = (await detectEthereumProvider()) as ExternalProvider;
setEthereumProvider(provider);
if (provider === window.ethereum) {
setIsMetaMask(!!provider);
}
}
detectProvider();
// cleanup
return () => {
setEthereumProvider(null);
setIsMetaMask(false);
};
}, []);
return { ethereumProvider, isMetaMask };
}