]> git.r.bdr.sh - rbdr/forum/blobdiff - src/routes/t/[id].svelte
Update apollo
[rbdr/forum] / src / routes / t / [id].svelte
index 8775cec10b852e31efbf074f079b4b6ec172e93c..d60946b31a231081a5b036eebfff2d6f8a8d4e59 100644 (file)
@@ -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}