From af22543ec84780ffca002c249ffe4212facb4d58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Kr=C4=8Dek?= Date: Tue, 8 Jul 2025 16:35:27 +0200 Subject: [PATCH] Fix QR code generation, new scanner styling and ability to choose events. --- src/lib/types/types.ts | 6 +- src/routes/private/api/gmail/+server.ts | 13 +- .../private/events/event/view/+page.svelte | 2 - src/routes/private/scanner/+page.svelte | 141 ++++++++++++++++-- src/routes/private/scanner/QRScanner.svelte | 2 +- .../private/scanner/TicketDisplay.svelte | 79 ++++++---- 6 files changed, 191 insertions(+), 52 deletions(-) diff --git a/src/lib/types/types.ts b/src/lib/types/types.ts index 36fb4ed..c93af06 100644 --- a/src/lib/types/types.ts +++ b/src/lib/types/types.ts @@ -1,7 +1,9 @@ export enum ScanState { scanning, scan_successful, - scan_failed + already_scanned, + scan_failed, + wrong_event } export type TicketData = { @@ -22,7 +24,7 @@ export const defaultTicketData: TicketData = { name: '', surname: '', email: '', - event: '', + event: { id: '', name: '' }, created_at: new Date().toISOString(), created_by: null, scanned: false, diff --git a/src/routes/private/api/gmail/+server.ts b/src/routes/private/api/gmail/+server.ts index c34fec7..eea6c9b 100644 --- a/src/routes/private/api/gmail/+server.ts +++ b/src/routes/private/api/gmail/+server.ts @@ -16,15 +16,8 @@ interface EmailResult { error?: string; } -async function generateQRCode(participant: Participant, eventId: string): Promise { - const qrCodeData = JSON.stringify({ - participantId: participant.id, - eventId: eventId, - name: participant.name, - surname: participant.surname - }); - - const qrCodeBase64 = await QRCode.toDataURL(qrCodeData, { +async function generateQRCode(participantId: string): Promise { + const qrCodeBase64 = await QRCode.toDataURL(participantId, { type: 'image/png', margin: 2, scale: 8 @@ -43,7 +36,7 @@ async function sendEmailToParticipant( supabase: any ): Promise { try { - const qrCodeBase64Data = await generateQRCode(participant, eventId); + const qrCodeBase64Data = await generateQRCode(participant.id); // Send email with QR code await sendGmail(refreshToken, { diff --git a/src/routes/private/events/event/view/+page.svelte b/src/routes/private/events/event/view/+page.svelte index 4a96ac9..97ce1e3 100644 --- a/src/routes/private/events/event/view/+page.svelte +++ b/src/routes/private/events/event/view/+page.svelte @@ -162,8 +162,6 @@ p_emails: emails }); - console.log(syncError); - if (syncError) throw syncError; // Reload participants diff --git a/src/routes/private/scanner/+page.svelte b/src/routes/private/scanner/+page.svelte index 0a098ca..8220dab 100644 --- a/src/routes/private/scanner/+page.svelte +++ b/src/routes/private/scanner/+page.svelte @@ -1,6 +1,7 @@ - +
+

Code Scanner

- + +
+

Select Event

+ {#if isLoadingEvents} +
+
+
+ {:else if eventsError} +
+ {eventsError} + +
+ {:else if events.length === 0} +

No events found

+ {:else} + + {/if} +
+ + +
+ +
+ + +

Ticket Information

+ + + + {#if scan_state !== ScanState.scanning} +
+ +
+ {/if} +
diff --git a/src/routes/private/scanner/QRScanner.svelte b/src/routes/private/scanner/QRScanner.svelte index d8a520f..fe8cd90 100644 --- a/src/routes/private/scanner/QRScanner.svelte +++ b/src/routes/private/scanner/QRScanner.svelte @@ -45,7 +45,7 @@ }); -
+