26 lines
817 B
JavaScript
26 lines
817 B
JavaScript
|
|
import is from '@sindresorhus/is'
|
||
|
|
import { HttpResponse, http } from 'msw'
|
||
|
|
import { db } from '@db/pages/faq/db'
|
||
|
|
|
||
|
|
// Handler for pages/faq
|
||
|
|
export const handlerPagesFaq = [
|
||
|
|
http.get(('/api/pages/faq'), ({ request }) => {
|
||
|
|
const url = new URL(request.url)
|
||
|
|
const q = url.searchParams.get('q') ?? ''
|
||
|
|
const searchQuery = is.string(q) ? q : undefined
|
||
|
|
const queryLowered = (searchQuery ?? '').toString().toLowerCase()
|
||
|
|
const filteredData = []
|
||
|
|
|
||
|
|
Object.entries(db.faqs).forEach(([_, faqObj]) => {
|
||
|
|
const filteredQAndA = faqObj.faqs.filter(obj => {
|
||
|
|
return obj.question.toLowerCase().includes(queryLowered)
|
||
|
|
})
|
||
|
|
|
||
|
|
if (filteredQAndA.length)
|
||
|
|
filteredData.push({ ...faqObj, faqs: filteredQAndA })
|
||
|
|
})
|
||
|
|
|
||
|
|
return HttpResponse.json(filteredData, { status: 200 })
|
||
|
|
}),
|
||
|
|
]
|