tangled
alpha
login
or
join now
flo-bit.dev
/
blento
your personal website on atproto - mirror
blento.app
20
fork
atom
overview
issues
pulls
pipelines
manage handle not found
jycouet
2 weeks ago
c1b45b9a
a30b2b5d
+22
-5
3 changed files
expand all
collapse all
unified
split
src
lib
atproto
methods.ts
website
EditableWebsite.svelte
routes
+layout.svelte
+7
-2
src/lib/atproto/methods.ts
···
10
10
} from '@atcute/identity-resolver';
11
11
import { Client, simpleFetchHandler } from '@atcute/client';
12
12
import type { AppBskyActorDefs } from '@atcute/bluesky';
13
13
+
import { redirect } from '@sveltejs/kit';
13
14
14
15
export type Collection = `${string}.${string}.${string}`;
15
16
···
30
31
}
31
32
});
32
33
33
33
-
const data = await handleResolver.resolve(handle);
34
34
-
return data;
34
34
+
try {
35
35
+
const data = await handleResolver.resolve(handle);
36
36
+
return data;
37
37
+
} catch (error) {
38
38
+
redirect(307, '/?error=handle_not_found&handle=' + handle);
39
39
+
}
35
40
}
36
41
37
42
const didResolver = new CompositeDidDocumentResolver({
-2
src/lib/website/EditableWebsite.svelte
···
756
756
{handleImageInputChange}
757
757
{handleVideoInputChange}
758
758
/>
759
759
-
760
760
-
<Toaster />
761
759
</Context>
+15
-1
src/routes/+layout.svelte
···
1
1
<script lang="ts">
2
2
import '../app.css';
3
3
4
4
-
import { ThemeToggle } from '@foxui/core';
4
4
+
import { ThemeToggle, Toaster, toast } from '@foxui/core';
5
5
import { onMount } from 'svelte';
6
6
import { initClient } from '$lib/atproto';
7
7
import YoutubeVideoPlayer, { videoPlayer } from '$lib/components/YoutubeVideoPlayer.svelte';
8
8
+
import { page } from '$app/state';
9
9
+
import { goto } from '$app/navigation';
8
10
9
11
let { children } = $props();
12
12
+
13
13
+
const errorMessages: Record<string, (params: URLSearchParams) => string> = {
14
14
+
handle_not_found: (p) => `Handle ${p.get('handle') ?? ''} not found!`
15
15
+
};
10
16
11
17
onMount(() => {
12
18
initClient();
19
19
+
20
20
+
const error = page.url.searchParams.get('error');
21
21
+
if (error) {
22
22
+
const msg = errorMessages[error]?.(page.url.searchParams) ?? error;
23
23
+
toast.error(msg);
24
24
+
goto(page.url.pathname, { replaceState: true });
25
25
+
}
13
26
});
14
27
</script>
15
28
16
29
{@render children()}
17
30
18
31
<ThemeToggle class="fixed top-2 left-2 z-10" />
32
32
+
<Toaster />
19
33
20
34
{#if videoPlayer.id}
21
35
<YoutubeVideoPlayer />