rainbow-fe/src/routes/post/[id].svelte

48 lines
1.2 KiB
Svelte
Raw Normal View History

2022-04-23 17:37:15 +00:00
<script lang="ts" context="module">
import type { Load } from '@sveltejs/kit';
2022-05-11 10:53:41 +00:00
import {
fetchStatus,
fetchStatusContext,
type MastodonStatus,
type MastodonStatusContext
} from '$lib/mastoapi/status';
2022-04-23 17:37:15 +00:00
export const load: Load = async ({ session, params }) => {
try {
const status = await fetchStatus(session.instance, params.id);
2022-05-11 10:53:41 +00:00
let contextPromise = await fetchStatusContext(session.instance, status);
return { props: { status, contextPromise } };
2022-04-23 17:37:15 +00:00
} catch (err) {
return { status: 404, error: err as Error };
}
};
</script>
<script lang="ts">
import Status from '$lib/components/Status.svelte';
export let status: MastodonStatus;
2022-05-11 10:53:41 +00:00
export let contextPromise: Promise<MastodonStatusContext>;
2022-04-23 17:37:15 +00:00
</script>
2022-05-11 10:53:41 +00:00
{#await contextPromise then context}
<div class="ancestors">
{#each context.ancestors as ancestor}
<Status status={ancestor} />
{/each}
</div>
{/await}
2022-04-23 17:37:15 +00:00
{#if status != null}
2022-05-11 10:53:41 +00:00
<Status {status} focused={true} />
2022-04-23 17:37:15 +00:00
{:else}
<p>a</p>
{/if}
2022-05-11 10:53:41 +00:00
{#await contextPromise then context}
<div class="descendants">
{#each context.descendants as descendant}
<Status status={descendant} />
{/each}
</div>
{/await}