generated from gitea_admin/default
dev
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user