diff --git a/src/app.css b/src/app.css index 091543c..c61135e 100644 --- a/src/app.css +++ b/src/app.css @@ -3,13 +3,4 @@ scale: 2; } -html, -body { - height: 100%; - margin: 0; - overflow: hidden; /* Prevent scrolling */ -} - -#svelte { - height: 100%; -} +@custom-variant dark (&:where(.dark, .dark *)); diff --git a/src/lib/state.svelte.ts b/src/lib/state.svelte.ts index 7983a18..80830af 100644 --- a/src/lib/state.svelte.ts +++ b/src/lib/state.svelte.ts @@ -5,8 +5,16 @@ export const userState = $state<{ rpc: XRPC | undefined; agent: OAuthUserAgent | undefined; did: string | undefined; + handle: string | undefined; }>({ rpc: undefined, agent: undefined, - did: undefined + did: undefined, + handle: undefined +}); + +export const style = $state<{ + theme: 'light' | 'dark'; +}>({ + theme: 'light' }); diff --git a/src/lib/util.ts b/src/lib/util.ts index d01563a..a3fc47c 100644 --- a/src/lib/util.ts +++ b/src/lib/util.ts @@ -28,15 +28,21 @@ async function resolvePDS(did: string) { return pds; } -export async function resolveHandle(handle: string) { +export async function resolveDID(handle: string) { if (!handle.includes('.')) { throw new Error(`Invalid DID: ${handle}`); } return await handleResolver.resolve(handle as `${string}.${string}`); } +export async function resolveHandle(did: string) { + const data = await didDocumentResolver.resolve(did as `did:plc:${string}` | `did:web:${string}`); + + return await (data.alsoKnownAs?.[0] ?? null); +} + export async function createRPC(did: string) { - if (!did.startsWith('did:')) did = await resolveHandle(did); + if (!did.startsWith('did:')) did = await resolveDID(did); const pds = await resolvePDS(did); if (!pds) { diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index ffbbfbe..4637702 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -10,7 +10,7 @@ resolveFromIdentity } from '@atcute/oauth-browser-client'; - import { userState } from '$lib/state.svelte'; + import { style, userState } from '$lib/state.svelte'; import { config } from '$lib/util'; import { onMount } from 'svelte'; @@ -51,6 +51,15 @@ userState.did = undefined; } + async function toggleTheme() { + if (style.theme === 'dark') { + style.theme = 'light'; + } else { + style.theme = 'dark'; + } + document.getElementById('theme')?.setAttribute('class', style.theme); + } + onMount(async () => { console.log('mounted'); config(); @@ -71,27 +80,43 @@ // } else { // console.log('userState.rpc is undefined'); // } - console.log(userState); }); - + + +
+
+ {@render children()} +
diff --git a/src/routes/callback/+page.svelte b/src/routes/callback/+page.svelte index 2a6dfa0..bcd741a 100644 --- a/src/routes/callback/+page.svelte +++ b/src/routes/callback/+page.svelte @@ -1,7 +1,7 @@