This commit is contained in:
2026-05-07 21:04:27 +02:00
parent 6f3a63af12
commit fb6a0c7968
13 changed files with 101 additions and 48 deletions

View File

@@ -24,12 +24,41 @@ export function useStrapi(endpoint, options = {}) {
return query.toString()
})
const { data, pending, error, refresh } = useFetch(
() => `${endpoint}?${queryString.value}`,
const fetchAll = computed(() => Boolean(unref(options.fetchAll)))
const asyncDataKey = computed(() => `${endpoint}:${queryString.value}:fetchAll=${fetchAll.value}`)
const { data, pending, error, refresh } = useAsyncData(
asyncDataKey,
async () => {
const baseUrl = `${endpoint}?${queryString.value}`
if (!fetchAll.value) {
return await $fetch(baseUrl)
}
const firstPage = await $fetch(addPageParam(baseUrl, 1))
const pageCount = Number(firstPage?.meta?.pagination?.pageCount || 1)
if (pageCount <= 1) {
return firstPage
}
const otherPages = await Promise.all(
Array.from({ length: pageCount - 1 }, (_, index) => $fetch(addPageParam(baseUrl, index + 2)))
)
return {
...firstPage,
data: [
...(Array.isArray(firstPage?.data) ? firstPage.data : []),
...otherPages.flatMap((page) => (Array.isArray(page?.data) ? page.data : [])),
],
}
},
{
server: true,
key: () => `${endpoint}:${queryString.value}`,
watch: [queryString],
watch: [queryString, fetchAll],
}
)
@@ -58,6 +87,11 @@ export function useStrapi(endpoint, options = {}) {
}
}
function addPageParam(url, page) {
const separator = url.includes("?") ? "&" : "?"
return `${url}${separator}pagination[page]=${page}`
}
function appendPopulate(query, populate, prefix = "populate") {
Object.entries(populate).forEach(([key, value]) => {
if (value === true) {