diff --git a/src/params/handle.ts b/src/params/handle.ts index 9fdb684..40d458b 100644 --- a/src/params/handle.ts +++ b/src/params/handle.ts @@ -1,5 +1,6 @@ +import { isActorIdentifier } from '@atcute/lexicons/syntax'; import type { ParamMatcher } from '@sveltejs/kit'; export const match = ((param: string) => { - return param.includes('.') || param.startsWith('did:'); + return isActorIdentifier(param); }) satisfies ParamMatcher; diff --git a/src/routes/[handle=handle]/[[page]]/+layout.server.ts b/src/routes/[handle=handle]/(pages)/+layout.server.ts similarity index 100% rename from src/routes/[handle=handle]/[[page]]/+layout.server.ts rename to src/routes/[handle=handle]/(pages)/+layout.server.ts diff --git a/src/routes/[handle=handle]/[[page]]/+page.svelte b/src/routes/[handle=handle]/(pages)/+page.svelte similarity index 100% rename from src/routes/[handle=handle]/[[page]]/+page.svelte rename to src/routes/[handle=handle]/(pages)/+page.svelte diff --git a/src/routes/[handle=handle]/[[page]]/edit/+page.svelte b/src/routes/[handle=handle]/(pages)/edit/+page.svelte similarity index 100% rename from src/routes/[handle=handle]/[[page]]/edit/+page.svelte rename to src/routes/[handle=handle]/(pages)/edit/+page.svelte diff --git a/src/routes/[handle=handle]/(pages)/p/[[page]]/+page.svelte b/src/routes/[handle=handle]/(pages)/p/[[page]]/+page.svelte new file mode 100644 index 0000000..3419d88 --- /dev/null +++ b/src/routes/[handle=handle]/(pages)/p/[[page]]/+page.svelte @@ -0,0 +1,13 @@ + + + diff --git a/src/routes/[handle=handle]/[[page]]/copy/+page.svelte b/src/routes/[handle=handle]/(pages)/p/[[page]]/copy/+page.svelte similarity index 100% rename from src/routes/[handle=handle]/[[page]]/copy/+page.svelte rename to src/routes/[handle=handle]/(pages)/p/[[page]]/copy/+page.svelte diff --git a/src/routes/[handle=handle]/(pages)/p/[[page]]/edit/+page.svelte b/src/routes/[handle=handle]/(pages)/p/[[page]]/edit/+page.svelte new file mode 100644 index 0000000..e57bf31 --- /dev/null +++ b/src/routes/[handle=handle]/(pages)/p/[[page]]/edit/+page.svelte @@ -0,0 +1,6 @@ + + + diff --git a/src/routes/p/[[page]]/+layout.server.ts b/src/routes/p/[[page]]/+layout.server.ts new file mode 100644 index 0000000..faca3a0 --- /dev/null +++ b/src/routes/p/[[page]]/+layout.server.ts @@ -0,0 +1,25 @@ +import { loadData } from '$lib/website/load'; +import { env } from '$env/dynamic/public'; +import type { UserCache } from '$lib/types'; +import type { Did, Handle } from '@atcute/lexicons'; + +export async function load({ params, platform, request }) { + const cache = platform?.env?.USER_DATA_CACHE as unknown; + + const handle = env.PUBLIC_HANDLE; + + const kv = platform?.env?.CUSTOM_DOMAINS; + + const customDomain = request.headers.get('X-Custom-Domain')?.toLocaleLowerCase(); + + if (kv && customDomain) { + try { + const did = await kv.get(customDomain); + return await loadData(did as Did, cache as UserCache, false, params.page); + } catch { + console.error('failed'); + } + } + + return await loadData(handle as Handle, cache as UserCache, false, params.page); +} diff --git a/src/routes/p/[[page]]/+page.svelte b/src/routes/p/[[page]]/+page.svelte new file mode 100644 index 0000000..3419d88 --- /dev/null +++ b/src/routes/p/[[page]]/+page.svelte @@ -0,0 +1,13 @@ + + + diff --git a/src/routes/p/[[page]]/copy/+page.svelte b/src/routes/p/[[page]]/copy/+page.svelte new file mode 100644 index 0000000..b456d15 --- /dev/null +++ b/src/routes/p/[[page]]/copy/+page.svelte @@ -0,0 +1,252 @@ + + +
+
+ {#if user.isLoggedIn} +

Copy Page

+ +
+
+ Source Page +
+
+ {sourceHandle}/{sourcePage || 'main'} +
+

{sourceCards.length} cards

+
+ +
+ + +
+ + {#if error} +
+ {error} +
+ {/if} + + {#if success} +
+ Page copied successfully! Redirecting... +
+ {/if} + +
+ + Cancel + + +
+ {:else} +

+ You must be signed in to copy a page! +

+ +
+ +
+ {/if} +
+
diff --git a/src/routes/p/[[page]]/edit/+page.svelte b/src/routes/p/[[page]]/edit/+page.svelte new file mode 100644 index 0000000..e57bf31 --- /dev/null +++ b/src/routes/p/[[page]]/edit/+page.svelte @@ -0,0 +1,6 @@ + + +