fix: ensure Bible verses are prerendered and served statically

- Fetch full verse data at build time in +page.server.ts
- Pass preloaded verseData to BibleModal instead of fetching client-side
- Remove onMount fetch logic from BibleModal component
- Add VerseData interface to type definitions
- Update handleCitationClick to pass verseData prop

This ensures all Bible verses are embedded in static HTML during build,
eliminating runtime API calls and improving performance.
This commit is contained in:
2025-12-16 16:01:02 +01:00
parent 2b693d6e83
commit 7eff051d8b
4 changed files with 37 additions and 38 deletions

View File

@@ -1,35 +1,16 @@
<script lang="ts">
import { onMount } from 'svelte';
import type { VerseData } from '$lib/data/mysteryDescriptions';
export let reference: string = '';
export let title: string = '';
export let verseData: VerseData | null = null;
export let onClose: () => void;
let book: string = '';
let chapter: number = 0;
let verses: Array<{ verse: number; text: string }> = [];
let loading = true;
let error = '';
onMount(async () => {
if (!reference) return;
try {
const response = await fetch(`/api/glaube/bibel/${encodeURIComponent(reference)}`);
if (!response.ok) {
throw new Error('Failed to fetch verses');
}
const data = await response.json();
book = data.book;
chapter = data.chapter;
verses = data.verses;
} catch (err) {
console.error('Error fetching Bible verses:', err);
error = 'Fehler beim Laden der Bibelstelle';
} finally {
loading = false;
}
});
let book: string = verseData?.book || '';
let chapter: number = verseData?.chapter || 0;
let verses: Array<{ verse: number; text: string }> = verseData?.verses || [];
let loading = false;
let error = verseData ? '' : 'Keine Versdaten verfügbar';
function handleBackdropClick(event: MouseEvent) {
if (event.target === event.currentTarget) {

View File

@@ -3,8 +3,15 @@ export interface MysteryReference {
reference: string;
}
export interface VerseData {
book: string;
chapter: number;
verses: Array<{ verse: number; text: string }>;
}
export interface MysteryDescription extends MysteryReference {
text: string;
verseData?: VerseData | null;
}
// Only store references - texts will be fetched at build time