<script>
+ export let id;
+
import { _ } from 'svelte-i18n';
+ import { getTopic } from '$/stores/topic';
- import Glyph from '../glyph/glyph.svelte';
-</script>
+ import ErrorBlock from '$/components/error_block/error_block.svelte';
+ import Loader from '$/components/loader/loader.svelte';
+ import PostContent from '$/components/post_content/post_content.svelte';
+ import { readableTime } from '$/utils/readable_time.js';
-<div class="h-entry" title="{$_('topic.title')}">
- <h1 class="p-name">This is a post in the forum.</h1>
- <aside class="topic-meta" title="{$_('topic.metadata_title')}">
- <span class="topic-location">{$_('topic.category_location')} <a href="/f/interaction"
- class="p-category">{$_('forum.name.interaction')}</a>.</span>
- <span class="topic-ttl"><a class="u-url u-uid" title="{$_('topic.permalink_title')}" href="/t/2a3fc567af8c897ca6f55fb5fj">{$_('topic.remaining_time', { values: { remaining: $_('time.days', { values: { count: 3 } }) } })}</a>.</span>
- </aside>
- <aside class="topic-tags" title="{$_('topic.tags_title')}">
- {$_('topic.tags_location')}
- <a href="/g/question" class="p-category">question<span class="tag-weight">(5)</span></a>
- <a href="/g/meta" class="p-category">meta<span class="tag-weight">(34)</span></a>
- <a href="/g/carrots" class="p-category">carrots<span class="tag-weight">(1)</span></a>
- <a href="/g/tpbo" class="p-category">tpbo<span class="tag-weight">(2)</span></a>
- </aside>
- <aside class="post-meta" title="{$_('post.metadata_title', { values: { count: 1, total: 2 } })}">
- <Glyph uuid="3cd8c84e18144a2da71f6bace9392abc" />
- <span class="h-card">
- {$_('post.author_credit')} <a href="/a/rbdr" class="p-nickname u-url">rbdr</a>.
- </span>
- <time role="presentation" class="dt-published" datetime="2018-08-14T03:32:10.929Z">
- <a title="{$_('post.permalink_title')}" href="/p/a80c70ea0120387123097ce1907ff">
- 2018-08-14 03:32:10
- </a>
- </time>
- </aside>
- <article class="e-content" title="{$_('post.title', { values: { count: 1, total: 2, author: 'rbdr' } })}">
- <p>This is a main topic in the forum. Does that abstraction still even make sense?</p>
- <p>Is this really it??</p>
- <p>This might all be fake but at least the links look purple when visited</p>
- </article>
- <hr/>
- <aside class="post-meta" title="{$_('post.metadata_title', { values: { count: 2, total: 2 } })}">
- <Glyph uuid="b33f0339f7d64d1ca27f1c0aefb7d753" />
- <span class="h-card">
- {$_('post.author_credit')} <a href="/a/time4carrots" class="p-nickname u-url">time4carrots</a>.
- </span>
- <time role="presentation" class="dt-published" datetime="2018-08-15T04:10:00.929Z">
- <a href="/p/da9910f3febde91948000ce1535ea">
- 2018-08-15 04:10:00
- </a>
- </time>
- </aside>
- <article class="e-content" title="{$_('post.title', { values: { count: 1, total: 2, author: 'time4carrots' } })}">
- <p>It's just how it is...</p>
- </article>
- <hr/>
-</div>
+ $: store = getTopic(id);
+ $: topic = $store.data;
+ $: remainingTime = topic ? (topic.updated_at + topic.ttl) - Date.now() : 0;
+ $: remaining = readableTime(remainingTime);
+</script>
-<style>
- .post-meta * {
- vertical-align: top;
- }
-</style>
+{#if $store.loading}
+ <Loader />
+{/if}
+{#if $store.error}
+ <ErrorBlock message={$_('topic.error.unavailable')} />
+{/if}
+{#if topic}
+ <div class="h-entry" title="{$_('topic.title')}">
+ <h1 class="p-name">{topic.title}</h1>
+ <aside class="topic-meta" title="{$_('topic.metadata_title')}">
+ {#if topic.forum}
+ <span class="topic-location">{$_('topic.category_location')} <a href="/f/{topic.forum.id}"
+ class="p-category">{topic.forum.glyph} {$_(topic.forum.label)}</a>.</span>
+ {/if}
+ <span class="topic-ttl"><a class="u-url u-uid" title="{$_('topic.permalink_title')}" href="/t/{topic.id}">({$_('topic.remaining_time', { values: { remaining: $_(remaining.label, { values: { count: remaining.count } }) } })})</a>.</span>
+ </aside>
+ {#if topic.tags.length > 0}
+ <aside class="topic-tags" title="{$_('topic.tags_title')}">
+ {$_('topic.tags_location')}
+ {#each topic.tags as tag}
+ <a href="/g/{tag.id}" class="p-category">{tag.id}<span class="tag-weight">({tag.weight})</span></a>{' '}
+ {/each}
+ </aside>
+ {/if}
+ {#each topic.posts as post, index}
+ <PostContent post={post} index={index} count={topic.posts.length} />
+ {/each}
+ </div>
+{/if}