feat(app): LanguageAvailability-komponente in PostView eingebunden

This commit is contained in:
Jörg Lohrer 2026-04-21 12:49:59 +02:00
parent 7f48644dfc
commit 4a06213d03
2 changed files with 54 additions and 0 deletions

View File

@ -0,0 +1,51 @@
<script lang="ts">
import type { NostrEvent, TranslationInfo } from '$lib/nostr/loaders';
import { loadTranslations } from '$lib/nostr/loaders';
import { displayLanguage } from '$lib/nostr/languageNames';
interface Props {
event: NostrEvent;
}
let { event }: Props = $props();
let translations: TranslationInfo[] = $state([]);
let loading = $state(true);
$effect(() => {
const currentId = event.id;
loading = true;
translations = [];
loadTranslations(event)
.then((infos) => {
if (event.id !== currentId) return;
translations = infos;
})
.finally(() => {
if (event.id === currentId) loading = false;
});
});
</script>
{#if !loading && translations.length > 0}
<p class="availability">
Auch verfügbar in:
{#each translations as t, i}
<a href="/{t.slug}/" title={t.title}>{displayLanguage(t.lang)}</a>{#if i < translations.length - 1}, {/if}
{/each}
</p>
{/if}
<style>
.availability {
font-size: 0.88rem;
color: var(--muted);
margin: 0.25rem 0 1rem;
}
.availability a {
color: var(--accent);
text-decoration: none;
}
.availability a:hover {
text-decoration: underline;
}
</style>

View File

@ -6,6 +6,7 @@
import ReplyList from './ReplyList.svelte'; import ReplyList from './ReplyList.svelte';
import ReplyComposer from './ReplyComposer.svelte'; import ReplyComposer from './ReplyComposer.svelte';
import ExternalClientLinks from './ExternalClientLinks.svelte'; import ExternalClientLinks from './ExternalClientLinks.svelte';
import LanguageAvailability from './LanguageAvailability.svelte';
interface Props { interface Props {
event: NostrEvent; event: NostrEvent;
@ -60,6 +61,8 @@
{/if} {/if}
</div> </div>
<LanguageAvailability {event} />
{#if image} {#if image}
<p class="cover"><img src={image} alt="Cover-Bild" /></p> <p class="cover"><img src={image} alt="Cover-Bild" /></p>
{/if} {/if}