Merge pull request #60 from Ayush272002/profile

merge profile branch (approved by encode employee)
This commit is contained in:
Ayush Acharjya
2024-10-27 11:12:33 +00:00
committed by GitHub

View File

@@ -79,72 +79,49 @@ export default function Component() {
}; };
const fetchUserTickets = async (address: string) => { const fetchUserTickets = async (address: string) => {
if (!RPC_URL || !CONTRACT_ADDRESS) {
setError('Missing configuration. Please contact support.');
return;
}
try { try {
const provider = new ethers.providers.JsonRpcProvider(RPC_URL); const provider = new ethers.providers.JsonRpcProvider(RPC_URL);
const contract = new ethers.Contract( const contract = new ethers.Contract(
CONTRACT_ADDRESS, CONTRACT_ADDRESS!,
EventManagerABI, EventManagerABI,
provider provider
); );
console.log('Fetching tickets for address:', address);
const ticketIds = await contract.getUserTickets(address); const ticketIds = await contract.getUserTickets(address);
console.log('Raw tickets data:', ticketIds); console.log('Raw tickets data:', ticketIds);
if (!ticketIds || ticketIds.length === 0) {
console.log('No tickets found for this user');
setUserTickets([]);
return;
}
const ticketDetailsPromises = ticketIds.map( const ticketDetailsPromises = ticketIds.map(
async (ticketId: ethers.BigNumber) => { async (ticketId: ethers.BigNumber) => {
try { const ticketNumber = ticketId.toNumber();
const ticketNumber = ticketId.toNumber(); const ticket = await contract.tickets(ticketNumber);
const ticket = await contract.tickets(ticketNumber); const event = await contract.events(ticket.eventId);
const event = await contract.events(ticket.eventId);
// Convert event start date from Unix timestamp to JavaScript Date console.log(`Ticket ${ticketNumber} data:`, ticket);
const eventDate = new Date(event.eventStartDate.toNumber() * 1000); console.log(`Event ${ticket.eventId} data:`, event);
const eventDetails: TicketDetails = { // Process event data to ensure it has all necessary fields
ticketId: ticketNumber, const eventDate = new Date(event.eventStartDate.toNumber() * 1000);
eventName: event.name, return {
eventLocation: event.location, ticketId: ticketNumber,
eventDate: eventDate.toISOString().split('T')[0], // Format as YYYY-MM-DD eventName: event.name || 'Unnamed Event',
imageUrl: eventLocation: event.location || 'No location specified',
event.images && event.images.length > 0 eventDate: eventDate.toISOString().split('T')[0],
? event.images[0] imageUrl:
: 'https://via.placeholder.com/150', // Use first image or placeholder event.images && event.images.length > 0
}; ? event.images[0]
return eventDetails; : 'https://via.placeholder.com/150',
} catch (error) { };
console.error(
`Error fetching details for ticket ${ticketId}:`,
error
);
return null;
}
} }
); );
const details = (await Promise.all(ticketDetailsPromises)).filter( const details = (await Promise.all(ticketDetailsPromises)).filter(
(detail): detail is TicketDetails => detail !== null Boolean
); );
setUserTickets(details); setUserTickets(details);
if (details.length === 0) {
setError('Failed to fetch ticket details. Please try again.');
}
} catch (error) { } catch (error) {
console.error('Failed to fetch user tickets:', error); console.error('Failed to fetch user tickets:', error);
setError(`Failed to fetch user tickets: ${(error as Error).message}`); // @ts-ignore
setError(`Failed to fetch user tickets: ${error.message}`);
} }
}; };