|
|
|
@@ -39,7 +39,7 @@
|
|
|
|
|
@input="
|
|
|
|
|
($event) => {
|
|
|
|
|
tokenNumber = $event.target.value;
|
|
|
|
|
return getRewardsFor($event.target.value);
|
|
|
|
|
return processChange($event.target.value);
|
|
|
|
|
}
|
|
|
|
|
"
|
|
|
|
|
:logo="activeToken.logo"
|
|
|
|
@@ -65,9 +65,7 @@
|
|
|
|
|
<div class="sarcrifice-to-input">
|
|
|
|
|
<div class="sacrifice-to-output">
|
|
|
|
|
<div class="sacrifice-to-output-coin">$BLOOD</div>
|
|
|
|
|
<div class="sacrifice-to-output-rewards header">
|
|
|
|
|
{{ output }}
|
|
|
|
|
</div>
|
|
|
|
|
<div class="sacrifice-to-output-rewards header">{{ output.toFixed(5) }}</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="sacrifice-logo">
|
|
|
|
|
<img :src="activeToken.vamp?.logo" :alt="activeToken.vamp.name" />
|
|
|
|
@@ -90,8 +88,6 @@
|
|
|
|
|
<stake-component-v1 :variant="1" v-if="showStakingMenu">
|
|
|
|
|
<template v-slot:headline> {{ null }}</template>
|
|
|
|
|
</stake-component-v1>
|
|
|
|
|
|
|
|
|
|
<!-- <stake-component v-if="showStakingMenu" stakeonly class="variant1"></stake-component> -->
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="sacrificed-info" v-if="state === 4">
|
|
|
|
@@ -150,16 +146,17 @@
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script setup>
|
|
|
|
|
import { ref, defineProps, watch, inject, nextTick } from "vue";
|
|
|
|
|
import { ref, defineProps, watch, inject, nextTick, onMounted, onBeforeUnmount, computed } from "vue";
|
|
|
|
|
import { useWalletStoreV2 } from "@/stores/walletV2";
|
|
|
|
|
import { useTokenStore } from "@/stores/tokens";
|
|
|
|
|
import { useMemeburnerStore } from "@/stores/memeburner";
|
|
|
|
|
import { useUniswapStore } from "@/stores/uniswap";
|
|
|
|
|
import StakeComponentV1 from "@/components/StakeComponentV1.vue";
|
|
|
|
|
import LoadingComponent from "@/components/LoadingComponent.vue";
|
|
|
|
|
import TokenInput from "@/components/TokenInput.vue";
|
|
|
|
|
|
|
|
|
|
import { storeToRefs } from "pinia";
|
|
|
|
|
import { waitForTransaction } from "@wagmi/core";
|
|
|
|
|
import { waitForTransaction, readContract, watchBlockNumber } from "@wagmi/core";
|
|
|
|
|
|
|
|
|
|
import Helper from "@/utils/helper.js";
|
|
|
|
|
const isMobile = inject("isMobile");
|
|
|
|
@@ -173,6 +170,7 @@ const tokenStore = useTokenStore();
|
|
|
|
|
const { activeToken } = storeToRefs(tokenStore);
|
|
|
|
|
|
|
|
|
|
const memeburnerStore = useMemeburnerStore();
|
|
|
|
|
const uniswapStore = useUniswapStore();
|
|
|
|
|
|
|
|
|
|
const props = defineProps({
|
|
|
|
|
data: Array,
|
|
|
|
@@ -189,6 +187,7 @@ const props = defineProps({
|
|
|
|
|
const tokenNumber = ref(null);
|
|
|
|
|
const output = ref(0);
|
|
|
|
|
const loading = ref(false);
|
|
|
|
|
const blockEvent = ref(null);
|
|
|
|
|
/**
|
|
|
|
|
* state 0 enter amount
|
|
|
|
|
* state 1 rdy to go
|
|
|
|
@@ -200,12 +199,66 @@ const state = ref(0);
|
|
|
|
|
const showStakingMenu = ref(false);
|
|
|
|
|
const approvalData = ref(null);
|
|
|
|
|
|
|
|
|
|
// const processChange = Helper.debounce((e) => getRewardsFor(e.target.value));
|
|
|
|
|
const processChange = Helper.debounce((value) => getRewardsFor(value));
|
|
|
|
|
|
|
|
|
|
onMounted(() => {
|
|
|
|
|
blockEvent.value = watchBlockNumber(
|
|
|
|
|
{
|
|
|
|
|
listen: true,
|
|
|
|
|
},
|
|
|
|
|
async (blockNumber) => {
|
|
|
|
|
console.log("blockNumber", blockNumber);
|
|
|
|
|
await getRewardsFor(tokenNumber.value);
|
|
|
|
|
// if (tokenNumber.value && tokenNumber.value > 0) {
|
|
|
|
|
// console.log("tokenNumber.value", tokenNumber.value);
|
|
|
|
|
// var quoteRewards = await uniswapStore.quoteExactInputSingle(
|
|
|
|
|
// tokenNumber.value * Math.pow(10, tokenStore.activeToken.decimals)
|
|
|
|
|
// );
|
|
|
|
|
// const quoteRewards1 = Number(quoteRewards) / Math.pow(10, tokenStore.activeToken.decimals);
|
|
|
|
|
// console.log("quoteRewards", quoteRewards);
|
|
|
|
|
// const rewardsForResult = await memeburnerStore.getRewardFor(
|
|
|
|
|
// tokenNumber.value * Math.pow(10, tokenStore.activeToken.decimals)
|
|
|
|
|
// );
|
|
|
|
|
// const rewardsForResult1 = Number(rewardsForResult) / Math.pow(10, tokenStore.activeToken.decimals);
|
|
|
|
|
// console.log("rewardsForResult1", rewardsForResult1);
|
|
|
|
|
// console.log("quoteRewards1", quoteRewards1);
|
|
|
|
|
// console.log("compare", quoteRewards1 * 0.995);
|
|
|
|
|
// console.log("ifcompare1", quoteRewards1 * 0.995 > rewardsForResult1);
|
|
|
|
|
// //return bigger number
|
|
|
|
|
// if (quoteRewards1 * 0.995 > rewardsForResult1) {
|
|
|
|
|
// //sacrificememe
|
|
|
|
|
// output.value = quoteRewards1;
|
|
|
|
|
// // const hash = await memeburnerStore.sacrificeMeme(tokenNumber.value);
|
|
|
|
|
// } else {
|
|
|
|
|
// output.value = rewardsForResult1;
|
|
|
|
|
// //sacrificeMemeAndBuyBLOOD
|
|
|
|
|
// // const hash = await memeburnerStore.sacrificeMeme(tokenNumber.value);
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
console.log("blockEvent.value", blockEvent.value);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
onBeforeUnmount(() => {
|
|
|
|
|
console.log("blockEventunwatch", blockEvent.value);
|
|
|
|
|
blockEvent.value();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
async function sacrificeToken(amount) {
|
|
|
|
|
try {
|
|
|
|
|
state.value = 2;
|
|
|
|
|
const hash = await memeburnerStore.sacrificeMeme(amount);
|
|
|
|
|
const getRewards = await getRewardsFor(amount);
|
|
|
|
|
console.log("getRewards123", getRewards);
|
|
|
|
|
let hash = null;
|
|
|
|
|
if (getRewards.variant === "sacrifice") {
|
|
|
|
|
console.log("sacrifice");
|
|
|
|
|
hash = await memeburnerStore.sacrificeMeme(amount);
|
|
|
|
|
} else {
|
|
|
|
|
console.log("buy");
|
|
|
|
|
hash = await memeburnerStore.sacrificeMemeAndBuyBLOOD(amount);
|
|
|
|
|
}
|
|
|
|
|
console.log("hash", hash);
|
|
|
|
|
state.value = 3;
|
|
|
|
|
const data = await waitForTransaction({
|
|
|
|
@@ -241,20 +294,86 @@ async function approveToken(amount) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async function getRewardsFor(value) {
|
|
|
|
|
console.log("getRewardsFor", value);
|
|
|
|
|
loading.value = true;
|
|
|
|
|
let variant = null;
|
|
|
|
|
let newOutput = 0;
|
|
|
|
|
// if (activeToken.value.allowance >= value) {
|
|
|
|
|
// const amountDecimal = BigInt(value * Math.pow(10, tokenStore.activeToken.decimals));
|
|
|
|
|
|
|
|
|
|
// const hash = await readContract({
|
|
|
|
|
// address: memeburnerStore.contract.address,
|
|
|
|
|
// abi: memeburnerStore.contract.abi,
|
|
|
|
|
// functionName: "sacrificeMeme",
|
|
|
|
|
// args: [tokenStore.activeToken.contractAddress, amountDecimal.toString(), 0],
|
|
|
|
|
// account: walletStore.address,
|
|
|
|
|
// });
|
|
|
|
|
// console.log("hash", hash);
|
|
|
|
|
// // var hash = await memeburnerStore.contract.simulate.sacrificeMeme([
|
|
|
|
|
// // tokenStore.activeToken.contractAddress,
|
|
|
|
|
// // amountDecimal.toString(),
|
|
|
|
|
// // 0,
|
|
|
|
|
// // ]);
|
|
|
|
|
// // console.log("hash", hash);
|
|
|
|
|
// // state.value = 3;
|
|
|
|
|
// // const data = await waitForTransaction({
|
|
|
|
|
// // hash: hash,
|
|
|
|
|
// // });
|
|
|
|
|
// // console.log("datahash", data);
|
|
|
|
|
// }
|
|
|
|
|
try {
|
|
|
|
|
if (!value || isNaN(value)) {
|
|
|
|
|
output.value = 0;
|
|
|
|
|
state.value = 0;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
const rewardsForResult = await memeburnerStore.getRewardFor(
|
|
|
|
|
BigInt(value * Math.pow(10, activeToken.value.decimals))
|
|
|
|
|
);
|
|
|
|
|
console.log("blablub", {
|
|
|
|
|
allowance: activeToken.value.allowance,
|
|
|
|
|
tokenNumber: tokenNumber.value,
|
|
|
|
|
connected: walletStore.connected,
|
|
|
|
|
check: walletStore.connected && activeToken.value.allowance >= tokenNumber.value,
|
|
|
|
|
ges: !walletStore.connected || (walletStore.connected && activeToken.value.allowance < tokenNumber.value),
|
|
|
|
|
});
|
|
|
|
|
if (!walletStore.connected || (walletStore.connected && activeToken.value.allowance < tokenNumber.value)) {
|
|
|
|
|
console.log("hier");
|
|
|
|
|
const rewardsForResult = await memeburnerStore.getRewardFor(
|
|
|
|
|
BigInt(value * Math.pow(10, activeToken.value.decimals))
|
|
|
|
|
);
|
|
|
|
|
console.log("rewardsForResult", rewardsForResult);
|
|
|
|
|
const rewardsForResultNumber = Number(rewardsForResult) / Math.pow(10, tokenStore.activeToken.decimals);
|
|
|
|
|
newOutput = rewardsForResultNumber;
|
|
|
|
|
variant = "sacrifice";
|
|
|
|
|
} else {
|
|
|
|
|
console.log("hier1");
|
|
|
|
|
console.log("activeToken.allowance", activeToken.value.allowance);
|
|
|
|
|
const rewardsForResult = await memeburnerStore.getRewardFor(
|
|
|
|
|
BigInt(value * Math.pow(10, activeToken.value.decimals))
|
|
|
|
|
);
|
|
|
|
|
console.log("rewardsForResult", rewardsForResult);
|
|
|
|
|
var quoteRewards = await uniswapStore.quoteExactInputSingle(
|
|
|
|
|
tokenNumber.value * Math.pow(10, tokenStore.activeToken.decimals)
|
|
|
|
|
);
|
|
|
|
|
const rewardsForResultNumber = Number(rewardsForResult) / Math.pow(10, tokenStore.activeToken.decimals);
|
|
|
|
|
console.log("rewardsForResultNumber", rewardsForResultNumber);
|
|
|
|
|
const quoteRewardsNumber = Number(quoteRewards) / Math.pow(10, tokenStore.activeToken.decimals);
|
|
|
|
|
console.log("quoteRewardsNumber", quoteRewardsNumber);
|
|
|
|
|
if (quoteRewardsNumber * 0.995 > rewardsForResultNumber) {
|
|
|
|
|
//sacrificememe
|
|
|
|
|
newOutput = quoteRewardsNumber;
|
|
|
|
|
variant = "buy";
|
|
|
|
|
// const hash = await memeburnerStore.sacrificeMeme(tokenNumber.value);
|
|
|
|
|
} else {
|
|
|
|
|
newOutput = rewardsForResultNumber;
|
|
|
|
|
variant = "sacrifice";
|
|
|
|
|
//sacrificeMemeAndBuyBLOOD
|
|
|
|
|
// const hash = await memeburnerStore.sacrificeMeme(tokenNumber.value);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
console.log("variant", variant);
|
|
|
|
|
state.value = 1;
|
|
|
|
|
output.value = rewardsForResult / BigInt(Math.pow(10, tokenStore.memeToken.decimals));
|
|
|
|
|
tokenStore.activeToken.rewards = output.value;
|
|
|
|
|
return output.value;
|
|
|
|
|
output.value = newOutput;
|
|
|
|
|
tokenStore.activeToken.rewards = newOutput;
|
|
|
|
|
return { ouput: newOutput, variant: variant };
|
|
|
|
|
} catch (error) {
|
|
|
|
|
console.log("error", error);
|
|
|
|
|
} finally {
|
|
|
|
@@ -264,7 +383,7 @@ async function getRewardsFor(value) {
|
|
|
|
|
|
|
|
|
|
async function addTokens(value) {
|
|
|
|
|
tokenNumber.value = Number(tokenNumber.value) + Number(value);
|
|
|
|
|
output.value = await getRewardsFor(parseInt(tokenNumber.value));
|
|
|
|
|
output.value = await getRewardsFor(tokenNumber.value).output;
|
|
|
|
|
}
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|