init functions for the storage

This commit is contained in:
EmberSpirit
2023-07-16 15:11:39 +02:00
parent 56454bef89
commit cb85a47a94
21 changed files with 7823 additions and 368 deletions
+33 -48
View File
@@ -1,7 +1,10 @@
import { defineStore } from "pinia";
import { markRaw } from "vue";
import Web3 from "web3";
import { useWalletStore } from "./wallet";
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";
import MemeToken from "@/assets/contracts/MemeToken.json";
@@ -21,6 +24,7 @@ export const useTokenStore = defineStore("token", {
backgroundColor: "#4b8501",
abi: Meme1Json.abi,
contractAddress: Meme1Json.contractAddress,
ethcontract: null,
},
{
name: "$SHIB",
@@ -53,19 +57,31 @@ export const useTokenStore = defineStore("token", {
allowance: null,
},
loading: false,
memeToken: {
config: {
abi: MemeToken.abi,
contractAddress: MemeToken.contractAddress
}
},
memeBurner: {
config: MemeBurnerJson,
contract: null,
memeToken: {
config: {
abi: MemeToken.abi,
contractAddress: MemeToken.contractAddress,
},
},
}),
getters: {},
actions: {
async init() {
console.log("-----------init token-------------");
const walletStore = useWalletStore();
for (let index = 0; index < this.token.length; index++) {
const token = this.token[index];
token.contract = new walletStore.web3.eth.Contract(token.abi, token.contractAddress);
token.decimals = parseInt(await token.contract.methods.decimals().call());
}
//MemeToken init
this.memeToken.contract = new walletStore.web3.eth.Contract(
this.memeToken.config.abi,
this.memeToken.config.contractAddress
);
this.memeToken.decimals = parseInt(await this.memeToken.contract.methods.decimals().call());
},
async changeActiveToken(token) {
this.activeToken = token;
const web3 = new Web3(window.ethereum);
@@ -77,28 +93,29 @@ export const useTokenStore = defineStore("token", {
}
},
async allowance() {
console.log("allowance");
const walletStore = useWalletStore();
console.log("walletStore.address", walletStore.address);
const allowance = await this.contract.methods
.allowance(walletStore.address, MemeBurnerJson.contractAddress)
const memeBurnerStore = useMemeburnerStore();
var allowance = await this.contract.methods
.allowance(walletStore.address, memeBurnerStore.config.contractAddress)
.call();
console.log("allowance", allowance);
var decimals = await this.contract.methods.decimals().call();
console.log("decimals", decimals);
console.log("Math.pow(10, decimals)", Math.pow(10, decimals));
allowance = BigInt(allowance / Math.pow(10, decimals));
return allowance;
},
async approveToken(amount) {
try {
console.log("amount", amount);
this.loading = true;
const walletStore = useWalletStore();
const memeBurnerStore = useMemeburnerStore();
var approve = await this.contract.methods
.approve(this.memeBurner.config.contractAddress, amount)
.approve(memeBurnerStore.config.contractAddress, amount)
.send({ from: walletStore.address });
//todo parameter value übergeben in eth web3.utils.toHex(web3.utils.toWei(amount, 'ether'))
// .send({ from: walletStore.address, value: 0.5 });
console.log("approve", approve);
this.activeToken.allowance = await this.allowance();
return approve;
} catch (error) {
@@ -107,42 +124,10 @@ export const useTokenStore = defineStore("token", {
this.loading = false;
}
},
async sacrificeToken(amount) {
try {
console.log("amount", amount);
if (!amount || amount == 0) {
//todo error
console.error("amount is 0 or null or undefined");
return;
}
this.loading = true;
console.log("this.activeToken.", this.activeToken.contractAddress);
const walletStore = useWalletStore();
console.log("walletStore.address", walletStore.address);
var reward = await this.memeBurner.contract.methods
.sacrificeMeme(this.activeToken.contractAddress, amount)
.send({ from: walletStore.address });
console.log("reward", reward);
this.activeToken.allowance = await this.allowance();
} catch (error) {
console.error(error);
} finally {
this.loading = false;
}
},
async getRewardsFor(amount) {
const contractsStore = useContractStore();
var rewards = await contractsStore.list.memeBurnerPublic.methods
.getRewardFor(this.activeToken.contractAddress, amount)
.call();
return rewards;
},
getTokenContract(token) {
console.log("token", token);
const contractAddress = token.contractAddress;
console.log("contractAddress", contractAddress);
const activeToken = this.token.find((obj) => obj.contractAddress === contractAddress);
console.log("activeToken", activeToken);
const web3 = new Web3(window.ethereum);
const contract = new web3.eth.Contract(activeToken.abi, contractAddress);
return contract;