update slideoutpanel, open errors tokeninit
This commit is contained in:
@@ -1,8 +1,6 @@
|
||||
import { defineStore } from "pinia";
|
||||
import MemeBurnerJson from "@/assets/contracts/MemeBurner.json";
|
||||
import { useTokenStore } from "./tokens";
|
||||
import { useMultiCallStore } from "./multicall";
|
||||
import { useWalletStore } from "./wallet";
|
||||
import { useWalletStoreV2 } from "./walletV2";
|
||||
import { useRoundsStore } from "@/stores/rounds";
|
||||
|
||||
@@ -22,28 +20,12 @@ export const useMemeburnerStore = defineStore("memeburner", {
|
||||
const walletStore = useWalletStoreV2();
|
||||
// const roundsStore = useRoundsStore();
|
||||
console.log("walletStore.walletClient", walletStore.walletClient);
|
||||
// this.contract = new walletStore.web3.eth.Contract(this.config.abi, this.config.contractAddress);
|
||||
this.contract = getContract({
|
||||
address: this.config.contractAddress,
|
||||
abi: this.config.abi,
|
||||
walletClient: walletStore.walletClient || walletStore.publicClient,
|
||||
});
|
||||
console.log("this.contract", this.contract);
|
||||
// const websocketMemeBurner = new walletStore.web3socket.eth.Contract(
|
||||
// this.config.abi,
|
||||
// this.config.contractAddress
|
||||
// );
|
||||
// websocketMemeBurner.events
|
||||
// .MemeSacrificed()
|
||||
// .on("data", async (event) => {
|
||||
// console.log("sacrificedAmount", event.returnValues.sacrificedAmount);
|
||||
// console.log("sacrificedToken", event.returnValues.sacrificedToken);
|
||||
// await roundsStore.updateCurrentRound(
|
||||
// event.returnValues.sacrificedToken,
|
||||
// event.returnValues.sacrificedAmount
|
||||
// );
|
||||
// })
|
||||
// .on("error", (error) => console.log("MemeSacrificederror", error));
|
||||
},
|
||||
async getRewardFor(amount) {
|
||||
const tokenStore = useTokenStore();
|
||||
@@ -87,7 +69,6 @@ export const useMemeburnerStore = defineStore("memeburner", {
|
||||
return data;
|
||||
},
|
||||
async sacrificeMeme(amount) {
|
||||
const walletStore = useWalletStore();
|
||||
const tokenStore = useTokenStore();
|
||||
try {
|
||||
if (!amount || amount == 0) {
|
||||
|
||||
@@ -1,49 +0,0 @@
|
||||
import { defineStore } from "pinia";
|
||||
import MulticallJson from "@/assets/contracts/Multicall.json";
|
||||
import { useWalletStore } from "./wallet";
|
||||
|
||||
|
||||
export const useMultiCallStore = defineStore("multicall", {
|
||||
state: () => ({
|
||||
config: MulticallJson,
|
||||
contract: null,
|
||||
}),
|
||||
getters: {},
|
||||
actions: {
|
||||
async init() {
|
||||
console.log("-----------init multicall-------------");
|
||||
const walletStore = useWalletStore();
|
||||
|
||||
this.contract = new walletStore.web3.eth.Contract(
|
||||
this.config.abi,
|
||||
this.config.contractAddress
|
||||
);
|
||||
},
|
||||
async aggregate(calls, parameters = {}) {
|
||||
const callRequests = calls.map((call) => {
|
||||
const callData = call.encodeABI();
|
||||
return {
|
||||
target: call._parent._address,
|
||||
callData,
|
||||
};
|
||||
});
|
||||
|
||||
const { returnData } = await this.contract.methods.aggregate(callRequests).call(parameters);
|
||||
|
||||
return returnData.map((hex, index) => {
|
||||
const types = calls[index]._method.outputs.map((o) =>
|
||||
o.internalType !== o.type && o.internalType !== undefined ? o : o.type
|
||||
);
|
||||
const walletStore = useWalletStore();
|
||||
|
||||
let result = walletStore.web3.eth.abi.decodeParameters(types, hex);
|
||||
|
||||
delete result.__length__;
|
||||
|
||||
result = Object.values(result);
|
||||
return result.length === 1 ? result[0] : result;
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
@@ -1,10 +1,7 @@
|
||||
import { defineStore } from "pinia";
|
||||
import RewardLockerJson from "@/assets/contracts/RewardLocker.json";
|
||||
import { useTokenStore } from "./tokens";
|
||||
import { useMultiCallStore } from "./multicall";
|
||||
import { useWalletStore } from "./wallet";
|
||||
import { useWalletStoreV2 } from "./walletV2";
|
||||
import { ethers } from "ethers";
|
||||
import { multicall, getContract } from "@wagmi/core";
|
||||
|
||||
|
||||
@@ -24,7 +21,6 @@ export const useRewardLockerStore = defineStore("rewardlocker", {
|
||||
abi: this.config.abi,
|
||||
walletClient: walletStore.walletClient || walletStore.publicClient,
|
||||
});
|
||||
// this.contract = new walletStore.web3.eth.Contract(this.config.abi, this.config.contractAddress);
|
||||
},
|
||||
/*
|
||||
* @param {*} walletAddress
|
||||
@@ -62,6 +58,7 @@ export const useRewardLockerStore = defineStore("rewardlocker", {
|
||||
return await this.contract.read.lastCompletedRound();
|
||||
},
|
||||
async claim(round) {
|
||||
console.log("claim");
|
||||
const walletStore = useWalletStoreV2();
|
||||
// return await this.contract.methods.claim(round).call();
|
||||
console.log(this.contract.methods.claim(round));
|
||||
|
||||
@@ -2,7 +2,6 @@ import { defineStore } from "pinia";
|
||||
import { useMemeburnerStore } from "./memeburner";
|
||||
import { useTokenStore } from "./tokens";
|
||||
import { useRewardLockerStore } from "./rewardlocker";
|
||||
import { useWalletStore } from "./wallet";
|
||||
import { useWalletStoreV2 } from "./walletV2";
|
||||
|
||||
|
||||
|
||||
+26
-38
@@ -1,10 +1,7 @@
|
||||
import { defineStore } from "pinia";
|
||||
import { markRaw } from "vue";
|
||||
import Web3 from "web3";
|
||||
import { useWalletStore } from "./wallet";
|
||||
import { useWalletStoreV2 } from "./walletV2";
|
||||
import { useContractStore } from "./contracts";
|
||||
import { ethers } from "ethers";
|
||||
import { useMemeburnerStore } from "./memeburner";
|
||||
import Meme1Json from "@/assets/contracts/Meme1.json";
|
||||
import Meme2Json from "@/assets/contracts/Meme2.json";
|
||||
@@ -74,45 +71,47 @@ export const useTokenStore = defineStore("token", {
|
||||
const contracts = [];
|
||||
const walletStore = useWalletStoreV2();
|
||||
for (let index = 0; index < this.token.length; index++) {
|
||||
const token = this.token[index];
|
||||
token.contract = getContract({
|
||||
const token = this.token[index];
|
||||
console.log("token123abc", token);
|
||||
var test = getContract({
|
||||
address: token.contractAddress,
|
||||
abi: token.abi,
|
||||
walletClient: walletStore.walletClient || walletStore.publicClient,
|
||||
// walletClient: walletStore.publicClient,
|
||||
});
|
||||
console.log("test", test);
|
||||
console.log("token.contract", token.contract);
|
||||
contracts.push({...token.contract, functionName: "decimals"})
|
||||
var decimals = await test.read.decimals();
|
||||
console.log("decimals", decimals);
|
||||
token.contract = test;
|
||||
// contracts.push({...token.contract, functionName: "decimals"})
|
||||
|
||||
}
|
||||
|
||||
|
||||
//MemeToken init
|
||||
this.memeToken.contract = getContract({
|
||||
address: this.memeToken.config.contractAddress,
|
||||
abi: this.memeToken.config.abi,
|
||||
PublicClient: walletStore.publicClient,
|
||||
WalletClient: walletStore.walletClient,
|
||||
});
|
||||
contracts.push({ ...this.memeToken.contract, functionName: "decimals" });
|
||||
// this.memeToken.contract = getContract({
|
||||
// address: this.memeToken.config.contractAddress,
|
||||
// abi: this.memeToken.config.abi,
|
||||
// walletClient: walletStore.walletClient || walletStore.publicClient,
|
||||
// });
|
||||
// contracts.push({ ...this.memeToken.contract, functionName: "decimals" });
|
||||
|
||||
|
||||
const data = await multicall({
|
||||
contracts,
|
||||
});
|
||||
//multicall decimal
|
||||
for (let index = 0; index < this.token.length; index++) {
|
||||
const token = this.token[index];
|
||||
token.decimals = data[index].result
|
||||
}
|
||||
// const data = await multicall({
|
||||
// contracts,
|
||||
// });
|
||||
// //multicall decimal
|
||||
// for (let index = 0; index < this.token.length; index++) {
|
||||
// const token = this.token[index];
|
||||
// token.decimals = data[index].result
|
||||
// }
|
||||
|
||||
this.memeToken.decimals = data[this.token.length].result;
|
||||
// this.memeToken.decimals = data[this.token.length].result;
|
||||
|
||||
},
|
||||
async changeActiveToken(token) {
|
||||
console.log("changeActiveToken");
|
||||
this.activeToken = token;
|
||||
// const web3 = new Web3(window.ethereum);
|
||||
// this.contract = new web3.eth.Contract(token.abi, token.contractAddress);
|
||||
const walletStore = useWalletStoreV2();
|
||||
if (walletStore.connected) {
|
||||
//TODO, wenn connected, dann all diese Daten laden?
|
||||
@@ -143,20 +142,17 @@ export const useTokenStore = defineStore("token", {
|
||||
async approveToken(amount) {
|
||||
try {
|
||||
this.loading = true;
|
||||
const walletStore = useWalletStore();
|
||||
const memeBurnerStore = useMemeburnerStore();
|
||||
// var approve = await this.contract.methods
|
||||
// .approve(memeBurnerStore.config.contractAddress, amount)
|
||||
// .send({ from: walletStore.address});
|
||||
console.log("approve");
|
||||
var approveHash = await this.activeToken.contract.write.approve([
|
||||
memeBurnerStore.config.contractAddress,
|
||||
amount,
|
||||
]);
|
||||
console.log("approveHash", approvehash);
|
||||
//todo parameter value übergeben in eth web3.utils.toHex(web3.utils.toWei(amount, 'ether'))
|
||||
|
||||
// .send({ from: walletStore.address, value: 0.5 });
|
||||
// this.activeToken.allowance = await this.allowance();
|
||||
const data = await waitForTransaction({
|
||||
hash: approveHash,
|
||||
});
|
||||
@@ -167,16 +163,8 @@ export const useTokenStore = defineStore("token", {
|
||||
this.loading = false;
|
||||
}
|
||||
},
|
||||
getTokenContract(token) {
|
||||
console.log("token", token);
|
||||
const contractAddress = token.contractAddress;
|
||||
const activeToken = this.token.find((obj) => obj.contractAddress === contractAddress);
|
||||
const web3 = new Web3(window.ethereum);
|
||||
const contract = new web3.eth.Contract(activeToken.abi, contractAddress);
|
||||
return contract;
|
||||
},
|
||||
async nonces(userAddress) {
|
||||
return this.memeToken.contract.methods.nonces(userAddress).call();
|
||||
return this.memeToken.contract.read.nonces([userAddress])
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
@@ -1,119 +0,0 @@
|
||||
import { defineStore } from "pinia";
|
||||
import { markRaw } from "vue";
|
||||
import { useTokenStore } from "./tokens";
|
||||
import Web3 from "web3";
|
||||
export const useWalletStore = defineStore("wallet", {
|
||||
state: () => ({
|
||||
count: 0,
|
||||
alchemy: null,
|
||||
connected: false,
|
||||
address: null,
|
||||
web3: null,
|
||||
provider: null
|
||||
}),
|
||||
getters: {
|
||||
},
|
||||
actions: {
|
||||
async init() {
|
||||
console.log("wallet init");
|
||||
await this.isConnected();
|
||||
const goerliKey = import.meta.env.VITE_GOERLI_KEY;
|
||||
if (this.connected) {
|
||||
const web3 = new Web3(window.ethereum);
|
||||
this.web3 = markRaw(web3);
|
||||
console.log("hierabc");
|
||||
window.ethereum.on("accountsChanged", async (data) => {
|
||||
console.log("accountsChanged", data);
|
||||
console.log("data", data);
|
||||
if (data.length > 0) {
|
||||
this.address = data[0]
|
||||
this.connected = true;
|
||||
} else {
|
||||
this.address = null;
|
||||
this.connected = false;
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// provider = new ethers.BrowserProvider(window.ethereum);
|
||||
} else {
|
||||
const url = `https://eth-goerli.g.alchemy.com/v2/${goerliKey}`;
|
||||
this.web3 = new Web3(url);
|
||||
// provider = new ethers.AlchemyProvider("goerli", goerliKey);
|
||||
}
|
||||
|
||||
//Websocket
|
||||
this.web3socket = new Web3(
|
||||
new Web3.providers.WebsocketProvider(`wss://eth-goerli.g.alchemy.com/v2/${goerliKey}`)
|
||||
);
|
||||
},
|
||||
// connectWalletV2(connector) {
|
||||
// this.address = data[0];
|
||||
// },
|
||||
connectWallet() {
|
||||
window.ethereum
|
||||
.request({ method: "eth_requestAccounts" })
|
||||
.then((data) => {
|
||||
console.log("data", data);
|
||||
this.address = data[0];
|
||||
this.connected = true;
|
||||
this.init();
|
||||
})
|
||||
.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;
|
||||
if (!window.ethereum) {
|
||||
console.warn("Metamask not installed"),
|
||||
this.connected = false;
|
||||
return;
|
||||
|
||||
}
|
||||
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;
|
||||
return this.connected
|
||||
}
|
||||
|
||||
}
|
||||
},
|
||||
persist: true,
|
||||
});
|
||||
+15
-43
@@ -5,7 +5,6 @@ import { useTokenStore } from "./tokens";
|
||||
import {
|
||||
createConfig,
|
||||
configureChains,
|
||||
mainnet,
|
||||
getAccount,
|
||||
getContract,
|
||||
connect,
|
||||
@@ -13,13 +12,14 @@ import {
|
||||
InjectedConnector,
|
||||
watchAccount,
|
||||
getWalletClient,
|
||||
fetchBalance
|
||||
} from "@wagmi/core";
|
||||
|
||||
import { WalletConnectConnector } from "@wagmi/core/connectors/walletConnect";
|
||||
import { MetaMaskConnector } from "@wagmi/core/connectors/metaMask";
|
||||
import { CoinbaseWalletConnector } from "@wagmi/core/connectors/coinbaseWallet";
|
||||
|
||||
import { goerli } from "@wagmi/core/chains";
|
||||
import { goerli, mainnet } from "@wagmi/core/chains";
|
||||
import { publicProvider } from "@wagmi/core/providers/public";
|
||||
import { alchemyProvider } from "@wagmi/core/providers/alchemy";
|
||||
|
||||
@@ -30,7 +30,6 @@ export const useWalletStoreV2 = defineStore("walletV2", {
|
||||
alchemy: null,
|
||||
connected: false,
|
||||
address: null,
|
||||
web3: null,
|
||||
provider: null,
|
||||
client: null,
|
||||
publicClient: null,
|
||||
@@ -47,7 +46,7 @@ export const useWalletStoreV2 = defineStore("walletV2", {
|
||||
const projectId = "d8e5ecb0353c02e21d4c0867d4473ac5";
|
||||
|
||||
const { chains, publicClient, webSocketPublicClient } = configureChains(
|
||||
[goerli],
|
||||
[goerli, mainnet],
|
||||
[alchemyProvider({ apiKey: goerliKey }), publicProvider()]
|
||||
);
|
||||
|
||||
@@ -84,39 +83,8 @@ export const useWalletStoreV2 = defineStore("walletV2", {
|
||||
console.log("this.config", this.config);
|
||||
const walletClient = await getWalletClient();
|
||||
console.log("walletClient", walletClient);
|
||||
// await this.isConnected();
|
||||
// const goerliKey = import.meta.env.VITE_GOERLI_KEY;
|
||||
// if (this.connected) {
|
||||
// const web3 = new Web3(window.ethereum);
|
||||
// this.web3 = markRaw(web3);
|
||||
// console.log("hierabc");
|
||||
// window.ethereum.on("accountsChanged", async (data) => {
|
||||
// console.log("accountsChanged", data);
|
||||
// console.log("data", data);
|
||||
// if (data.length > 0) {
|
||||
// this.address = data[0];
|
||||
// this.connected = true;
|
||||
// } else {
|
||||
// this.address = null;
|
||||
// this.connected = false;
|
||||
// }
|
||||
// });
|
||||
|
||||
// // provider = new ethers.BrowserProvider(window.ethereum);
|
||||
// } else {
|
||||
// const url = `https://eth-goerli.g.alchemy.com/v2/${goerliKey}`;
|
||||
// this.web3 = new Web3(url);
|
||||
// // provider = new ethers.AlchemyProvider("goerli", goerliKey);
|
||||
// }
|
||||
|
||||
// //Websocket
|
||||
// this.web3socket = new Web3(
|
||||
// new Web3.providers.WebsocketProvider(`wss://eth-goerli.g.alchemy.com/v2/${goerliKey}`)
|
||||
// );
|
||||
},
|
||||
// connectWalletV2(connector) {
|
||||
// this.address = data[0];
|
||||
// },
|
||||
async connectWallet(connector) {
|
||||
console.log("connector.name", connector.name);
|
||||
// if (!account.isConnected) {
|
||||
@@ -124,16 +92,20 @@ export const useWalletStoreV2 = defineStore("walletV2", {
|
||||
chainId: goerli.id,
|
||||
connector: connector,
|
||||
});
|
||||
|
||||
console.log("connection", connection);
|
||||
// this.address = connection.account;
|
||||
},
|
||||
async getTokenBalance(token) {
|
||||
// const tokenStore = useTokenStore();
|
||||
// const contract = tokenStore.getTokenContract(token);
|
||||
// const result = await contract.methods.balanceOf(this.address).call();
|
||||
console.log("this.address", this.address);
|
||||
const result = await token.contract.read.balanceOf([this.address]);
|
||||
return result;
|
||||
},
|
||||
async getTokenBalance(token) {
|
||||
console.log("token", token);
|
||||
console.log("address", this.address);
|
||||
// const result = await token.contract.read.balanceOf([this.address]);
|
||||
// return result;
|
||||
},
|
||||
|
||||
async getTokenBalances() {
|
||||
//todo
|
||||
}
|
||||
// async isConnected() {
|
||||
// try {
|
||||
// this.loading = true;
|
||||
|
||||
Reference in New Issue
Block a user