diff --git a/packages/frontend/src/components/MkPagination.vue b/packages/frontend/src/components/MkPagination.vue index 867d432572..cd8af560e4 100644 --- a/packages/frontend/src/components/MkPagination.vue +++ b/packages/frontend/src/components/MkPagination.vue @@ -163,21 +163,22 @@ async function init(): Promise { const params = props.pagination.params ? isRef(props.pagination.params) ? props.pagination.params.value : props.pagination.params : {}; await os.api(props.pagination.endpoint, { ...params, - limit: props.pagination.noPaging ? (props.pagination.limit || 10) : (props.pagination.limit || 10) + 1, + limit: props.pagination.limit ?? 10, }).then(res => { for (let i = 0; i < res.length; i++) { const item = res[i]; if (i === 3) item._shouldInsertAd_ = true; } - if (!props.pagination.noPaging && (res.length > (props.pagination.limit || 10))) { - res.pop(); + + if (res.length === 0 || props.pagination.noPaging) { + items.value = res; + more.value = false; + } else { if (props.pagination.reversed) moreFetching.value = true; items.value = res; more.value = true; - } else { - items.value = res; - more.value = false; } + offset.value = res.length; error.value = false; fetching.value = false; @@ -198,7 +199,7 @@ const fetchMore = async (): Promise => { const params = props.pagination.params ? isRef(props.pagination.params) ? props.pagination.params.value : props.pagination.params : {}; await os.api(props.pagination.endpoint, { ...params, - limit: SECOND_FETCH_LIMIT + 1, + limit: SECOND_FETCH_LIMIT, ...(props.pagination.offsetMode ? { offset: offset.value, } : { @@ -227,20 +228,7 @@ const fetchMore = async (): Promise => { }); }; - if (res.length > SECOND_FETCH_LIMIT) { - res.pop(); - - if (props.pagination.reversed) { - reverseConcat(res).then(() => { - more.value = true; - moreFetching.value = false; - }); - } else { - items.value = items.value.concat(res); - more.value = true; - moreFetching.value = false; - } - } else { + if (res.length === 0) { if (props.pagination.reversed) { reverseConcat(res).then(() => { more.value = false; @@ -251,6 +239,17 @@ const fetchMore = async (): Promise => { more.value = false; moreFetching.value = false; } + } else { + if (props.pagination.reversed) { + reverseConcat(res).then(() => { + more.value = true; + moreFetching.value = false; + }); + } else { + items.value = items.value.concat(res); + more.value = true; + moreFetching.value = false; + } } offset.value += res.length; }, err => { @@ -264,20 +263,19 @@ const fetchMoreAhead = async (): Promise => { const params = props.pagination.params ? isRef(props.pagination.params) ? props.pagination.params.value : props.pagination.params : {}; await os.api(props.pagination.endpoint, { ...params, - limit: SECOND_FETCH_LIMIT + 1, + limit: SECOND_FETCH_LIMIT, ...(props.pagination.offsetMode ? { offset: offset.value, } : { sinceId: items.value[items.value.length - 1].id, }), }).then(res => { - if (res.length > SECOND_FETCH_LIMIT) { - res.pop(); - items.value = items.value.concat(res); - more.value = true; - } else { + if (res.length === 0) { items.value = items.value.concat(res); more.value = false; + } else { + items.value = items.value.concat(res); + more.value = true; } offset.value += res.length; moreFetching.value = false;