From c6067fb4ebe0446eadad8bfd75a45547f9073ae3 Mon Sep 17 00:00:00 2001 From: RcleydsonR Date: Tue, 27 Dec 2022 17:25:47 -0300 Subject: [PATCH] add withdraw deposit function --- src/components/ListingComponent.vue | 9 +++--- src/utils/blockchain.ts | 42 ++++++++++++++++++++++++--- src/views/ManageBidsView.vue | 44 ++++++++++++++++------------- 3 files changed, 67 insertions(+), 28 deletions(-) diff --git a/src/components/ListingComponent.vue b/src/components/ListingComponent.vue index c6d6ac6..5bfee8b 100644 --- a/src/components/ListingComponent.vue +++ b/src/components/ListingComponent.vue @@ -77,15 +77,16 @@ const emit = defineEmits(["cancelDeposit", "withdrawDeposit"]); :key="item?.blockNumber" > - {{ formatEventsAmount(item?.args.amount) }} BRZ + {{ formatEventsAmount(item?.args ? item?.args.amount : item?.remaining) }} BRZ - 20 out 2022 + + 20 out 2022
Cancelar Cancel image @@ -115,7 +116,7 @@ const emit = defineEmits(["cancelDeposit", "withdrawDeposit"]);
Retirar Cancel image diff --git a/src/utils/blockchain.ts b/src/utils/blockchain.ts index 91a943e..c7919c2 100644 --- a/src/utils/blockchain.ts +++ b/src/utils/blockchain.ts @@ -93,6 +93,25 @@ const listDepositTransactionByWalletAddress = async ( }); }; +// get wallet's deposit transactions +// const listValidDepositTransactionsByWalletAddress = async ( +// walletAddress: string +// ): Promise => { +// const provider = getProvider(); +// const etherStore = useEtherStore(); +// if (!provider) return []; + +// const signer = provider.getSigner(); +// const p2pContract = new ethers.Contract(addresses.p2pix, p2pix.abi, signer); + +// const filterDeposits = p2pContract.filters.DepositAdded([walletAddress]); +// const eventsDeposits = await p2pContract.queryFilter(filterDeposits); + +// console.log() + + +// }; + // get wallet's lock transactions const listLockTransactionByWalletAddress = async ( walletAddress: string @@ -155,10 +174,10 @@ const updateValidDeposits = async () => { remaining: formatBigNumber(mappedDeposit.remaining), seller: mappedDeposit.seller, pixKey: mappedDeposit.pixTarget, - valid: mappedDeposit.valid, }; - depositList.push(validDeposit); + if (mappedDeposit.valid) + depositList.push(validDeposit); }); etherStore.setDepositsValidList(depositList); @@ -275,7 +294,7 @@ const addDeposit = async (tokenQty: Number, pixKey: string) => { await updateValidDeposits(); }; -// cancel a deposit by ots Id +// cancel a deposit by its Id const cancelDeposit = async (depositId: BigNumber): Promise => { const provider = getProvider(); @@ -286,7 +305,21 @@ const cancelDeposit = async (depositId: BigNumber): Promise => { await contract.cancelDeposit(depositId); await updateWalletStatus(); - await updateDepositAddedEvents(); + await updateValidDeposits(); + return true; +}; + +// withdraw a deposit by its Id +const withdrawDeposit = async (depositId: BigNumber): Promise => { + const provider = getProvider(); + + if (!provider) return false; + + const signer = provider.getSigner(); + const contract = new ethers.Contract(addresses.p2pix, p2pix.abi, signer); + await contract.withdraw(depositId, []); + + await updateWalletStatus(); await updateValidDeposits(); return true; }; @@ -409,6 +442,7 @@ export default { listLockTransactionByWalletAddress, addDeposit, cancelDeposit, + withdrawDeposit, mapDeposits, formatBigNumber, addLock, diff --git a/src/views/ManageBidsView.vue b/src/views/ManageBidsView.vue index 8d16bf5..d1dcb2b 100644 --- a/src/views/ManageBidsView.vue +++ b/src/views/ManageBidsView.vue @@ -7,46 +7,50 @@ import type { BigNumber } from "ethers"; import { ref } from "vue"; const etherStore = useEtherStore(); -const { walletAddress } = storeToRefs(etherStore); +const { walletAddress, depositsValidList } = storeToRefs(etherStore); const depositList = ref([]); -if (walletAddress.value) { - await blockchain - .listDepositTransactionByWalletAddress(walletAddress.value) - .then((value) => (depositList.value = value)); +const listValidDepositTransactionsByWalletAddress = (walletAddress: string, deposits: any[]) => { + depositList.value = deposits.filter((deposit) => deposit.seller === walletAddress) } const handleCancelDeposit = async (depositID: BigNumber) => { - console.log(depositID); const response = await blockchain.cancelDeposit(depositID); if (response == true) console.log("Depósito cancelado com sucesso."); }; -etherStore.$subscribe(async (mutation, state) => { - if (mutation.events.key == "walletAddress") { - if (state.walletAddress) { - await blockchain - .listDepositTransactionByWalletAddress(state.walletAddress) - .then((value) => (depositList.value = value)); - } - } +const handleWithDrawDeposit = async (depositID: BigNumber) => { + const response = await blockchain.withdrawDeposit(depositID); + if (response == true) console.log("Token retirado com sucesso."); +}; + +if (walletAddress.value) { + listValidDepositTransactionsByWalletAddress(walletAddress.value, depositsValidList.value) +} + +etherStore.$subscribe((_mutation, state) => { + if(state.walletAddress != "") + listValidDepositTransactionsByWalletAddress(state.walletAddress, state.depositsValidList) });