mirror of
https://github.com/0xShay/ticketchain.git
synced 2026-01-11 13:13:25 +00:00
Merge pull request #60 from Ayush272002/profile
merge profile branch (approved by encode employee)
This commit is contained in:
@@ -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}`);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user