diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 084af10..a009208 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -1,4 +1,7 @@ GitHub Copilot Instructions for This Repository + +If you have any questions, always ask me first. + Use Svelte 5 runes exclusively Declare reactive state with $state(); derive values with $derived(); run side-effect logic with $effect() etc. diff --git a/src/routes/private/api/gmail/+server.ts b/src/routes/private/api/google/gmail/+server.ts similarity index 100% rename from src/routes/private/api/gmail/+server.ts rename to src/routes/private/api/google/gmail/+server.ts diff --git a/src/routes/private/events/event/view/+page.svelte b/src/routes/private/events/event/view/+page.svelte index 51fd7f2..b671f38 100644 --- a/src/routes/private/events/event/view/+page.svelte +++ b/src/routes/private/events/event/view/+page.svelte @@ -197,7 +197,7 @@ try { // Send all emails in batch - const response = await fetch('/private/api/gmail', { + const response = await fetch('/private/api/google/gmail', { method: 'POST', headers: { 'Content-Type': 'application/json' diff --git a/src/routes/private/scanner/+page.svelte b/src/routes/private/scanner/+page.svelte index 8220dab..36fad5f 100644 --- a/src/routes/private/scanner/+page.svelte +++ b/src/routes/private/scanner/+page.svelte @@ -7,21 +7,21 @@ import { ScanState, defaultTicketData } from '$lib/types/types'; let { data } = $props(); - let scanned_id = $state(""); + let scanned_id = $state(''); let ticket_data = $state(defaultTicketData); let scan_state = $state(ScanState.scanning); - + // Events related state interface Event { id: string; name: string; date: string; } - + let events = $state([]); - let selectedEventId = $state(""); + let selectedEventId = $state(''); let isLoadingEvents = $state(true); - let eventsError = $state(""); + let eventsError = $state(''); onMount(async () => { await loadEvents(); @@ -30,7 +30,7 @@ async function loadEvents() { isLoadingEvents = true; eventsError = ''; - + try { const { data: eventsData, error } = await data.supabase .from('events') @@ -39,7 +39,7 @@ if (error) throw error; events = eventsData || []; - + // If there are events, select the first one by default if (events.length > 0) { selectedEventId = events[0].id; @@ -54,20 +54,20 @@ // Process a scanned QR code $effect(() => { - if (scanned_id === "") return; + if (scanned_id === '') return; scan_state = ScanState.scanning; - console.log("Scanned ID:", scanned_id); + console.log('Scanned ID:', scanned_id); data.supabase .from('participants') .select(`*, event ( id, name ), scanned_by ( id, display_name )`) .eq('id', scanned_id) - .then(response => { + .then((response) => { if (response.data && response.data.length > 0) { const participant = response.data[0]; ticket_data = participant; - + // Check if the participant belongs to the selected event if (selectedEventId && participant.event.id !== selectedEventId) { scan_state = ScanState.wrong_event; @@ -81,73 +81,52 @@ ticket_data = defaultTicketData; scan_state = ScanState.scan_failed; } - + // Reset the scanned_id after 3 seconds to allow for a new scan setTimeout(() => { - scanned_id = ""; + scanned_id = ''; }, 3000); }); }); -
-

Code Scanner

+

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} -
- + +
+

Select Event

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

No events found

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

Ticket Information

+