From 65411ad2ae0fa8fabb11a7a6d45f8a1277d45de8 Mon Sep 17 00:00:00 2001 From: Justin Edmund Date: Mon, 15 Sep 2025 04:03:52 -0700 Subject: [PATCH] Migrate teams route from [shortcode] to [id] --- src/routes/teams/[id]/+page.server.ts | 40 + src/routes/teams/[id]/+page.svelte | 15 + src/routes/teams/[shortcode]/+error.svelte | 21 - src/routes/teams/[shortcode]/+page.server.ts | 34 - src/routes/teams/[shortcode]/+page.svelte | 13 - src/routes/teams/new/+page.svelte | 746 +++++++++++++++++++ 6 files changed, 801 insertions(+), 68 deletions(-) create mode 100644 src/routes/teams/[id]/+page.server.ts create mode 100644 src/routes/teams/[id]/+page.svelte delete mode 100644 src/routes/teams/[shortcode]/+error.svelte delete mode 100644 src/routes/teams/[shortcode]/+page.server.ts delete mode 100644 src/routes/teams/[shortcode]/+page.svelte diff --git a/src/routes/teams/[id]/+page.server.ts b/src/routes/teams/[id]/+page.server.ts new file mode 100644 index 00000000..d16f0268 --- /dev/null +++ b/src/routes/teams/[id]/+page.server.ts @@ -0,0 +1,40 @@ +import type { PageServerLoad } from './$types' +import { PartyService } from '$lib/services/party.service' + +export const load: PageServerLoad = async ({ params, fetch, locals }) => { + console.log('[p/[id]/+page.server.ts] Loading with id:', params.id) + + // Get auth data directly from locals instead of parent() + const authUserId = locals.session?.account?.userId + + // Try to fetch party data on the server + const partyService = new PartyService(fetch) + + let partyFound = false + let party = null + let canEdit = false + + try { + // Fetch the party + party = await partyService.getByShortcode(params.id) + console.log('[p/[id]] Successfully fetched party on server:', party.id, party.name) + partyFound = true + + // Determine if user can edit + console.log('[p/[id]] Auth user ID:', authUserId) + console.log('[p/[id]] Party user ID:', party.user?.id) + console.log('[p/[id]] Party user:', party.user) + canEdit = authUserId ? party.user?.id === authUserId : false + console.log('[p/[id]] Can edit?', canEdit) + } catch (err) { + console.log('[p/[id]] Error fetching party (expected for test ids):', err) + } + + // Return party data with explicit serialization + return { + party: party ? structuredClone(party) : null, + canEdit: Boolean(canEdit), + partyFound, + authUserId: authUserId || null + } +} \ No newline at end of file diff --git a/src/routes/teams/[id]/+page.svelte b/src/routes/teams/[id]/+page.svelte new file mode 100644 index 00000000..11d0a995 --- /dev/null +++ b/src/routes/teams/[id]/+page.svelte @@ -0,0 +1,15 @@ + + +{#if data?.party} + +{:else} +
+

Party not found

+

No party data available for this code.

+
+{/if} diff --git a/src/routes/teams/[shortcode]/+error.svelte b/src/routes/teams/[shortcode]/+error.svelte deleted file mode 100644 index 6e46c7a2..00000000 --- a/src/routes/teams/[shortcode]/+error.svelte +++ /dev/null @@ -1,21 +0,0 @@ - - -
-

{status === 404 ? 'Team Not Found' : 'Something went wrong'}

-

- {status === 404 - ? 'We could not find a team with that code.' - : (error?.message || 'Please try again later.')} -

-
- - - diff --git a/src/routes/teams/[shortcode]/+page.server.ts b/src/routes/teams/[shortcode]/+page.server.ts deleted file mode 100644 index 4b007774..00000000 --- a/src/routes/teams/[shortcode]/+page.server.ts +++ /dev/null @@ -1,34 +0,0 @@ -import type { PageServerLoad } from './$types' -import { error } from '@sveltejs/kit' -import { PartyService } from '$lib/services/party.service' - -export const load: PageServerLoad = async ({ fetch, params, parent }) => { - const { shortcode } = params - const partyService = new PartyService(fetch) - - try { - const party = await partyService.getByShortcode(shortcode) - - const parentData = await parent() - const authUserId = (parentData as any)?.user?.id - - const canEditServer = partyService.computeEditability( - party, - authUserId, - undefined, - undefined - ) - - return { - party, - canEditServer: canEditServer.canEdit, - authUserId - } - } catch (err: any) { - console.error('Error loading party:', err) - if (err?.issues) console.error('Validation errors:', err.issues) - if (err.status === 404) throw error(404, 'Team not found') - throw error(err.status || 500, err.message || 'Failed to load team') - } -} - diff --git a/src/routes/teams/[shortcode]/+page.svelte b/src/routes/teams/[shortcode]/+page.svelte deleted file mode 100644 index 5ac5cc77..00000000 --- a/src/routes/teams/[shortcode]/+page.svelte +++ /dev/null @@ -1,13 +0,0 @@ - - - - diff --git a/src/routes/teams/new/+page.svelte b/src/routes/teams/new/+page.svelte index d107c24d..7cd602f4 100644 --- a/src/routes/teams/new/+page.svelte +++ b/src/routes/teams/new/+page.svelte @@ -1 +1,747 @@ + + + +
+
+
+
+
+

Create a new team

+

Search and click items to add them to your grid

+
+ +
+ + + +
+ {#if activeTab === 'weapons'} + + {:else if activeTab === 'summons'} + + {:else} + + {/if} +
+
+ + sidebarOpen = false} + onAddItems={handleAddItems} + canAddMore={canAddMore} + /> +
+
+ + + + + + + Error Creating Team + + {errorMessage} + + + {#if errorDetails.length > 0} +
+

Details:

+
    + {#each errorDetails as detail} +
  • {detail}
  • + {/each} +
+
+ {/if} + +
+ + OK + +
+
+
+
+ +