feat: improve Bible version selection logic and language switching

- Auto-select appropriate version when switching languages
- Prioritize favorite version only if it matches current locale
- Fall back to locale-specific default version
- Redirect Bible pages to reader root when changing language to allow proper version selection

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-10-10 10:51:51 +00:00
parent fa72c992f4
commit a756f0808c
2 changed files with 27 additions and 11 deletions

View File

@@ -350,12 +350,15 @@ export default function BibleReaderNew({ initialVersion, initialBook, initialCha
if (data.success && data.versions) {
setVersions(data.versions)
// Only auto-select if there's NO current selection
if (!selectedVersion) {
// Try to load user's favorite version first
// Check if current version is available in the new locale's versions
const currentVersionAvailable = selectedVersion && data.versions.find((v: BibleVersion) => v.id === selectedVersion)
// Auto-select if there's NO current selection OR if current version is not available in new locale
if (!selectedVersion || (!showAllVersions && !currentVersionAvailable)) {
let versionToSelect = null
if (user) {
// Try to load user's favorite version first, but only if it matches the current locale
if (user && !showAllVersions) {
const token = localStorage.getItem('authToken')
if (token) {
try {
@@ -365,6 +368,7 @@ export default function BibleReaderNew({ initialVersion, initialBook, initialCha
const favoriteData = await favoriteRes.json()
if (favoriteData.success && favoriteData.favoriteBibleVersion) {
// Check if favorite version is in the current locale's versions
const favoriteVersion = data.versions.find((v: BibleVersion) => v.id === favoriteData.favoriteBibleVersion)
if (favoriteVersion) {
versionToSelect = favoriteVersion
@@ -376,9 +380,11 @@ export default function BibleReaderNew({ initialVersion, initialBook, initialCha
}
}
// Fall back to default version or first version
// Fall back to default version for this locale or first version
if (!versionToSelect) {
versionToSelect = data.versions.find((v: BibleVersion) => v.isDefault) || data.versions[0]
versionToSelect = data.versions.find((v: BibleVersion) => v.isDefault && v.language.toLowerCase() === locale.toLowerCase())
|| data.versions.find((v: BibleVersion) => v.isDefault)
|| data.versions[0]
}
if (versionToSelect) {