diff --git a/app/[locale]/bible/reader.tsx b/app/[locale]/bible/reader.tsx index b3c86a3..63ba24d 100644 --- a/app/[locale]/bible/reader.tsx +++ b/app/[locale]/bible/reader.tsx @@ -137,6 +137,7 @@ export default function BibleReaderNew() { const [verses, setVerses] = useState([]) const [loading, setLoading] = useState(true) const [versionsLoading, setVersionsLoading] = useState(true) + const [showAllVersions, setShowAllVersions] = useState(false) // UI state const [settingsOpen, setSettingsOpen] = useState(false) @@ -216,18 +217,25 @@ export default function BibleReaderNew() { return () => window.removeEventListener('scroll', handleScroll) }, []) - // Fetch all bible versions + // Fetch versions based on showAllVersions state and locale useEffect(() => { setVersionsLoading(true) - fetch(`/api/bible/versions?all=true`) + const url = showAllVersions + ? '/api/bible/versions?all=true' + : `/api/bible/versions?language=${locale}` + + fetch(url) .then(res => res.json()) .then(data => { if (data.success && data.versions) { setVersions(data.versions) - // Select default version or first available - const defaultVersion = data.versions.find((v: BibleVersion) => v.isDefault) || data.versions[0] - if (defaultVersion) { - setSelectedVersion(defaultVersion.id) + // Keep current selection if it exists in new list, otherwise select default/first + const currentVersionExists = data.versions.some((v: BibleVersion) => v.id === selectedVersion) + if (!currentVersionExists || !selectedVersion) { + const defaultVersion = data.versions.find((v: BibleVersion) => v.isDefault) || data.versions[0] + if (defaultVersion) { + setSelectedVersion(defaultVersion.id) + } } } setVersionsLoading(false) @@ -236,7 +244,7 @@ export default function BibleReaderNew() { console.error('Error fetching versions:', err) setVersionsLoading(false) }) - }, [locale]) + }, [locale, showAllVersions, selectedVersion]) // Fetch books when version changes useEffect(() => { @@ -677,36 +685,50 @@ export default function BibleReaderNew() { {/* Version Selection */} - - {t('version')} - { + setSelectedVersion(e.target.value) + // Reset to first book when version changes + if (books.length > 0) { + setSelectedBook(books[0].id) + setSelectedChapter(1) + updateUrl(books[0].id, 1, e.target.value) + } + }} + disabled={versionsLoading} + MenuProps={{ + PaperProps: { + style: { + maxHeight: 400, + }, }, - }, - }} - > - {versions.map((version) => ( - - {version.abbreviation} - {version.name} ({version.language.toUpperCase()}) - - ))} - - + }} + > + {versions.map((version) => ( + + {version.abbreviation} - {version.name} ({version.language.toUpperCase()}) + + ))} + + + + setShowAllVersions(prev => !prev)} + sx={{ color: showAllVersions ? 'primary.main' : 'inherit' }} + > + + + + + + {showAllVersions ? `${versions.length} versions (all languages)` : `${versions.length} versions (${locale.toUpperCase()})`} + {/* Books Selection */} diff --git a/app/api/bible/versions/route.ts b/app/api/bible/versions/route.ts index d3967f3..8e6cc01 100644 --- a/app/api/bible/versions/route.ts +++ b/app/api/bible/versions/route.ts @@ -6,7 +6,7 @@ export const runtime = 'nodejs' export async function GET(request: Request) { try { const { searchParams } = new URL(request.url) - const locale = (searchParams.get('locale') || 'ro').toLowerCase() + const locale = (searchParams.get('locale') || searchParams.get('language') || 'ro').toLowerCase() const showAll = searchParams.get('all') === 'true' let whereClause = {}