From 6e723aadf6de45a79b4ef64d288ea275628232c5 Mon Sep 17 00:00:00 2001 From: mat Date: Thu, 15 Dec 2022 14:59:56 -0600 Subject: start updating to sveltekit v1 --- src/routes/items/+page.svelte | 216 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 216 insertions(+) create mode 100644 src/routes/items/+page.svelte (limited to 'src/routes/items/+page.svelte') diff --git a/src/routes/items/+page.svelte b/src/routes/items/+page.svelte new file mode 100644 index 0000000..82b3ee3 --- /dev/null +++ b/src/routes/items/+page.svelte @@ -0,0 +1,216 @@ + + + + + +
+ + + +
+ +

SkyBlock Item List

+

{filteredItems.length.toLocaleString()} items

+
+ + + + + + + +
+
+ {#each filteredItemsSliced as item (item.id)} +
+ +

+ {item.display.name} +

+
+ {#if item.museum} +

+ Museum +

+ {/if} + {#if item.soulbound} +

+ Soulbound +

+ {/if} + {#if item.category} +

+ Category: + + {toTitleCase(cleanId(item.category))} + +

+ {/if} + {#if item.npcSellPrice} +

+ NPC sell price: + + {#if item.npcSellPrice == 1}1 coin{:else} + {item.npcSellPrice.toLocaleString()} coins{/if} + +

+ {/if} + {#if Object.keys(item.requirements).length > 0} +
+ Requirements: +
    + {#if item.requirements.dungeon} +
  • + {cleanId(item.requirements.dungeon.type)} + {item.requirements.dungeon.level} +
  • + {/if} + {#if item.requirements.skill} +
  • + {cleanId(item.requirements.skill.type)} + {item.requirements.skill.level} +
  • + {/if} + {#if item.requirements.slayer} +
  • + {cleanId(item.requirements.slayer.boss)} + Slayer + {item.requirements.slayer.level} +
  • + {/if} +
+
+ {/if} +
+
+ {/each} + {#if filteredItems.length === 0} + No results! + {/if} +
+
+ + -- cgit From 925ad2bfff17f8d9381731fb0050936dcd7e0a72 Mon Sep 17 00:00:00 2001 From: mat Date: Thu, 15 Dec 2022 18:14:46 -0600 Subject: finish migrating to sveltekit v1 hopefully --- src/app.d.ts | 8 +- src/hooks.server.ts | 7 + src/hooks.ts | 25 --- src/lib/LoginButton.svelte | 2 +- src/lib/MayorSkin.svelte | 21 ++- src/routes/+page.server.ts | 7 + src/routes/+page.ts | 7 - src/routes/[player=username]/+page.ts | 11 +- src/routes/auctionprices/+page.ts | 4 +- src/routes/election/+page.svelte | 17 -- src/routes/election/+page.ts | 8 + src/routes/items/+page.svelte | 15 -- src/routes/items/+page.ts | 6 + src/routes/leaderboard/+page.ts | 8 +- src/routes/leaderboard/[name]/+page.ts | 8 +- src/routes/leaderboards/+page.ts | 4 +- src/routes/leaderboards/[name]/+page.ts | 13 +- src/routes/loggedin/+page.ts | 37 ----- src/routes/loggedin/+server.ts | 30 ++++ src/routes/login/+page.ts | 36 ----- src/routes/login/+server.ts | 18 +++ src/routes/logout/+page.ts | 28 ---- src/routes/logout/+server.ts | 23 +++ src/routes/player/+page.server.ts | 8 +- src/routes/player/[player]/+page.ts | 11 +- src/routes/player/[player]/[profile]/+page.ts | 16 +- src/routes/profile/+page.server.ts | 7 + src/routes/profile/+page.svelte | 180 +++++++++++++++++++++ src/routes/profile/+page.ts | 44 ++++++ src/routes/profile/index.svelte | 219 -------------------------- src/routes/profile/update.ts | 126 --------------- src/routes/profile/update/+server.ts | 95 +++++++++++ src/routes/verify/+page.server.ts | 116 +++++++------- src/routes/verify/+page.svelte | 25 +-- src/routes/verify/+page.ts | 13 ++ 35 files changed, 549 insertions(+), 654 deletions(-) create mode 100644 src/hooks.server.ts delete mode 100644 src/hooks.ts create mode 100644 src/routes/+page.server.ts delete mode 100644 src/routes/+page.ts create mode 100644 src/routes/election/+page.ts create mode 100644 src/routes/items/+page.ts delete mode 100644 src/routes/loggedin/+page.ts create mode 100644 src/routes/loggedin/+server.ts delete mode 100644 src/routes/login/+page.ts create mode 100644 src/routes/login/+server.ts delete mode 100644 src/routes/logout/+page.ts create mode 100644 src/routes/logout/+server.ts create mode 100644 src/routes/profile/+page.server.ts create mode 100644 src/routes/profile/+page.svelte create mode 100644 src/routes/profile/+page.ts delete mode 100644 src/routes/profile/index.svelte delete mode 100644 src/routes/profile/update.ts create mode 100644 src/routes/profile/update/+server.ts create mode 100644 src/routes/verify/+page.ts (limited to 'src/routes/items/+page.svelte') diff --git a/src/app.d.ts b/src/app.d.ts index b41fa6f..9f4467d 100644 --- a/src/app.d.ts +++ b/src/app.d.ts @@ -3,10 +3,13 @@ // // See https://kit.svelte.dev/docs/typescript // // for information about these interfaces declare namespace App { + // interface Error { } + interface Locals { sid: string | undefined } + // interface PageData { } interface Platform { env: { @@ -18,9 +21,4 @@ declare namespace App { } } - interface Session { - sid: string | undefined - } - - // interface Stuff {} } diff --git a/src/hooks.server.ts b/src/hooks.server.ts new file mode 100644 index 0000000..0d2087b --- /dev/null +++ b/src/hooks.server.ts @@ -0,0 +1,7 @@ +import type { Handle } from '@sveltejs/kit' + +export const handle = (async ({ event, resolve }) => { + event.locals.sid = event.cookies.get('sid') + const response = await resolve(event) + return response +}) satisfies Handle \ No newline at end of file diff --git a/src/hooks.ts b/src/hooks.ts deleted file mode 100644 index 457e8ae..0000000 --- a/src/hooks.ts +++ /dev/null @@ -1,25 +0,0 @@ -import cookie from 'cookie' -import type { Handle } from '@sveltejs/kit' - - -export const handle: Handle = async ({ event, resolve }) => { - const cookies = cookie.parse(event.request.headers.get('cookie') || '') - - event.locals.sid = cookies.sid - - const response = await resolve(event) - - return response -} - -export const getSession: GetSession = async ({ locals }) => { - return { - sid: locals.sid - } -} - -// export const externalFetch: ExternalFetch = async (request) => { -// const response = await fetch(request) - -// return response -// } \ No newline at end of file diff --git a/src/lib/LoginButton.svelte b/src/lib/LoginButton.svelte index bba078e..7ebf5d7 100644 --- a/src/lib/LoginButton.svelte +++ b/src/lib/LoginButton.svelte @@ -6,7 +6,7 @@ {#if loggedIn} {:else} - + diff --git a/src/lib/MayorSkin.svelte b/src/lib/MayorSkin.svelte index ad0a9a8..2360fab 100644 --- a/src/lib/MayorSkin.svelte +++ b/src/lib/MayorSkin.svelte @@ -23,14 +23,21 @@ faith: '64b39d0756b92b8b7599d1f971580088954e21c5f60c673d0d4f63693fb002b5', } - let url: string + let url: string | undefined $: { if (name.toLowerCase() === 'derpy') url = '/villager.png' - else url = `https://mc-heads.net/body/${skinIds[name.toLowerCase()]}` + else { + const skinId = skinIds[name.toLowerCase()] + url = skinId ? `https://mc-heads.net/body/${skinId}` : undefined + } } -Mayor {toTitleCase(name)} +{#if url} + Mayor {toTitleCase(name)} +{:else} +
Unknown mayor
+{/if} diff --git a/src/routes/+page.server.ts b/src/routes/+page.server.ts new file mode 100644 index 0000000..4596c1b --- /dev/null +++ b/src/routes/+page.server.ts @@ -0,0 +1,7 @@ +import type { ServerLoad } from '@sveltejs/kit' + +export const load = (({ locals }) => { + return { + loggedIn: locals.sid !== undefined, + } +}) satisfies ServerLoad diff --git a/src/routes/+page.ts b/src/routes/+page.ts deleted file mode 100644 index cd45f69..0000000 --- a/src/routes/+page.ts +++ /dev/null @@ -1,7 +0,0 @@ -import type { PageData } from './$types' - -export const load = (({ session }) => { - return { - loggedIn: session.sid !== undefined, - } -}) satisfies PageData diff --git a/src/routes/[player=username]/+page.ts b/src/routes/[player=username]/+page.ts index c846929..289cd48 100644 --- a/src/routes/[player=username]/+page.ts +++ b/src/routes/[player=username]/+page.ts @@ -1,11 +1,6 @@ +import { redirect } from '@sveltejs/kit' import type { PageLoad } from './$types' - -export const get = (({ params }) => { - return { - status: 303, - headers: { - location: `/player/${params.player}` - } - } +export const load = (({ params }) => { + throw redirect(303, `/player/${params.player}`) }) satisfies PageLoad \ No newline at end of file diff --git a/src/routes/auctionprices/+page.ts b/src/routes/auctionprices/+page.ts index 8166a3c..31af8e3 100644 --- a/src/routes/auctionprices/+page.ts +++ b/src/routes/auctionprices/+page.ts @@ -1,4 +1,4 @@ -import type { PageData } from './$types' +import type { PageLoad } from './$types' import { fetchApi } from '$lib/api' export const load = (async ({ fetch }) => { @@ -10,4 +10,4 @@ export const load = (async ({ fetch }) => { prices, items, } -}) satisfies PageData +}) satisfies PageLoad diff --git a/src/routes/election/+page.svelte b/src/routes/election/+page.svelte index 1754655..dc4719e 100644 --- a/src/routes/election/+page.svelte +++ b/src/routes/election/+page.svelte @@ -1,20 +1,3 @@ - - - + + +
+ +
+ {#if session && session._id} + + {/if} +

Customize Profile

+ + +

+ {#if error} + {error} + {:else if loading} + Loading... + {/if} +

+ + View profile +

+ + +

+

+ + +

+ {#if isDonator} + + + + +

Windows: win+.

+

Mobile: Emoji keyboard

+
+ +
+ {/if} +

Background

+
+ {#each backgroundNames as thisBackgroundName} + (backgroundName = thisBackgroundName)} + on:keypress={e => { + if (e.key === 'Enter') { + backgroundName = thisBackgroundName + } + }} + /> + {/each} +
+
+ + diff --git a/src/routes/profile/+page.ts b/src/routes/profile/+page.ts new file mode 100644 index 0000000..cdd2a93 --- /dev/null +++ b/src/routes/profile/+page.ts @@ -0,0 +1,44 @@ +import { fetchApi } from '$lib/api' +import type { AccountSchema, SessionSchema } from '$lib/APITypes' +import donators from '../../_donators.json' +import admins from '../../_admins.json' +import type { PageLoad } from './$types' +import { redirect } from '@sveltejs/kit' + +export const load = (async ({ fetch, data }) => { + const sessionResponse: { session: SessionSchema | null; account: AccountSchema | null } | null = + await fetchApi(`accounts/session`, fetch, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + uuid: data.sid, + }), + }).then(r => r.json()) + + const playerResponse = sessionResponse?.account + ? await fetchApi(`player/${sessionResponse.account.minecraftUuid}`, fetch).then(r => r.json()) + : null + + // redirect to /login if the user is not logged in + if ( + !sessionResponse || + !sessionResponse.account || + !sessionResponse.session || + !playerResponse.player + ) { + throw redirect(303, '/login') + } + + const isDonator = + donators.find(d => d?.uuid === sessionResponse.account?.minecraftUuid) !== undefined + const isAdmin = admins.find(a => a === sessionResponse.account?.minecraftUuid) !== undefined + + return { + session: sessionResponse.session, + account: sessionResponse.account, + player: playerResponse, + isDonator: isDonator || isAdmin, + } +}) as PageLoad diff --git a/src/routes/profile/index.svelte b/src/routes/profile/index.svelte deleted file mode 100644 index 0d5ad04..0000000 --- a/src/routes/profile/index.svelte +++ /dev/null @@ -1,219 +0,0 @@ - - - - - -
- -
- {#if session && session._id} - - {/if} -

Customize Profile

- - -

- {#if error} - {error} - {:else if loading} - Loading... - {/if} -

- - View profile -

- - -

-

- - -

- {#if isDonator} - - - - -

Windows: win+.

-

Mobile: Emoji keyboard

-
- -
- {/if} -

Background

-
- {#each backgroundNames as thisBackgroundName} - (backgroundName = thisBackgroundName)} - /> - {/each} -
-
- - diff --git a/src/routes/profile/update.ts b/src/routes/profile/update.ts deleted file mode 100644 index 168cba8..0000000 --- a/src/routes/profile/update.ts +++ /dev/null @@ -1,126 +0,0 @@ -import { fetchApi } from '$lib/api' -import type { AccountSchema, SessionSchema } from '$lib/APITypes' -import type { RequestHandler } from '@sveltejs/kit' -import backgroundFileNames from '../../_backgrounds.json' -import donators from '../../_donators.json' -import admins from '../../_admins.json' -import type { JSONValue } from '@sveltejs/kit/types/internal' -import env from '$lib/env' - -const emojiRegex = /^(\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])$/ - -function isValidEmoji(emoji: string) { - const match = emojiRegex.exec(emoji) - return match && match[0] === emoji && match.index === 0 -} - - -export const patch: RequestHandler = async ({ request, locals, platform }) => { - if (locals.sid === undefined) { - return { - body: { ok: false, error: 'You are not logged in.' }, - status: 401, - } - } - const key = env(platform).SKYBLOCK_STATS_API_KEY - if (!key) { - return { - body: { ok: false, error: 'The SKYBLOCK_STATS_API_KEY environment variable is not set.' }, - status: 500, - } - } - const data = await request.json() - - const sessionResponse: { session: SessionSchema | null, account: AccountSchema | null } = await fetchApi(`accounts/session`, fetch, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ - uuid: locals.sid, - }), - }).then(r => r.json()) - if (!sessionResponse.session || !sessionResponse.account?.minecraftUuid) - return { - body: { ok: false, error: 'Invalid session.' }, - status: 401, - } - - const backgroundName = data.backgroundName - const pack = data.pack - const blurBackground = data.blurBackground - const emoji = data.emoji - - const isDonator = donators.find(d => d.uuid === sessionResponse.account?.minecraftUuid) !== undefined - const isAdmin = admins.includes(sessionResponse.account?.minecraftUuid) - - if (typeof backgroundName !== 'undefined' && typeof backgroundName !== 'string') { - return { - body: { ok: false, error: 'Invalid background.' }, - status: 400, - } - } - if (typeof pack !== 'string') { - return { - body: { ok: false, error: 'Invalid pack.' }, - status: 400, - } - } - if (typeof blurBackground !== 'boolean') { - return { - body: { ok: false, error: 'Invalid blurBackground.' }, - status: 400, - } - } - if (typeof emoji !== 'undefined' && typeof emoji !== 'string') { - return { - body: { ok: false, error: 'Invalid emoji.' }, - status: 400, - } - } - - // prevent people from putting non-existent backgrounds - if (backgroundName && !backgroundFileNames.includes(backgroundName)) - return { - body: { ok: false, error: 'Invalid background.' }, - status: 400, - } - const backgroundUrl = backgroundName ? `/backgrounds/${backgroundName}` : undefined - - if (emoji) { - if (!isDonator && !isAdmin) - return { - body: { ok: false, error: 'You are not allowed to use emojis.' }, - status: 401, - } - if (!isValidEmoji(emoji)) - return { - body: { ok: false, error: 'Invalid emoji.' }, - status: 400, - } - } - - const updatedAccount: AccountSchema = { - discordId: sessionResponse.account.discordId, - customization: { - backgroundUrl, - pack, - blurBackground, - emoji, - }, - } - - const response = await fetchApi(`accounts/update`, fetch, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - key: key - }, - body: JSON.stringify(updatedAccount), - }).then(r => r.json()) - - - return { - body: { ok: true } as JSONValue, - } -} \ No newline at end of file diff --git a/src/routes/profile/update/+server.ts b/src/routes/profile/update/+server.ts new file mode 100644 index 0000000..7190fb8 --- /dev/null +++ b/src/routes/profile/update/+server.ts @@ -0,0 +1,95 @@ +import { fetchApi } from '$lib/api' +import type { AccountSchema, SessionSchema } from '$lib/APITypes' +import backgroundFileNames from '../../../_backgrounds.json' +import donators from '../../../_donators.json' +import admins from '../../../_admins.json' +import env from '$lib/env' +import type { PageServerLoad } from '../$types' +import { error, json } from '@sveltejs/kit' + +const emojiRegex = /^(\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])$/ + +function isValidEmoji(emoji: string) { + const match = emojiRegex.exec(emoji) + return match && match[0] === emoji && match.index === 0 +} + + +export const PATCH = (async ({ request, locals, platform }) => { + if (locals.sid === undefined) { + throw error(401, 'You are not logged in.') + } + const key = env(platform).SKYBLOCK_STATS_API_KEY + if (!key) { + throw error(500, 'The SKYBLOCK_STATS_API_KEY environment variable is not set.') + } + const data = await request.json() + + const sessionResponse: { session: SessionSchema | null, account: AccountSchema | null } = await fetchApi(`accounts/session`, fetch, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + uuid: locals.sid, + }), + }).then(r => r.json()) + if (!sessionResponse.session || !sessionResponse.account?.minecraftUuid) + throw error(401, 'Invalid session.') + + const backgroundName = data.backgroundName + const pack = data.pack + const blurBackground = data.blurBackground + const emoji = data.emoji + + const isDonator = donators.find(d => d.uuid === sessionResponse.account?.minecraftUuid) !== undefined + const isAdmin = admins.includes(sessionResponse.account?.minecraftUuid) + + if (typeof backgroundName !== 'undefined' && typeof backgroundName !== 'string') { + throw error(400, 'Invalid background.') + } + if (typeof pack !== 'string') { + throw error(400, 'Invalid pack.') + } + if (typeof blurBackground !== 'boolean') { + throw error(400, 'Invalid blurBackground.') + } + if (typeof emoji !== 'undefined' && typeof emoji !== 'string') { + throw error(400, 'Invalid emoji.') + } + + // prevent people from putting non-existent backgrounds + if (backgroundName && !backgroundFileNames.includes(backgroundName)) + throw error(400, 'Invalid background.') + const backgroundUrl = backgroundName ? `/backgrounds/${backgroundName}` : undefined + + if (emoji) { + if (!isDonator && !isAdmin) + throw error(401, 'You are not allowed to use emojis.') + if (!isValidEmoji(emoji)) + throw error(400, 'Invalid emoji.') + } + + const updatedAccount: AccountSchema = { + discordId: sessionResponse.account.discordId, + customization: { + backgroundUrl, + pack, + blurBackground, + emoji, + }, + } + + const response = await fetchApi(`accounts/update`, fetch, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + key: key + }, + body: JSON.stringify(updatedAccount), + }).then(r => r.json()) + console.log(response) + + + return json({ ok: true }) +}) satisfies PageServerLoad \ No newline at end of file diff --git a/src/routes/verify/+page.server.ts b/src/routes/verify/+page.server.ts index 3321164..bd3ea7f 100644 --- a/src/routes/verify/+page.server.ts +++ b/src/routes/verify/+page.server.ts @@ -1,75 +1,75 @@ import { fetchApi } from '$lib/api' import type { AccountSchema, CleanUser, SessionSchema } from '$lib/APITypes' -import type { RequestHandler } from '@sveltejs/kit' +import { redirect, type RequestHandler, type ServerLoad } from '@sveltejs/kit' import env from '$lib/env' +import type { Actions } from './$types' -function redirect(status: number, location: string) { - return { - status, - headers: { - location, - }, - } -} +export const actions: Actions = { + default: async ({ platform, locals, request }) => { + const key = env(platform).SKYBLOCK_STATS_API_KEY + if (!key) { + throw redirect(303, `/verify?error=NO_KEY`) + } + if (locals.sid === undefined) { + throw redirect(303, '/login') + } -export const post: RequestHandler = async ({ request, locals, platform }) => { - const key = env(platform).SKYBLOCK_STATS_API_KEY - if (!key) { - return redirect(303, `/verify?error=NO_KEY`) - } - if (locals.sid === undefined) { - return redirect(303, '/login') - } + const form = await request.formData() - const form = await request.formData() + // username or uuid + const playerIdentifier = form.get('ign') + if (!playerIdentifier) { + throw redirect(303, `/verify?error=NO_IGN`) + } - // username or uuid - const playerIdentifier = form.get('ign') - if (!playerIdentifier) { - return redirect(303, `/verify?error=NO_IGN`) - } + const playerResponse: CleanUser = await fetchApi(`player/${playerIdentifier}`, fetch).then(res => res.json()) + const sessionResponse: { session: SessionSchema | null, account: AccountSchema | null } = await fetchApi(`accounts/session`, fetch, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + uuid: locals.sid, + }), + }).then(r => r.json()) - const playerResponse: CleanUser = await fetchApi(`player/${playerIdentifier}`, fetch).then(res => res.json()) - const sessionResponse: { session: SessionSchema | null, account: AccountSchema | null } = await fetchApi(`accounts/session`, fetch, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ - uuid: locals.sid, - }), - }).then(r => r.json()) + if (!sessionResponse.session) + throw redirect(303, '/login') - if (!sessionResponse.session) - return redirect(303, '/login') + const hypixelDiscordName = playerResponse.player?.socials.discord - const hypixelDiscordName = playerResponse.player?.socials.discord + if (!hypixelDiscordName) + throw redirect(303, `/verify?error=NOT_LINKED`) - if (!hypixelDiscordName) - return redirect(303, `/verify?error=NOT_LINKED`) + const discordUser = sessionResponse.session.discord_user + const actualDiscordName = discordUser.name + // some people link themselves as # instead of # + const actualDiscordIdDiscrim = `${discordUser.id}#${discordUser.name.split('#')[1]}` - const discordUser = sessionResponse.session.discord_user - const actualDiscordName = discordUser.name - // some people link themselves as # instead of # - const actualDiscordIdDiscrim = `${discordUser.id}#${discordUser.name.split('#')[1]}` + if (!(hypixelDiscordName === actualDiscordName || hypixelDiscordName === actualDiscordIdDiscrim)) + throw redirect(303, `/verify?error=WRONG_NAME¤t=${encodeURIComponent(hypixelDiscordName)}&correct=${encodeURIComponent(actualDiscordName)}`) - if (!(hypixelDiscordName === actualDiscordName || hypixelDiscordName === actualDiscordIdDiscrim)) - return redirect(303, `/verify?error=WRONG_NAME¤t=${encodeURIComponent(hypixelDiscordName)}&correct=${encodeURIComponent(actualDiscordName)}`) + const updatedAccount: AccountSchema = { + discordId: sessionResponse.session.discord_user.id, + minecraftUuid: playerResponse.player?.uuid + } - const updatedAccount: AccountSchema = { - discordId: sessionResponse.session.discord_user.id, - minecraftUuid: playerResponse.player?.uuid - } + await fetchApi(`accounts/update`, fetch, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + key: key + }, + body: JSON.stringify(updatedAccount), + }).then(r => r.json()) - await fetchApi(`accounts/update`, fetch, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - key: key - }, - body: JSON.stringify(updatedAccount), - }).then(r => r.json()) + throw redirect(303, '/profile') + } +} - return redirect(303, '/profile') -} \ No newline at end of file +export const load = (({ locals }) => { + return { + sid: locals.sid + } +}) satisfies ServerLoad diff --git a/src/routes/verify/+page.svelte b/src/routes/verify/+page.svelte index 20de403..4edc50d 100644 --- a/src/routes/verify/+page.svelte +++ b/src/routes/verify/+page.svelte @@ -1,27 +1,14 @@ - -