/home/smartbloks/.trash/extendify/src/Assist/hooks/useSupportArticles.js
import useSWR from 'swr'
import {
getSupportArticles,
getSupportArticleCategories,
getSupportArticle,
getSearchResults,
} from '@assist/api/Data'
export const useSupportArticles = () => {
const { data, error } = useSWR(
'support-articles',
async () => {
const response = await getSupportArticles()
if (!response?.data || !Array.isArray(response.data)) {
throw new Error('Bad Data')
}
return response.data
},
{
refreshInterval: 360_000,
revalidateOnFocus: false,
dedupingInterval: 360_000,
},
)
return { data, error, loading: !data && !error }
}
export const useSupportArticleCategories = () => {
const { data, error } = useSWR(
'support-article-categories',
async () => {
const response = await getSupportArticleCategories()
if (!response?.data || !Array.isArray(response.data)) {
console.error(
'We got an empty response while querying support-article-categories',
response,
)
throw new Error('Bad Data')
}
return response.data
},
{
refreshInterval: 360_000,
revalidateOnFocus: false,
dedupingInterval: 360_000,
},
)
return { data: data, error, loading: !data && !error }
}
export const useSupportArticle = (slug) => {
const { data, error } = useSWR(
`support-article-${slug}`,
async () => {
const response = await getSupportArticle(slug)
if (!response?.data || !Array.isArray(response.data)) {
console.error(
`We got an empty response while querying support-article-${slug}`,
response,
)
throw new Error('Bad Data')
}
return response.data?.[0] ?? {}
},
{
refreshInterval: 360_000,
revalidateOnFocus: false,
dedupingInterval: 360_000,
},
)
return { data, error, loading: !data && !error }
}
export const useSearchArticles = ({ term, perPage, offset }) => {
const { data, error } = useSWR(
{ term, perPage, offset },
async ({ term, perPage, offset }) => {
if (!term) return []
const response = await getSearchResults(term, perPage, offset)
if (!response?.data || !Array.isArray(response.data)) {
console.error(
'We got an empty response while querying search-articles',
response,
)
throw new Error('Bad Data')
}
return response.data
},
{
refreshInterval: 360_000,
revalidateOnFocus: false,
dedupingInterval: 360_000,
},
)
return { data, error, loading: !data && !error }
}