adding filter for valid deposits

This commit is contained in:
Bruno 2022-12-16 01:19:08 -03:00
parent a1c27c3da6
commit c4b74309cc
5 changed files with 76 additions and 32 deletions

View File

@ -9,7 +9,7 @@ import blockchain from "../utils/blockchain";
// Store reference // Store reference
const etherStore = useEtherStore(); const etherStore = useEtherStore();
const { walletAddress, depositsAddedList } = storeToRefs(etherStore); const { walletAddress, depositsValidList } = storeToRefs(etherStore);
// Reactive state // Reactive state
const tokenValue = ref(0); const tokenValue = ref(0);
@ -59,14 +59,13 @@ const verifyLiquidity = () => {
selectedDeposit.value = null; selectedDeposit.value = null;
if (!walletAddress.value || tokenValue.value <= 0) return; if (!walletAddress.value || tokenValue.value <= 0) return;
depositsAddedList.value.find((element) => { depositsValidList.value.find((element) => {
const p2pixTokenValue = Number( const remaining = element.remaining;
blockchain.formatBigNumber(element.args.amount)
);
if ( if (
tokenValue.value!! <= p2pixTokenValue && element.valid == true &&
tokenValue.value!! <= remaining &&
tokenValue.value!! != 0 && tokenValue.value!! != 0 &&
element.args.seller !== walletAddress.value element.seller !== walletAddress.value
) { ) {
enableSelectButton.value = true; enableSelectButton.value = true;
hasLiquidity.value = true; hasLiquidity.value = true;

View File

@ -24,9 +24,9 @@ const formatWalletAddress = (): string => {
return `${initialText}...${finalText}`; return `${initialText}...${finalText}`;
}; };
const formatWalletBalance = (): string => { const formatWalletBalance = (): String => {
const fixed = balance.value.substring(0, 8); const fixed = Number(balance.value);
return fixed; return fixed.toFixed(2);
}; };
</script> </script>

View File

@ -132,6 +132,38 @@ const listReleaseTransactionByWalletAddress = async (
}; };
// Update events at store methods // Update events at store methods
const updateValidDeposits = async () => {
const etherStore = useEtherStore();
const window_ = window as any;
const connection = window_.ethereum;
let provider: ethers.providers.Web3Provider | null = null;
if (!connection) return;
provider = new ethers.providers.Web3Provider(connection);
const signer = provider.getSigner();
const p2pContract = new ethers.Contract(addresses.p2pix, p2pix.abi, signer);
const filterDeposits = p2pContract.filters.DepositAdded(null);
const eventsDeposits = await p2pContract.queryFilter(filterDeposits);
const depositList = [] as any[];
eventsDeposits.forEach(async (deposit) => {
const mappedDeposit = await mapDeposits(deposit.args?.depositID);
const validDeposit = {
depositID: deposit.args?.depositID,
remaining: formatBigNumber(mappedDeposit.remaining),
seller: mappedDeposit.seller,
pixKey: mappedDeposit.pixTarget,
valid: mappedDeposit.valid,
};
depositList.push(validDeposit);
});
etherStore.setDepositsValidList(depositList);
};
const updateDepositAddedEvents = async () => { const updateDepositAddedEvents = async () => {
const etherStore = useEtherStore(); const etherStore = useEtherStore();
const window_ = window as any; const window_ = window as any;
@ -192,9 +224,10 @@ const connectProvider = async () => {
await updateDepositAddedEvents(); await updateDepositAddedEvents();
await updateLockAddedEvents(); await updateLockAddedEvents();
await updateLockReleasedEvents(); await updateLockReleasedEvents();
await updateValidDeposits();
connection.on("accountsChanged", () => { connection.on("accountsChanged", async () => {
updateWalletStatus(); await updateWalletStatus();
}); });
}; };
@ -209,7 +242,7 @@ const getProvider = (): ethers.providers.Web3Provider | null => {
// Deposit methods // Deposit methods
// Gets value and pix key from user's form to create a deposit in the blockchain // Gets value and pix key from user's form to create a deposit in the blockchain
const addDeposit = async (tokenQty: string, pixKey: string) => { const addDeposit = async (tokenQty: Number, pixKey: string) => {
const provider = getProvider(); const provider = getProvider();
if (!provider) return; if (!provider) return;
@ -225,20 +258,21 @@ const addDeposit = async (tokenQty: string, pixKey: string) => {
// First get the approval // First get the approval
const apprv = await tokenContract.approve( const apprv = await tokenContract.approve(
addresses.p2pix, addresses.p2pix,
formatEther(tokenQty) formatEther(String(tokenQty))
); );
await apprv.wait(); await apprv.wait();
// Now we make the deposit // Now we make the deposit
const deposit = await p2pContract.deposit( const deposit = await p2pContract.deposit(
addresses.token, addresses.token,
formatEther(tokenQty), formatEther(String(tokenQty)),
pixKey pixKey
); );
await deposit.wait(); await deposit.wait();
updateWalletStatus(); await updateWalletStatus();
updateDepositAddedEvents(); await updateDepositAddedEvents();
await updateValidDeposits();
}; };
// Get specific deposit data by its ID // Get specific deposit data by its ID
@ -278,6 +312,7 @@ const addLock = async (depositId: BigNumber, amount: Number) => {
while (etherStore.locksAddedList.length === oldEventsLen) { while (etherStore.locksAddedList.length === oldEventsLen) {
await updateLockAddedEvents(); await updateLockAddedEvents();
await updateValidDeposits();
} }
return lock; return lock;
@ -331,6 +366,7 @@ const releaseLock = async (
); );
release.wait(); release.wait();
await updateLockReleasedEvents(); await updateLockReleasedEvents();
await updateValidDeposits();
return release; return release;
}; };
@ -362,4 +398,5 @@ export default {
mapLocks, mapLocks,
releaseLock, releaseLock,
updateLockAddedEvents, updateLockAddedEvents,
updateValidDeposits,
}; };

View File

@ -28,14 +28,10 @@ const lastWalletReleaseTransactions = ref<any[] | undefined>([]);
const confirmBuyClick = async ({ selectedDeposit, tokenValue }: any) => { const confirmBuyClick = async ({ selectedDeposit, tokenValue }: any) => {
// finish buy screen // finish buy screen
let depositDetail; const depositDetail = selectedDeposit;
// depositId is BigNumber type object const depositId = selectedDeposit.depositID;
const depositId = selectedDeposit["args"]["depositID"]; pixTarget.value = selectedDeposit.pixKey;
await blockchain
.mapDeposits(depositId)
.then((deposit) => (depositDetail = deposit));
tokenAmount.value = tokenValue; tokenAmount.value = tokenValue;
pixTarget.value = String(depositDetail?.pixTarget);
// Makes lock with deposit ID and the Amount // Makes lock with deposit ID and the Amount
if (depositDetail) { if (depositDetail) {
@ -59,20 +55,20 @@ const releaseTransaction = async ({ e2eId }: any) => {
flowStep.value = Step.List; flowStep.value = Step.List;
loadingRelease.value = true; loadingRelease.value = true;
const findLockId = locksAddedList.value.find((element) => { const findLock = locksAddedList.value.find((element) => {
if (element.transactionHash === lockTransactionHash.value) { if (element.transactionHash === lockTransactionHash.value) {
lockId.value = element.args.lockID; // BigNumber type lockId.value = element.args.lockID;
return true; return true;
} }
return false; return false;
}); });
if (findLockId) { if (findLock && tokenAmount.value) {
const release = await blockchain.releaseLock( const release = await blockchain.releaseLock(
pixTarget.value, // String pixTarget.value,
tokenAmount.value ?? 0, // Number tokenAmount.value,
e2eId, // String e2eId,
lockId.value // String lockId.value
); );
release.wait(); release.wait();

View File

@ -7,6 +7,7 @@ import blockchain from "../utils/blockchain";
// Blockchain Data // Blockchain Data
const etherStore = useEtherStore(); const etherStore = useEtherStore();
const { depositsValidList } = storeToRefs(etherStore);
const { depositsAddedList } = storeToRefs(etherStore); const { depositsAddedList } = storeToRefs(etherStore);
const { locksAddedList } = storeToRefs(etherStore); const { locksAddedList } = storeToRefs(etherStore);
@ -35,7 +36,7 @@ const formatWalletAddress = (wallet: string): string => {
// Gets value and pix key from user's form to create a deposit in the blockchain // Gets value and pix key from user's form to create a deposit in the blockchain
const mockDeposit = () => { const mockDeposit = () => {
if (!depositValue.value || !depositPixKey.value) return; if (!depositValue.value || !depositPixKey.value) return;
blockchain.addDeposit(depositValue.value.toString(), depositPixKey.value); blockchain.addDeposit(depositValue.value, depositPixKey.value);
}; };
// Get specific deposit data by its ID // Get specific deposit data by its ID
@ -102,6 +103,17 @@ const mapLock = (lockId: string) => {
MRBZ: {{ blockchain.formatBigNumber(lock.args.amount) }} MRBZ: {{ blockchain.formatBigNumber(lock.args.amount) }}
</li> </li>
</ul> </ul>
<ul class="flex flex-col justify-center items-center gap-4">
<li
class="text-gray-900 font-semibold text-lg cursor-pointer border-2 border-amber-400 p-2 rounded-md bg-amber-200"
v-for="valid in depositsValidList"
:key="valid.depositID"
@click="mapDeposit(valid.depositID)"
>
Buyer:<br />{{ formatWalletAddress(valid.seller) }}<br />
MRBZ: {{ valid.remaining }}
</li>
</ul>
</div> </div>
</template> </template>