Add Mailgun admin tools and contact API
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
import { useState, useEffect, useRef, useCallback } from 'react'
|
||||
import { useTranslations, useLocale } from 'next-intl'
|
||||
import { useAuth } from '@/hooks/use-auth'
|
||||
import { useSearchParams } from 'next/navigation'
|
||||
import { useSearchParams, useRouter } from 'next/navigation'
|
||||
import {
|
||||
Box,
|
||||
Typography,
|
||||
@@ -126,6 +126,7 @@ export default function BibleReaderNew() {
|
||||
const isMobile = useMediaQuery(theme.breakpoints.down('md'))
|
||||
const t = useTranslations('pages.bible')
|
||||
const locale = useLocale()
|
||||
const router = useRouter()
|
||||
const searchParams = useSearchParams()
|
||||
const { user } = useAuth()
|
||||
|
||||
@@ -261,6 +262,68 @@ export default function BibleReaderNew() {
|
||||
})
|
||||
}, [locale, showAllVersions, selectedVersion])
|
||||
|
||||
// Handle URL parameters for bookmark navigation
|
||||
useEffect(() => {
|
||||
const urlVersion = searchParams.get('version')
|
||||
const urlBook = searchParams.get('book')
|
||||
const urlChapter = searchParams.get('chapter')
|
||||
const urlVerse = searchParams.get('verse')
|
||||
|
||||
if (urlVersion && versions.length > 0) {
|
||||
// Check if this version exists
|
||||
const version = versions.find(v => v.id === urlVersion)
|
||||
if (version && selectedVersion !== urlVersion) {
|
||||
setSelectedVersion(urlVersion)
|
||||
}
|
||||
}
|
||||
|
||||
if (urlBook && books.length > 0) {
|
||||
const book = books.find(b => b.id === urlBook)
|
||||
if (book && selectedBook !== urlBook) {
|
||||
setSelectedBook(urlBook)
|
||||
}
|
||||
}
|
||||
|
||||
if (urlChapter) {
|
||||
const chapter = parseInt(urlChapter)
|
||||
if (chapter && selectedChapter !== chapter) {
|
||||
setSelectedChapter(chapter)
|
||||
}
|
||||
}
|
||||
|
||||
if (urlVerse && verses.length > 0) {
|
||||
const verseNum = parseInt(urlVerse)
|
||||
if (verseNum) {
|
||||
// Highlight the verse
|
||||
setTimeout(() => {
|
||||
const verseElement = verseRefs.current[verseNum]
|
||||
if (verseElement) {
|
||||
verseElement.scrollIntoView({ behavior: 'smooth', block: 'center' })
|
||||
setHighlightedVerse(verseNum)
|
||||
}
|
||||
}, 500)
|
||||
}
|
||||
}
|
||||
}, [searchParams, versions, books, verses, selectedVersion, selectedBook, selectedChapter])
|
||||
|
||||
// Function to update URL without causing full page reload
|
||||
const updateUrl = useCallback((bookId?: string, chapter?: number, versionId?: string) => {
|
||||
const params = new URLSearchParams()
|
||||
|
||||
if (versionId || selectedVersion) {
|
||||
params.set('version', versionId || selectedVersion)
|
||||
}
|
||||
if (bookId || selectedBook) {
|
||||
params.set('book', bookId || selectedBook)
|
||||
}
|
||||
if (chapter || selectedChapter) {
|
||||
params.set('chapter', String(chapter || selectedChapter))
|
||||
}
|
||||
|
||||
const newUrl = `/${locale}/bible?${params.toString()}`
|
||||
router.replace(newUrl, { scroll: false })
|
||||
}, [locale, selectedVersion, selectedBook, selectedChapter, router])
|
||||
|
||||
// Fetch books when version changes
|
||||
useEffect(() => {
|
||||
if (selectedVersion) {
|
||||
@@ -431,16 +494,6 @@ export default function BibleReaderNew() {
|
||||
const currentBook = books.find(book => book.id === selectedBook)
|
||||
const maxChapters = currentBook?.chapters?.length || 1
|
||||
|
||||
const updateUrl = (bookId: string, chapter: number, version?: string) => {
|
||||
const url = new URL(window.location.href)
|
||||
url.searchParams.set('book', bookId)
|
||||
url.searchParams.set('chapter', chapter.toString())
|
||||
if (version) {
|
||||
url.searchParams.set('version', version)
|
||||
}
|
||||
window.history.replaceState({}, '', url.toString())
|
||||
}
|
||||
|
||||
const scrollToVerse = (verseNum: number) => {
|
||||
const verseElement = verseRefs.current[verseNum]
|
||||
if (verseElement) {
|
||||
|
||||
Reference in New Issue
Block a user