import { defineStore } from "pinia"; import { useTokenStore } from "./tokens"; import Web3 from "web3"; export const useWalletStore = defineStore("wallet", { state: () => ({ count: 0, alchemy: null, connected: false, address: null, web3: null }), getters: { }, actions: { increment() { this.count++; }, connectWallet() { console.log("window.ethereum", window.ethereum); // if (window.ethereum) { window.ethereum .request({ method: "eth_requestAccounts" }) .then((data) => { console.log("data", data); this.isConnected(); // this.address = data[0]; // this.connected = true; // const tokenStore = useTokenStore(); // if (tokenStore.activeToken.address) { // //Token selected but not refreshed // this.getTokenBalance(tokenStore.activeToken.address).then( // (data) => (tokenStore.activeToken.balance = data) // ); // } // console.log("permissions", permissions); }) .catch((error) => { if (error.code === 4001) { // EIP-1193 userRejectedRequest error console.log("Please connect to MetaMask."); } else { console.error(error); } }); // } }, async getTokenBalance(token) { const tokenStore = useTokenStore(); const contract = tokenStore.getTokenContract(token); const result = await contract.methods.balanceOf(this.address).call(); return result; }, async isConnected() { try { this.loading = true; const accounts = await window.ethereum.request({ method: "eth_accounts" }); if (accounts.length) { this.connected = true; this.address = accounts[0]; console.log(`You're connected to: ${accounts[0]}`); const web3 = new Web3(window.ethereum); const tokenStore = useTokenStore(); console.log("tokenStore.activeToken", tokenStore.activeToken); if (tokenStore.activeToken.contractAddress) { tokenStore.activeToken.balance = await this.getTokenBalance( tokenStore.activeToken ); tokenStore.activeToken.allowance = await tokenStore.allowance(); } tokenStore.memeBurner.contract = new web3.eth.Contract( tokenStore.memeBurner.config.abi, tokenStore.memeBurner.config.contractAddress ); } else { console.log("Metamask is not connected"); this.connected = false; } } catch (error) { console.log("error", error); } finally { this.loading = false; } } }, persist: true, });