From c032dd1214df6f7640e0ee2a39d25796e622a1b2 Mon Sep 17 00:00:00 2001 From: syuilo Date: Mon, 3 Apr 2023 11:50:17 +0900 Subject: fix(frontend): tweak MkPagination behaviouyr --- packages/frontend/src/components/MkPagination.vue | 36 +++++++++++------------ 1 file changed, 17 insertions(+), 19 deletions(-) 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 (props.pagination.reversed) moreFetching.value = true; + + if (res.length === 0 || props.pagination.noPaging) { items.value = res; - more.value = true; + more.value = false; } else { + if (props.pagination.reversed) moreFetching.value = true; items.value = res; - more.value = false; + more.value = true; } + 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,28 +228,26 @@ const fetchMore = async (): Promise => { }); }; - if (res.length > SECOND_FETCH_LIMIT) { - res.pop(); - + if (res.length === 0) { if (props.pagination.reversed) { reverseConcat(res).then(() => { - more.value = true; + more.value = false; moreFetching.value = false; }); } else { items.value = items.value.concat(res); - more.value = true; + more.value = false; moreFetching.value = false; } } else { if (props.pagination.reversed) { reverseConcat(res).then(() => { - more.value = false; + more.value = true; moreFetching.value = false; }); } else { items.value = items.value.concat(res); - more.value = false; + more.value = true; moreFetching.value = false; } } @@ -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(); + if (res.length === 0) { items.value = items.value.concat(res); - more.value = true; + more.value = false; } else { items.value = items.value.concat(res); - more.value = false; + more.value = true; } offset.value += res.length; moreFetching.value = false; -- cgit v1.2.3-freya