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:
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user