From c129e4a9051264941dc89912aee5d755ef20f7b5 Mon Sep 17 00:00:00 2001 From: brunoedcf Date: Thu, 16 Feb 2023 15:37:23 -0300 Subject: [PATCH] Fixing tags at listing component --- src/blockchain/buyerMethods.ts | 4 +- src/blockchain/wallet.ts | 62 ++++++++++++++++--- .../BuyConfirmedComponent.vue | 22 ------- .../ListingComponent/ListingComponent.vue | 36 +++++++---- src/model/WalletTransaction.ts | 10 +++ src/views/HomeView.vue | 25 +++++--- src/views/ManageBidsView.vue | 37 +++++++++-- 7 files changed, 138 insertions(+), 58 deletions(-) create mode 100644 src/model/WalletTransaction.ts diff --git a/src/blockchain/buyerMethods.ts b/src/blockchain/buyerMethods.ts index 883cb16..d44b38b 100644 --- a/src/blockchain/buyerMethods.ts +++ b/src/blockchain/buyerMethods.ts @@ -92,10 +92,8 @@ const withdrawDeposit = async (amount: string): Promise => { parseEther(String(amount)), [] ); - const with_rec = await withdraw.wait(); - const [t] = with_rec.events; + await withdraw.wait(); - console.log(t.args); return withdraw; }; diff --git a/src/blockchain/wallet.ts b/src/blockchain/wallet.ts index 828a5eb..3ac7577 100644 --- a/src/blockchain/wallet.ts +++ b/src/blockchain/wallet.ts @@ -5,10 +5,12 @@ import { getTokenAddress, possibleChains } from "./addresses"; import mockToken from "@/utils/smart_contract_files/MockToken.json"; -import { ethers, type Event } from "ethers"; +import { ethers, type Event, type BigNumber } from "ethers"; import { formatEther } from "ethers/lib/utils"; import { getValidDeposits } from "./events"; + import type { ValidDeposit } from "@/model/ValidDeposit"; +import type { WalletTransaction } from "@/model/WalletTransaction"; import type { UnreleasedLock } from "@/model/UnreleasedLock"; import type { Pix } from "@/model/Pix"; @@ -50,9 +52,45 @@ const listValidDepositTransactionsByWalletAddress = async ( return []; }; +const getLockStatus = async (id: [BigNumber]): Promise => { + const p2pContract = getContract(); + const res = await p2pContract.getLocksStatus([id]); + + return res[1][0]; +}; + +const filterLockStatus = async ( + transactions: Event[] +): Promise => { + const txs = []; + + for (const transaction of transactions) { + const tx: WalletTransaction = { + token: transaction.args?.token ? transaction.args?.token : "", + blockNumber: transaction.blockNumber ? transaction.blockNumber : -1, + amount: transaction.args?.amount + ? Number(formatEther(transaction.args?.amount)) + : -1, + seller: transaction.args?.seller ? transaction.args?.seller : "", + buyer: transaction.args?.buyer ? transaction.args?.buyer : "", + event: transaction.event ? transaction.event : "", + lockStatus: + transaction.event == "LockAdded" + ? await getLockStatus(transaction.args?.lockID) + : -1, + transactionHash: transaction.transactionHash + ? transaction.transactionHash + : "", + }; + txs.push(tx); + } + + return txs; +}; + const listAllTransactionByWalletAddress = async ( walletAddress: string -): Promise => { +): Promise => { const p2pContract = getContract(true); const filterDeposits = p2pContract.filters.DepositAdded([walletAddress]); @@ -73,14 +111,18 @@ const listAllTransactionByWalletAddress = async ( filterWithdrawnDeposits ); - return [ - ...eventsDeposits, - ...eventsAddedLocks, - ...eventsReleasedLocks, - ...eventsWithdrawnDeposits, - ].sort((a, b) => { - return b.blockNumber - a.blockNumber; - }); + const lockStatusFiltered = await filterLockStatus( + [ + ...eventsDeposits, + ...eventsAddedLocks, + ...eventsReleasedLocks, + ...eventsWithdrawnDeposits, + ].sort((a, b) => { + return b.blockNumber - a.blockNumber; + }) + ); + + return lockStatusFiltered; }; // get wallet's release transactions diff --git a/src/components/BuyConfirmedComponent/BuyConfirmedComponent.vue b/src/components/BuyConfirmedComponent/BuyConfirmedComponent.vue index 2c23ce3..db63dff 100644 --- a/src/components/BuyConfirmedComponent/BuyConfirmedComponent.vue +++ b/src/components/BuyConfirmedComponent/BuyConfirmedComponent.vue @@ -1,11 +1,8 @@