Files
ImmortalClanVue/src/stores/wallet.js
T
2023-06-29 21:09:08 +02:00

88 lines
2.8 KiB
JavaScript

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,
});