]> git.r.bdr.sh - rbdr/forum/blobdiff - src/routes/t/[id].svelte
Port to sveltekit
[rbdr/forum] / src / routes / t / [id].svelte
index 8775cec10b852e31efbf074f079b4b6ec172e93c..9d3ab9e214b97697b3af1e353973d6e4345f1eb7 100644 (file)
@@ -1,10 +1,48 @@
+<script context="module">
+       export const load = ({
+         page: {
+           params: { id }
+         }
+       }) => ({ props: { id } });
+</script>
+
 <script>
-  export async function load(ctx) {
-    let id = ctx.page.params.id
-    return { props: { id }}
-  }
+       import { onDestroy } from 'svelte';
+       import { _ } from 'svelte-i18n';
+       import { getTopic } from '$/stores/topic';
+       import { disableTopicActions, enableTopicActions } from '$/stores/actions';
+
+       import Topic from '$/components/topic/topic.svelte';
+       import ErrorBlock from '$/components/error_block/error_block.svelte';
+       import Loader from '$/components/loader/loader.svelte';
 
-  import Topic from '$components/topic/topic.svelte';
+       export let id;
+
+       $: 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}