+
-
+1m
-
+10m
-
+100m
+
+1m
+
+10m
+
+100m
Balance: {{ parseFloat(activeToken.balance) }}
Max
-
+
-
+
+
+
+

+
+
+
+
Increase amount to pay 97% less network fees.
+
+
-
-
-
Increase amount to pay 97% less network fees.
-
@@ -72,12 +82,13 @@ import { ref, defineProps, watch } from "vue";
import { useWalletStore } from "@/stores/wallet";
import { useTokenStore } from "@/stores/tokens";
import { storeToRefs } from "pinia";
+import Helper from "@/utils/helper.js";
const walletStore = useWalletStore();
const { contract, connected } = storeToRefs(walletStore);
const tokenStore = useTokenStore();
-const { activeToken } = storeToRefs(tokenStore);
+const { activeToken, loading } = storeToRefs(tokenStore);
const props = defineProps({
data: Array,
@@ -86,14 +97,21 @@ const props = defineProps({
watch(
activeToken,
() => {
- tokenNumber.value = 0;
+ tokenNumber.value = null;
},
{ deep: true }
);
const tokenNumber = ref(0);
+const output = ref(0);
const approvalData = ref(null);
+const processChange = Helper.debounce((e) => test(e));
+
+async function test(e) {
+ console.log("hier", e);
+ output.value = await tokenStore.getRewardsFor(parseInt(e.target.value));
+}
function addTokens(value) {
tokenNumber.value = tokenNumber.value + value;
}
@@ -102,8 +120,6 @@ function addTokens(value) {
diff --git a/src/main.js b/src/main.js
index c5a8419..0713bce 100644
--- a/src/main.js
+++ b/src/main.js
@@ -14,10 +14,12 @@ import { library } from '@fortawesome/fontawesome-svg-core'
import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'
/* import specific icons */
-import { faArrowDown } from '@fortawesome/free-solid-svg-icons'
+import { faArrowDown, faSpinner ,faPlus } from "@fortawesome/free-solid-svg-icons";
+import { faDiscord, faTwitter, faTelegram } from "@fortawesome/free-brands-svg-icons";
+
/* add icons to the library */
-library.add(faArrowDown);
+library.add(faArrowDown, faDiscord, faTwitter, faTelegram, faSpinner, faPlus);
const app = createApp(App)
diff --git a/src/stores/contracts.js b/src/stores/contracts.js
new file mode 100644
index 0000000..940ec16
--- /dev/null
+++ b/src/stores/contracts.js
@@ -0,0 +1,12 @@
+import { defineStore } from "pinia";
+export const useContractStore = defineStore("contracts", {
+ state: () => ({
+ list: {
+
+ }
+ }),
+ getters: {
+ },
+ actions: {
+ }
+});
diff --git a/src/stores/tokens.js b/src/stores/tokens.js
index f4c950d..1c4111e 100644
--- a/src/stores/tokens.js
+++ b/src/stores/tokens.js
@@ -1,6 +1,7 @@
import { defineStore } from "pinia";
import Web3 from "web3";
import { useWalletStore } from "./wallet";
+import { useContractStore } from "./contracts";
import Meme1Json from "@/assets/contracts/Meme1.json";
import Meme2Json from "@/assets/contracts/Meme2.json";
import MemeBurnerJson from "@/assets/contracts/MemeBurner.json";
@@ -411,8 +412,9 @@ export const useTokenStore = defineStore("token", {
abi: null,
balance: null,
contract: null,
- allowance: null
+ allowance: null,
},
+ loading: false,
memeBurner: {
config: MemeBurnerJson,
contract: null
@@ -440,23 +442,42 @@ export const useTokenStore = defineStore("token", {
},
async approveToken(amount) {
const walletStore = useWalletStore();
+ this.loading = true;
var approve = await this.contract.methods
.approve(this.memeBurner.config.contractAddress, amount)
- .send({ from: walletStore.address });
- console.log("approve", approve);
- console.log("this.contract", this.contract);
+ .send({ from: walletStore.address });
+ console.log("approve", approve);
+ this.loading = false;
+ return approve;
},
async sacrificeToken(amount) {
- 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, "400000000000000000")
- .call({ from: walletStore.address });
- console.log("reward", reward);
- },
- getTokenContract(token) {
+ try {
+ 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, "400000000000000000")
+ .send({ from: walletStore.address });
+ console.log("reward", reward);
+ } catch (error) {
+ error.log(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);
diff --git a/src/stores/wallet.js b/src/stores/wallet.js
index e8f1166..df929c6 100644
--- a/src/stores/wallet.js
+++ b/src/stores/wallet.js
@@ -15,17 +15,6 @@ export const useWalletStore = defineStore("wallet", {
increment() {
this.count++;
},
- async disconnectWallet() {
- // const permissions = await window.ethereum.request({
- // method: 'wallet_requestPermissions',
- // params: [{
- // eth_accounts: {},
- // }]
- // });
- // console.log("permissions", permissions);
- this.connected = false;
- this.address = null;
- },
connectWallet() {
console.log("window.ethereum", window.ethereum);
// if (window.ethereum) {
@@ -33,15 +22,16 @@ export const useWalletStore = defineStore("wallet", {
.request({ method: "eth_requestAccounts" })
.then((data) => {
console.log("data", data);
- 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)
- );
- }
+ 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) => {
@@ -62,23 +52,33 @@ export const useWalletStore = defineStore("wallet", {
},
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 {
- this.disconnectWallet();
console.log("Metamask is not connected");
+ this.connected = false;
}
} catch (error) {
console.log("error", error);
+ } finally {
+ this.loading = false;
}
}
diff --git a/src/utils/helper.js b/src/utils/helper.js
new file mode 100644
index 0000000..e316c01
--- /dev/null
+++ b/src/utils/helper.js
@@ -0,0 +1,22 @@
+
+export default class Helper {
+ static debounce(func, timeout = 300) {
+ let timer;
+ return (...args) => {
+ clearTimeout(timer);
+ timer = setTimeout(() => {
+ func.apply(this, args);
+ }, timeout);
+ };
+ }
+
+ static createDebounce() {
+ let timeout = null;
+ return function (fnc, delayMs) {
+ clearTimeout(timeout);
+ timeout = setTimeout(() => {
+ fnc();
+ }, delayMs || 500);
+ };
+ }
+}
diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue
index 0d10990..8f69b09 100644
--- a/src/views/HomeView.vue
+++ b/src/views/HomeView.vue
@@ -2,13 +2,17 @@
import { storeToRefs } from "pinia";
import SacrificeToken from "@/components/SacrificeToken.vue";
import BloodChart from "@/components/BloodChart.vue";
+import TokenClaim from "@/components/TokenClaim.vue";
// import Web3 from "web3";
-
// import { useWalletStore } from "@/stores/wallet";
import { useTokenStore } from "@/stores/tokens";
const tokenStore = useTokenStore();
const { token } = storeToRefs(tokenStore);
-
+import { Navigation } from "swiper";
+// Import Swiper Vue.js components
+import { Swiper, SwiperSlide } from "swiper/vue";
+import "swiper/css";
+import "swiper/css/navigation";
// let web3 = new Web3(
// "https://eth-goerli.g.alchemy.com/v2/0-W9tOm6v_QP1PfRV8RuBCpWr-qoEbkN"
// );
@@ -17,28 +21,37 @@ const { token } = storeToRefs(tokenStore);
-
+
+
+
+ Slide 1
+ Slide 2
+ Slide 3
+ Slide 4
+ Slide 5
+
+
-
-
Cycle 1
-
Join the eternal cycle of the vampire sacrifice and claim your rewards at each cycle's end.
-
-
-
-
-
-
-
-
-
-
-
+
+
Bloodline Clan
-
Become the most powerful clan in a cycle to receive extra rewards.
+
+ Win extra rewards for you and your clan. Increase the strength of your bloodline by
+ sacrificing more memes.
+
@@ -55,22 +68,41 @@ const { token } = storeToRefs(tokenStore);
-
+
- Tokenomics
- 100% clan owned. No team %, no pre-mine
-
+
+
Tokenomics
+
100% clan owned. No team %, no pre-mine
+

+