diff --git a/src/routes/search/+page.svelte b/src/routes/search/+page.svelte index e187c726..d3d01983 100644 --- a/src/routes/search/+page.svelte +++ b/src/routes/search/+page.svelte @@ -34,20 +34,9 @@ $: fetchVerses = (async () => { try { if (searchQuery.length > 0) { - const urlParameters = `query=${searchQuery}&size=${resultsPerPage}&page=${searchPage}&filter_translations=${selectedTranslations}`; - let versesKeyData; - - // Fetching from Quran.com default search API - let response = await fetch(`https://api.qurancdn.com/api/qdc/search?${urlParameters}`); + let response = await fetch(`${apiEndpoint}/search/translations?query=${searchQuery}&size=${resultsPerPage}&page=${searchPage}`); let data = await response.json(); - versesKeyData = data; - - // If no data, then fetch from our API - if (!versesKeyData.result.verses.length) { - response = await fetch(`${apiEndpoint}/search-translations?${urlParameters}`); - data = await response.json(); - versesKeyData = data.data; - } + let versesKeyData = data; const { pagination } = versesKeyData; totalResults = pagination.total_records; @@ -67,30 +56,29 @@ } })(); + // Function to generate keys from the API response function generateKeys(data) { const verseKeys = []; - Object.keys(data.result.verses).forEach(function (key) { - verseKeys.push(data.result.verses[key].verse_key); - }); - - return verseKeys.toString(); - } - - function generateTranslationText(idsString) { - if (idsString === '') return ''; + // Check if navigation exists and has a valid entry + if (data.result.navigation && data.result.navigation.length > 0) { + const firstItem = data.result.navigation[0]; - const ids = idsString.split(',').map((id) => parseInt(id.trim())); - const resourceNames = ids.map((id) => selectableVerseTranslations[id]?.resource_name).filter((name) => name); - - if (resourceNames.length === 2) { - return `Searching in ${resourceNames[0]} and ${resourceNames[1]}.`; + // Check if result_type is 'ayah' + if (firstItem.result_type === 'ayah') { + verseKeys.push(firstItem.key); + return verseKeys.toString(); + } } - const firstResourceName = resourceNames[0]; - const othersCount = resourceNames.length - 1; + // If not 'ayah', check verses and extract their keys + if (data.result.verses && Array.isArray(data.result.verses) && data.result.verses.length > 0) { + data.result.verses.forEach(function (verse) { + verseKeys.push(verse.verse_key); + }); + } - return `Searching in ${firstResourceName}${othersCount > 0 ? `, and ${othersCount} other${othersCount > 1 ? 's' : ''}` : ''}.`; + return verseKeys.toString(); } function updateSearchQuery(query) { @@ -99,6 +87,9 @@ if (previousSearchQuery !== searchPage) searchPage = 1; } + // Make a random hit to the search endpoint to warm it + fetch(`${apiEndpoint}/search/translations?query=mary&random_id=${Math.floor(10000 + Math.random() * 90000)}&bypass_cache=true`); + __currentPage.set('search'); @@ -124,7 +115,7 @@ {#if searchQuery.length === 0}
{errorLoadingDataMessage}