adding filter for valid deposits
This commit is contained in:
parent
a1c27c3da6
commit
c4b74309cc
@ -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;
|
||||||
|
@ -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>
|
||||||
|
|
||||||
|
@ -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,
|
||||||
};
|
};
|
||||||
|
@ -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();
|
||||||
|
|
||||||
|
@ -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>
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user