mirror of
https://github.com/0xShay/ticketchain.git
synced 2026-01-11 05:03:26 +00:00
😤 Add fetchEventDetails script
This commit is contained in:
78
lib/fetchEventDetails.ts
Normal file
78
lib/fetchEventDetails.ts
Normal file
@@ -0,0 +1,78 @@
|
||||
import { ethers } from 'ethers';
|
||||
import { getContract } from './ethers';
|
||||
|
||||
interface GetEventDetailsProps {
|
||||
eventID: number;
|
||||
toast: ToastFunction;
|
||||
}
|
||||
|
||||
type ToastFunction = (options: {
|
||||
title: string;
|
||||
variant?: 'default' | 'destructive' | null | undefined;
|
||||
}) => void;
|
||||
|
||||
declare global {
|
||||
interface Window {
|
||||
ethereumProvider?: ethers.providers.ExternalProvider & {
|
||||
isMetaMask?: boolean;
|
||||
request?: (method: string, params?: unknown[]) => Promise<unknown>;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
export const fetchEventDetails = async ({
|
||||
eventID,
|
||||
toast,
|
||||
}: GetEventDetailsProps) => {
|
||||
try {
|
||||
console.log('Starting events call');
|
||||
if (typeof window.ethereum === 'undefined') {
|
||||
console.error('Ethereum provider not found');
|
||||
toast({
|
||||
title: 'Please install MetaMask or another Ethereum wallet',
|
||||
variant: 'destructive',
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
console.log('Connecting to Ethereum provider');
|
||||
const provider = new ethers.providers.Web3Provider(window.ethereum);
|
||||
const contract = getContract();
|
||||
|
||||
console.log('Requesting data');
|
||||
const eventData = await contract.callStatic.events(eventID);
|
||||
const eventImages = await contract.callStatic.getEventImages(eventID);
|
||||
console.log(eventData);
|
||||
|
||||
// toast({
|
||||
// title: `Data fetched successfully!`,
|
||||
// });
|
||||
|
||||
return {
|
||||
EventID: eventID,
|
||||
name: eventData.name,
|
||||
date: eventData.eventStartDate.toNumber(),
|
||||
location: eventData.location,
|
||||
ticketPrice: eventData.ticketPrice.div(ethers.BigNumber.from("1000000000000000000")).toNumber() / 100,
|
||||
description: eventData.description,
|
||||
capacity: eventData.capacity.toNumber(),
|
||||
ticketsSold: eventData.ticketsSold.toNumber(),
|
||||
imageUrl: eventImages,
|
||||
host: eventData.eventHost
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Error in createEvent:', error);
|
||||
// if (error instanceof Error) {
|
||||
// toast({
|
||||
// title: `Transaction failed: ${error.message}`,
|
||||
// variant: 'destructive',
|
||||
// });
|
||||
// } else {
|
||||
// toast({
|
||||
// title: 'Transaction failed. Please try again.',
|
||||
// variant: 'destructive',
|
||||
// });
|
||||
// }
|
||||
throw error;
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user