diff --git a/ceremony/src/lib/components/Install.svelte b/ceremony/src/lib/components/Install.svelte index 2c631250f2..0142408dd8 100644 --- a/ceremony/src/lib/components/Install.svelte +++ b/ceremony/src/lib/components/Install.svelte @@ -12,9 +12,9 @@ const copy = () => {

Install client

- + - + $ diff --git a/ceremony/src/lib/supabase/index.ts b/ceremony/src/lib/supabase/index.ts index 60709bec3d..a78daefb57 100644 --- a/ceremony/src/lib/supabase/index.ts +++ b/ceremony/src/lib/supabase/index.ts @@ -2,10 +2,32 @@ import { user } from "$lib/stores/user.svelte.ts" import { getContribution, getContributor, + getQueueCount, getSubmittedContribution, getUserQueuePosition } from "$lib/supabase/queries.ts" import type { ContributionStatus } from "$lib/supabase/types.ts" +import { supabase } from "$lib/supabase/client.ts" + +export const callJoinQueue = async (codeId: string) => { + const userId = user.session?.user.id + if (!userId) { + throw new Error("User is not logged in") + } + + try { + const { data, error } = await supabase.rpc("join_queue", { code_id: codeId }) + + if (error) { + console.error("Error calling join_queue:", error) + return + } + + console.log("Successfully joined queue:", data) + } catch (error) { + console.error("Unexpected error:", error) + } +} export const getUserQueueInfo = async () => { const userId = user.session?.user.id @@ -13,7 +35,8 @@ export const getUserQueueInfo = async () => { throw new Error("User is not logged in") } - const { data, count, error } = await getUserQueuePosition(userId) + const { data, error } = await getUserQueuePosition(userId) + const { count, error: countError } = await getQueueCount() if (error) { console.error("Error getting user queue position:", error) diff --git a/ceremony/src/lib/supabase/queries.ts b/ceremony/src/lib/supabase/queries.ts index 40d2e986bd..2bcd9c5ba8 100644 --- a/ceremony/src/lib/supabase/queries.ts +++ b/ceremony/src/lib/supabase/queries.ts @@ -34,11 +34,7 @@ export const getContribution = async (userId: string) => { } export const getUserQueuePosition = async (userId: string) => { - const { data, error, count } = await supabase - .from("current_queue") - .select("*", { count: "exact" }) - .eq("id", userId) - .single() + const { data, error } = await supabase.from("current_queue").select("*").eq("id", userId).single() if (error) { if (error.code === "PGRST116") { @@ -48,7 +44,7 @@ export const getUserQueuePosition = async (userId: string) => { return { data: undefined, error } } - return { data, count, error: undefined } + return { data, error: undefined } } export const getQueueCount = async () => { diff --git a/ceremony/src/routes/+layout.svelte b/ceremony/src/routes/+layout.svelte index fddec4a7c5..1c92247467 100644 --- a/ceremony/src/routes/+layout.svelte +++ b/ceremony/src/routes/+layout.svelte @@ -63,7 +63,7 @@ onMount(() => { } app - .load("https://draft.spline.design/r6WgY2-52aHVU2TZ/scene.splinecode") + .load("https://prod.spline.design/6An57q5Kr37gF2k0/scene.splinecode") .then(splineScene => { loading = false }) @@ -93,7 +93,7 @@ const queryClient = new QueryClient() diff --git a/ceremony/src/routes/app/+page.svelte b/ceremony/src/routes/app/+page.svelte index ab940adadd..e8ab2dbd49 100644 --- a/ceremony/src/routes/app/+page.svelte +++ b/ceremony/src/routes/app/+page.svelte @@ -6,7 +6,6 @@ import Spinner from "$lib/components/Spinner.svelte" import { reactiveQueryArgs } from "$lib/utils/utils.svelte.ts" import H2 from "$lib/components/typography/H2.svelte" import { checkContributionStatus, getUserQueueInfo } from "$lib/supabase" -import Button from "$lib/components/Button.svelte" import { checkStatus, start } from "$lib/client" import Install from "$lib/components/Install.svelte" @@ -46,18 +45,19 @@ let { } = $derived($contributionQuery) let { data: client, isLoading: clientLoading, error: clientError } = $derived($clientQuery) -//TODO SAVE IN LOCAL STORAGE AND ADD INFO TEXT ABOUT HAVING THE BROWSER OPEN -let auto = $state(false) - +// this calls contribute every query now, we can add a check so if downloading, uploading or contributing we stop it. +// but the client will return 503 if you try after it started. +// handle empty contribution and after expire $effect(() => { - if (auto) { - if (contribute?.canContribute && contribute?.shouldContribute) { - if (client) { - start() - } - } + if (contribute?.canContribute && contribute?.shouldContribute && client) { + start() } }) + +window.addEventListener("beforeunload", (e: BeforeUnloadEvent) => { + e.preventDefault() + e.returnValue = "" +}) @@ -65,33 +65,25 @@ $effect(() => { USER: {user?.session?.user.email} - - {#if queueLoading} - {:else if queue.inQueue} + {:else if queue?.inQueue}

You are in queue

- Position: {queue.position}/{queue.count + 1} + Position: {queue?.position}/{queue?.count} - {:else if contribute?.canContribute && contribute?.shouldContribute} + {:else if !contribute?.canContribute && !contribute?.shouldContribute} {#if clientError} Client connected? - + {:else if clientLoading} {:else if client} {client.status} - {:else} Waiting for client... {/if} - Auto contribute {:else if contribute?.isVerifying} @@ -103,4 +95,4 @@ $effect(() => { {/if} -
+ \ No newline at end of file