+
diff --git a/src/routes/private/api/gmail/+server.ts b/src/routes/private/api/gmail/+server.ts
index 8cd7ce3..e0ab49a 100644
--- a/src/routes/private/api/gmail/+server.ts
+++ b/src/routes/private/api/gmail/+server.ts
@@ -36,13 +36,13 @@ export const GET: RequestHandler = async ({ url }) => {
/* ───────────── POST ───────────── */
export const POST: RequestHandler = async ({ request }) => {
- const { action, refreshToken, to, subject, text } = await request.json();
+ const { action, refreshToken, to, subject, text, qr_code } = await request.json();
/* send e-mail */
if (action === 'send') {
if (!refreshToken) return new Response('Missing token', { status: 401 });
try {
- await sendGmail(refreshToken, { to, subject, text });
+ await sendGmail(refreshToken, { to, subject, text, qr_code });
return json({ ok: true });
} catch (err) {
return new Response((err as Error).message, { status: 500 });
diff --git a/src/routes/private/creator/+page.server.ts b/src/routes/private/creator/+page.server.ts
index 6c5b7c0..869e800 100644
--- a/src/routes/private/creator/+page.server.ts
+++ b/src/routes/private/creator/+page.server.ts
@@ -4,8 +4,6 @@ import Papa from 'papaparse';
import { fail } from '@sveltejs/kit';
export async function load({ locals }) {
- console.log("▶️ fetching events…");
-
const { data: events, error } = await locals.supabase
.from('events')
.select('*')
@@ -23,8 +21,6 @@ export async function load({ locals }) {
export const actions = {
create: async (event) => {
const formData = await event.request.formData();
- console.log(Array.from(formData.entries()));
- console.log('create_event date', formData.get("date"), formData.get("name"), formData.get("description"));
let { data: new_event, error } = await event.locals.supabase.rpc("create_event",
{
"p_name": formData.get('name'),
@@ -51,8 +47,6 @@ export const actions = {
parsedRows.shift();
}
- console.log('Parsed rows:', parsedRows);
-
// Map each row to an object with keys: name, surname, email
const participants = parsedRows.map((row: string[]) => ({
name: row[0],
@@ -60,8 +54,6 @@ export const actions = {
email: row[2]
}));
- console.log('Mapped participants:', participants);
-
return {
participants,
}
diff --git a/src/routes/private/creator/+page.svelte b/src/routes/private/creator/+page.svelte
index af11e51..4c1f3b1 100644
--- a/src/routes/private/creator/+page.svelte
+++ b/src/routes/private/creator/+page.svelte
@@ -11,9 +11,9 @@
let participants = $state([]);
let subject = $state('');
let body = $state('');
+ let authorized = $state(false);
- // Update events and participants from the form data
- $effect( () => {
+ $effect(() => {
if (form && form.new_event) {
new_event = form.new_event;
}
@@ -31,36 +31,26 @@
StepOverview
];
- // State variable for current step
- let step = $state(0);
+ let step: number = $state(0);
+
+ let stepConditions = $derived([
+ authorized,
+ !!new_event?.name,
+ !!participants?.length,
+ !!subject && !!body
+ ]);
- // Helper to go to next/previous step (optional)
function nextStep() {
if (step < steps.length - 1) step += 1;
- console.log(step);
}
function prevStep() {
if (step > 0) step -= 1;
- console.log(step);
}
-
-{#if step == 0}
-
-{:else if step == 1}
-
-{:else if step == 2}
-
-{:else if step == 3}
-
-{:else if step == 4}
-
-{/if}
-
-
+
+
+{#if step == 0}
+
+{:else if step == 1}
+
+{:else if step == 2}
+
+{:else if step == 3}
+
+{:else if step == 4}
+
+{/if}
diff --git a/src/routes/private/creator/emailtest/+page.svelte b/src/routes/private/creator/emailtest/+page.svelte
new file mode 100644
index 0000000..b6cc634
--- /dev/null
+++ b/src/routes/private/creator/emailtest/+page.svelte
@@ -0,0 +1,110 @@
+
+
+
+
Test Email Sender
+ {#if !authorized}
+
+
Google not connected.
+
+ Connect Google
+
+
+ {:else}
+
+ {/if}
+ {#if error}
+
{error}
+ {/if}
+ {#if success}
+
{success}
+ {/if}
+
diff --git a/src/routes/private/creator/steps/StepConnectGoogle.svelte b/src/routes/private/creator/steps/StepConnectGoogle.svelte
index bc663c5..77d8f99 100644
--- a/src/routes/private/creator/steps/StepConnectGoogle.svelte
+++ b/src/routes/private/creator/steps/StepConnectGoogle.svelte
@@ -2,8 +2,10 @@
import { onMount } from 'svelte';
import { goto } from '$app/navigation';
+ export let authorized = false;
+
let refreshToken = '';
- let authorized = false;
+ let loading = true;
let to = '';
let subject = '';
@@ -22,30 +24,15 @@
}
onMount(async () => {
- console.log("on mount");
refreshToken = localStorage.getItem('gmail_refresh_token') ?? '';
+ loading = true;
authorized = await validateToken(refreshToken);
+ loading = false;
});
/* ⇢ redirects straight to Google via server 302 */
const connect = () => goto('/private/api/gmail?action=auth');
- async function sendEmail() {
- const r = await fetch('/private/api/gmail', {
- method: 'POST',
- headers: { 'Content-Type': 'application/json' },
- body: JSON.stringify({
- action: 'send',
- to,
- subject,
- text: body,
- refreshToken
- })
- });
- r.ok ? alert('Sent!') : alert(await r.text());
- to = subject = body = '';
- }
-
async function disconnect() {
if (!confirm('Disconnect Google account?')) return;
await fetch('/private/api/gmail', {
@@ -59,11 +46,30 @@
}
-{#if !authorized}
-
- You haven’t connected your Google account yet.
- Connect Google
-
-{:else}
- Your connection is good, proceed to next step
-{/if}
+
+ {#if loading}
+
+
+
Checking Google connection...
+
+ {:else}
+ {#if !authorized}
+
+ You haven’t connected your Google account yet.
+
+ Connect Google
+
+
+ {:else}
+
+
+
Your connection to Google is good, proceed to next step
+
+ {/if}
+ {/if}
+
diff --git a/src/routes/private/creator/steps/StepCraftEmail.svelte b/src/routes/private/creator/steps/StepCraftEmail.svelte
index 6e7956d..6f5da17 100644
--- a/src/routes/private/creator/steps/StepCraftEmail.svelte
+++ b/src/routes/private/creator/steps/StepCraftEmail.svelte
@@ -1,6 +1,6 @@
-{#if Object.keys(new_event).length > 0}
+{#if Object.keys(new_event).length === 0}
+
+ {#if loading}
+ Loading...
+ {:else}
+ No event created yet...
+ {/if}
+
+{:else}
- {new_event.name}
diff --git a/src/routes/private/creator/steps/StepOverview.svelte b/src/routes/private/creator/steps/StepOverview.svelte
index a0d5289..2f68806 100644
--- a/src/routes/private/creator/steps/StepOverview.svelte
+++ b/src/routes/private/creator/steps/StepOverview.svelte
@@ -1,35 +1,62 @@
-
-
Event Overview
-
- - Name: {new_event.name}
- - Date: {new_event.date}
- - Description: {new_event.description}
-
+
+
Event Overview
+
+ - Name: {new_event.name}
+ - Date: {new_event.date}
+ - Description: {new_event.description}
+
-
-
Email Preview
-
Subject: {subject}
-
+
+
Email Preview
+
Subject: {subject}
+
-
-
Participants ({participants.length})
-
- {#each participants as p}
- -
- {p.name} {p.surname}
- {p.email}
-
- {/each}
-
-
\ No newline at end of file
+
+
Participants ({participants.length})
+
+ {#each participants.slice(0, 10) as p}
+ -
+ {p.name} {p.surname}
+
+ {p.email}
+
+ {/each}
+
+
Note: Only the first 10 participants are shown.
+
+
+
+ Generate QR codes and send
+
+
+
+ {#if !stepConditions[0]}
+
Please provide an event name before proceeding.
+ {/if}
+ {#if !stepConditions[1]}
+
Please add at least one participant before proceeding.
+ {/if}
+ {#if !stepConditions[2]}
+
Please provide an email subject before proceeding.
+ {/if}
+ {#if !stepConditions[3]}
+
Please provide an email body before proceeding.
+ {/if}
+
diff --git a/src/routes/private/creator/steps/StepUploadFiles.svelte b/src/routes/private/creator/steps/StepUploadFiles.svelte
index 307fdec..9d5e0f1 100644
--- a/src/routes/private/creator/steps/StepUploadFiles.svelte
+++ b/src/routes/private/creator/steps/StepUploadFiles.svelte
@@ -2,11 +2,26 @@
import { enhance } from '$app/forms';
let { participants = [] } = $props();
+ let loading = $state(false);
+ function handleEnhance() {
+ loading = true;
+
+ return async ({ update }) => {
+ await update();
+ loading = false;
+ };
+ }
-
{#if participants.length === 0}
-
No participants added yet.
-{/if}
-
-{#if participants.length > 0}
-
+
+ {#if loading}
+ Loading...
+ {:else}
+ No participants yet...
+ {/if}
+
+{:else}
+
{#each participants as p, i}
-
{p.name} {p.surname}
-
{p.email}
+
{p.email}
{/each}
diff --git a/src/routes/private/scanner/+page.svelte b/src/routes/private/scanner/+page.svelte
index 3bf1679..53c3e42 100644
--- a/src/routes/private/scanner/+page.svelte
+++ b/src/routes/private/scanner/+page.svelte
@@ -12,7 +12,6 @@
$effect(() => {
if (scanned_id === "") return;
- console.log('New QR code found:', scanned_id);
scan_state = ScanState.scanning;
data.supabase