]> git.r.bdr.sh - rbdr/forum/blobdiff - src/routes/t/[id].svelte
Use supabase
[rbdr/forum] / src / routes / t / [id].svelte
index 8775cec10b852e31efbf074f079b4b6ec172e93c..45cc63e71c9583781710cbcbb02d98d8d8ee8fa8 100644 (file)
@@ -1,10 +1,45 @@
-<script>
-  export async function load(ctx) {
-    let id = ctx.page.params.id
-    return { props: { id }}
-  }
+<script lang="ts" context="module">
+       export const load = ({
+    params: { id }
+       }) => ({ props: { id } });
+</script>
+
+<script lang="ts">
+       import { onDestroy } from 'svelte';
+       import { _ } from 'svelte-i18n';
+       import { topic } 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;
+
+       $: response = topic(id, true);
+
+       enableTopicActions(id);
+       onDestroy(() => disableTopicActions());
 </script>
 
-<Topic/>
+<svelte:head>
+       {#if $response.loading}
+               <title>{$_('loader.message')}, {$_('topic.title')}</title>
+       {/if}
+       {#if $response.error}
+               <title>{$_('error.generic.title')}, {$_('topic.title')}</title>
+       {/if}
+       {#if $response.data}
+               <title>{$response.data.title}, {$_('topic.title')}</title>
+       {/if}
+</svelte:head>
+
+{#if $response.loading}
+       <Loader />
+{/if}
+{#if $response.error}
+       <ErrorBlock message={$_('topic.error.unavailable')} />
+{/if}
+{#if $response.data}
+       <Topic topic={$response.data} />
+{/if}