update slideoutpanel, open errors tokeninit

This commit is contained in:
EmberSpirit
2023-08-05 12:03:19 +02:00
parent 6c4933a6a8
commit ceac2a1083
26 changed files with 10440 additions and 16822 deletions
-19
View File
@@ -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) {
-49
View File
@@ -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 -4
View File
@@ -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));
-1
View File
@@ -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
View File
@@ -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])
}
},
});
-119
View File
@@ -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
View File
@@ -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;