make dynamic

This commit is contained in:
Ayush Acharjya
2024-10-27 10:43:10 +00:00
parent 8c6c40bb66
commit 6caf7b36e2

View File

@@ -31,7 +31,7 @@ interface TicketDetails {
imageUrl: string; imageUrl: string;
} }
export default function ProfilePage() { export default function Component() {
const [isClient, setIsClient] = useState(false); const [isClient, setIsClient] = useState(false);
const [userTickets, setUserTickets] = useState<TicketDetails[]>([]); const [userTickets, setUserTickets] = useState<TicketDetails[]>([]);
const [userAddress, setUserAddress] = useState(''); const [userAddress, setUserAddress] = useState('');
@@ -97,25 +97,50 @@ export default function ProfilePage() {
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 (Array.isArray(ticketIds)) { if (!ticketIds || ticketIds.length === 0) {
const ticketDetailsPromises = ticketIds.map(async (ticketId) => { console.log('No tickets found for this user');
setUserTickets([]);
return;
}
const ticketDetailsPromises = ticketIds.map(
async (ticketId: ethers.BigNumber) => {
try {
const ticketNumber = ticketId.toNumber(); const ticketNumber = ticketId.toNumber();
// Simulate fetching event details with dummy data const ticket = await contract.tickets(ticketNumber);
const event = await contract.events(ticket.eventId);
// Convert event start date from Unix timestamp to JavaScript Date
const eventDate = new Date(event.eventStartDate.toNumber() * 1000);
const eventDetails: TicketDetails = { const eventDetails: TicketDetails = {
ticketId: ticketNumber, ticketId: ticketNumber,
eventName: `Event #${ticketNumber}`, eventName: event.name,
eventLocation: 'Location XYZ', eventLocation: event.location,
eventDate: '2023-12-01', eventDate: eventDate.toISOString().split('T')[0], // Format as YYYY-MM-DD
imageUrl: 'https://via.placeholder.com/150', imageUrl:
event.images && event.images.length > 0
? event.images[0]
: 'https://via.placeholder.com/150', // Use first image or placeholder
}; };
return eventDetails; return eventDetails;
}); } catch (error) {
console.error(
`Error fetching details for ticket ${ticketId}:`,
error
);
return null;
}
}
);
const details = await Promise.all(ticketDetailsPromises); const details = (await Promise.all(ticketDetailsPromises)).filter(
(detail): detail is TicketDetails => detail !== null
);
setUserTickets(details); setUserTickets(details);
} else {
console.error('Unexpected response from getUserTickets:', ticketIds); if (details.length === 0) {
setError('Unexpected response from contract. Please try again.'); 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);