From 5f526a900791f6d0f8829e92aac62a6a0c793f61 Mon Sep 17 00:00:00 2001 From: h202-wq Date: Wed, 19 Aug 2026 08:33:56 -0400 Subject: [PATCH] Fixed search --- src/Home.tsx | 10 ++++++---- src/bible.ts | 12 ++++++++++-- src/verse.ts | 14 ++++++++++---- 3 files changed, 26 insertions(+), 10 deletions(-) diff --git a/src/Home.tsx b/src/Home.tsx index da91423..5e8cd98 100644 --- a/src/Home.tsx +++ b/src/Home.tsx @@ -1,8 +1,7 @@ import { useCallback, useEffect, useState } from 'react' import { Link } from 'react-router-dom' import CandleCanvas from './Candle' -import { type Verse } from './bible' -import { daySeed, loadKJV, msUntilRollover, pickForDay } from './verse' +import { daySeed, loadKJV, msUntilRollover, pickForDay, type DailyVerse } from './verse' type Phase = 'sealed' | 'revealing' | 'revealed' @@ -16,7 +15,7 @@ function formatCountdown(ms: number): string { export default function Home() { const [phase, setPhase] = useState('sealed') - const [verse, setVerse] = useState(null) + const [verse, setVerse] = useState(null) const [countdown, setCountdown] = useState('') const [error, setError] = useState(false) @@ -92,7 +91,10 @@ export default function Home() {

{verse.text}

- — {verse.reference} + —{' '} + + {verse.reference} +

diff --git a/src/bible.ts b/src/bible.ts index 1fac6b1..f4f9f52 100644 --- a/src/bible.ts +++ b/src/bible.ts @@ -39,6 +39,7 @@ interface IndexEntry { verse: number text: string lower: string + refLower: string } let loaded = false @@ -61,7 +62,14 @@ export function loadBible(): Promise { for (const ch of b.chapters) { const cn = Number(ch.chapter) for (const v of ch.verses) { - index.push({ book: b.book, chapter: cn, verse: v.verse, text: v.text, lower: v.text.toLowerCase() }) + index.push({ + book: b.book, + chapter: cn, + verse: v.verse, + text: v.text, + lower: v.text.toLowerCase(), + refLower: `${displayName(b.book)} ${cn}:${v.verse}`.toLowerCase(), + }) } } } @@ -99,7 +107,7 @@ export function searchBible(query: string, limit = 60): SearchOutcome { const results: SearchResult[] = [] let total = 0 for (const e of index) { - if (e.lower.includes(q)) { + if (e.lower.includes(q) || e.refLower.includes(q)) { total++ if (results.length < limit) { results.push({ text: e.text, reference: `${displayName(e.book)} ${e.chapter}:${e.verse}`, book: e.book, chapter: e.chapter, verse: e.verse }) diff --git a/src/verse.ts b/src/verse.ts index ef37a29..3ad335d 100644 --- a/src/verse.ts +++ b/src/verse.ts @@ -2,7 +2,13 @@ import { getBooks, loadBible, type Verse } from './bible' const ROLLOVER_LOCAL_HOUR = 2 -let flatNT: Verse[] | null = null +export interface DailyVerse extends Verse { + book: string + chapter: number + verse: number +} + +let flatNT: DailyVerse[] | null = null export function daySeed(now: Date = new Date()): number { const shifted = new Date(now.getTime() - ROLLOVER_LOCAL_HOUR * 3600_000) @@ -26,13 +32,13 @@ function mulberry32(seed: number): () => number { } } -export function pickForDay(verses: Verse[], seed: number): Verse { +export function pickForDay(verses: DailyVerse[], seed: number): DailyVerse { const rand = mulberry32(seed) const index = Math.floor(rand() * verses.length) return verses[index] } -export async function loadKJV(): Promise { +export async function loadKJV(): Promise { if (flatNT) return flatNT await loadBible() flatNT = [] @@ -44,7 +50,7 @@ export async function loadKJV(): Promise { for (const chapter of book.chapters) { const chapterNumber = Number(chapter.chapter) for (const v of chapter.verses) { - flatNT.push({ text: v.text, reference: `${name} ${chapterNumber}:${v.verse}` }) + flatNT.push({ text: v.text, reference: `${name} ${chapterNumber}:${v.verse}`, book: book.book, chapter: chapterNumber, verse: v.verse }) } } }