X-Git-Url: https://git.r.bdr.sh/rbdr/forum/blobdiff_plain/bd8e98d7e24c4dbaee7db6ec7955f7c2f6d396a6..1a7b41da7257e1d410e01ca7173c1c6c0cf534b6:/src/routes/t/%5Bid%5D.svelte?ds=sidebyside

diff --git a/src/routes/t/[id].svelte b/src/routes/t/[id].svelte
index 8775cec..d60946b 100644
--- a/src/routes/t/[id].svelte
+++ b/src/routes/t/[id].svelte
@@ -1,10 +1,48 @@
-<script>
-  export async function load(ctx) {
-    let id = ctx.page.params.id
-    return { props: { id }}
-  }
+<script lang="ts" context="module">
+	export const load = ({
+		page: {
+			params: { id }
+		}
+	}) => ({ props: { id } });
+</script>
+
+<script lang="ts">
+	import { onDestroy } from 'svelte';
+	import { _ } from 'svelte-i18n';
+	import { getTopic } from '$lib/stores/topics';
+	import { disableTopicActions, enableTopicActions } from '$lib/stores/actions';
+
+	import Topic from '$lib/components/topic/topic.svelte';
+	import ErrorBlock from '$lib/components/error_block/error_block.svelte';
+	import Loader from '$lib/components/loader/loader.svelte';
 
-  import Topic from '$components/topic/topic.svelte';
+	export let id: string;
+
+	$: store = getTopic(id);
+	$: topic = $store.data;
+
+	enableTopicActions(id);
+	onDestroy(() => disableTopicActions());
 </script>
 
-<Topic/>
+<svelte:head>
+	{#if $store.loading}
+		<title>{$_('loader.message')}, {$_('topic.title')}</title>
+	{/if}
+	{#if $store.error}
+		<title>{$_('error.generic.title')}, {$_('topic.title')}</title>
+	{/if}
+	{#if topic}
+		<title>{topic.title}, {$_('topic.title')}</title>
+	{/if}
+</svelte:head>
+
+{#if $store.loading}
+	<Loader />
+{/if}
+{#if $store.error}
+	<ErrorBlock message={$_('topic.error.unavailable')} />
+{/if}
+{#if topic}
+	<Topic {topic} />
+{/if}
