30 lines
959 B
JavaScript
30 lines
959 B
JavaScript
import { useInfiniteQuery } from '@tanstack/react-query'
|
|
import { GetThingHistory } from '../utils/Fetcher'
|
|
|
|
export const useThingHistory = (thingId, limit = 10) => {
|
|
return useInfiniteQuery({
|
|
queryKey: ['thingHistory', thingId],
|
|
queryFn: async ({ pageParam = 0 }) => {
|
|
const response = await GetThingHistory(thingId, pageParam)
|
|
if (!response.ok) {
|
|
throw new Error('Failed to fetch thing history')
|
|
}
|
|
const data = await response.json()
|
|
return data
|
|
},
|
|
getNextPageParam: (lastPage, allPages) => {
|
|
// If the last page has fewer items than the limit, there are no more pages
|
|
if (lastPage.res.length < limit) {
|
|
return undefined
|
|
}
|
|
// Calculate the offset for the next page
|
|
const totalItems = allPages.reduce(
|
|
(acc, page) => acc + page.res.length,
|
|
0,
|
|
)
|
|
return totalItems
|
|
},
|
|
enabled: !!thingId, // Only run query if thingId exists
|
|
})
|
|
}
|