FAQ
Must: use
window.bitkeep.ethereum
fromBitKeep
1. Cannot detect bitkeep?.ethereum
Cannot detect window?.bitkeep?.ethereum, intrudct user install wallet.
function getProvider() {
const provider = window?.bitkeep?.ethereum;
if (!provider) {
window.open('https://web3.bitget.com/wallet-download');
throw "可以引导用户官网下载"
}
return provider;
}
function getProvider() {
const provider = window?.bitkeep?.ethereum;
if (!provider) {
window.open('https://web3.bitget.com/wallet-download');
throw "可以引导用户官网下载"
}
return provider;
}
2. wallet confilct
Please user window.bitkeep.ethereum
, same as web3.currentProvider
and window.ethereum
.
3. Mutil wallet confilct
delete cached wallet before every connnection
async function connect(type = "bitkeep") {
const lastProvider = provider;
const newProvider = getProvider(type);
await newProvider.request({ method: "eth_requestAccounts" });
//1. removeAllListeners
if (lastProvider) {
provider.removeAllListeners();
}
//2. user new providers
provider = newProvider;
web3 = new Web3(provider);
//3. listen change
provider.on("accountsChanged", async (accounts) => {
accountsChanged(accounts);
});
provider.on("chainChanged", async (chainId) => {
chainChanged(chainId);
});
//get current chainId
accountsChanged();
chainChanged();
// 4. cache wallet
localStorage.setItem("injected", type);
}
async function connect(type = "bitkeep") {
const lastProvider = provider;
const newProvider = getProvider(type);
await newProvider.request({ method: "eth_requestAccounts" });
//1. removeAllListeners
if (lastProvider) {
provider.removeAllListeners();
}
//2. user new providers
provider = newProvider;
web3 = new Web3(provider);
//3. listen change
provider.on("accountsChanged", async (accounts) => {
accountsChanged(accounts);
});
provider.on("chainChanged", async (chainId) => {
chainChanged(chainId);
});
//get current chainId
accountsChanged();
chainChanged();
// 4. cache wallet
localStorage.setItem("injected", type);
}
4. web3modal problems
Bitget Wallet Extension supply 2 ways:
- bitkeep not work https://github.com/WalletConnect/web3modal/issues/574
- use
bitkeep-web3modal
supportBitget Wallet Extension
import web3modal from 'bitkeep-web3modal';
const web3Modal = new Web3Modal({
network: 'mainnet', // optional
cacheProvider: true, // optional
providerOptions: {
bitkeep: {
package: true,
},
walletconnect: {
display: {
logo: 'data:image/gif;base64,INSERT_BASE64_STRING',
name: 'Mobile',
description: 'Scan qrcode with your mobile wallet',
},
package: WalletConnectProvider,
options: {
infuraId: 'INFURA_ID', // required
},
},
}, // required
});
import web3modal from 'bitkeep-web3modal';
const web3Modal = new Web3Modal({
network: 'mainnet', // optional
cacheProvider: true, // optional
providerOptions: {
bitkeep: {
package: true,
},
walletconnect: {
display: {
logo: 'data:image/gif;base64,INSERT_BASE64_STRING',
name: 'Mobile',
description: 'Scan qrcode with your mobile wallet',
},
package: WalletConnectProvider,
options: {
infuraId: 'INFURA_ID', // required
},
},
}, // required
});
5. ethers.js problems
Recomand use _ethers
from BitKeep
import ethers from "ethers"
const ethers = rquire("ethers")
//cdn
window.ethers
import ethers from "ethers"
const ethers = rquire("ethers")
//cdn
window.ethers