add num tickets

This commit is contained in:
Ayush Acharjya
2024-10-27 00:07:26 +01:00
parent 8cf40b0f5d
commit aa5d92b9dd
3 changed files with 34 additions and 23 deletions

View File

@@ -17,6 +17,7 @@ type ToastFunction = (options: {
export const buyHandler = async (
eventId: number,
numTickets: number,
toast: ToastFunction
): Promise<void> => {
if (eventId < 0) {
@@ -24,6 +25,14 @@ export const buyHandler = async (
return;
}
if (numTickets <= 0) {
toast({
title: 'Please select at least one ticket.',
variant: 'destructive',
});
return;
}
try {
if (typeof window.ethereum === 'undefined') {
toast({
@@ -38,11 +47,11 @@ export const buyHandler = async (
const signer = provider.getSigner();
const contract = getContract().connect(signer);
let ticketCost = await contract.getEventPriceFlare(eventId);
ticketCost = ticketCost.mul(105).div(100);
const balance = await provider.getBalance(await signer.getAddress());
const singleTicketCost = await contract.getEventPriceFlare(eventId);
const totalTicketCost = singleTicketCost.mul(numTickets).mul(105).div(100);
if (balance.lt(ticketCost)) {
const balance = await provider.getBalance(await signer.getAddress());
if (balance.lt(totalTicketCost)) {
toast({
title: 'Insufficient balance to cover ticket cost and gas fees.',
variant: 'destructive',
@@ -50,14 +59,14 @@ export const buyHandler = async (
return;
}
const tx = await contract.buyTicket(eventId, { value: ticketCost });
const tx = await contract.buyTicket(eventId, { value: totalTicketCost });
const receipt = await tx.wait();
toast({
title: `Ticket purchased successfully! Transaction Hash: ${receipt.transactionHash}`,
title: `Tickets purchased successfully! Transaction Hash: ${receipt.transactionHash}`,
});
} catch (error) {
console.error('Error buying ticket:', error);
console.error('Error buying tickets:', error);
toast({
title: 'Transaction failed. Please try again.',
variant: 'destructive',