improve debugging stack traces in MkPagination.vue

This commit is contained in:
Hazelnoot 2025-04-02 21:27:05 -04:00
parent b5a3066a06
commit d7784ea4ff

View file

@ -244,23 +244,24 @@ const reload = (): Promise<void> => {
const fetchMore = async (): Promise<void> => { const fetchMore = async (): Promise<void> => {
if (!more.value || fetching.value || moreFetching.value || items.value.size === 0) return; if (!more.value || fetching.value || moreFetching.value || items.value.size === 0) return;
moreFetching.value = true; moreFetching.value = true;
const params = getActualValue<Paging['params']>(props.pagination.params, {}); try {
const offsetMode = getActualValue(props.pagination.offsetMode, false); const params = getActualValue<Paging['params']>(props.pagination.params, {});
await misskeyApi<MisskeyEntity[]>(props.pagination.endpoint, { const offsetMode = getActualValue(props.pagination.offsetMode, false);
...params, const res = await misskeyApi<MisskeyEntity[]>(props.pagination.endpoint, {
limit: SECOND_FETCH_LIMIT, ...params,
...(offsetMode ? { limit: SECOND_FETCH_LIMIT,
offset: items.value.size, ...(offsetMode ? {
} : { offset: items.value.size,
untilId: Array.from(items.value.keys()).at(-1), } : {
}), untilId: Array.from(items.value.keys()).at(-1),
}).then(res => { }),
});
for (let i = 0; i < res.length; i++) { for (let i = 0; i < res.length; i++) {
const item = res[i]; const item = res[i];
if (i === 10) item._shouldInsertAd_ = true; if (i === 10) item._shouldInsertAd_ = true;
} }
const reverseConcat = _res => { const reverseConcat = (_res: typeof res) => {
const oldHeight = scrollableElement.value ? scrollableElement.value.scrollHeight : getBodyScrollHeight(); const oldHeight = scrollableElement.value ? scrollableElement.value.scrollHeight : getBodyScrollHeight();
const oldScroll = scrollableElement.value ? scrollableElement.value.scrollTop : window.scrollY; const oldScroll = scrollableElement.value ? scrollableElement.value.scrollTop : window.scrollY;
@ -281,28 +282,24 @@ const fetchMore = async (): Promise<void> => {
if (props.pagination.reversed) { if (props.pagination.reversed) {
reverseConcat(res).then(() => { reverseConcat(res).then(() => {
more.value = false; more.value = false;
moreFetching.value = false;
}); });
} else { } else {
items.value = concatMapWithArray(items.value, res); items.value = concatMapWithArray(items.value, res);
more.value = false; more.value = false;
moreFetching.value = false;
} }
} else { } else {
if (props.pagination.reversed) { if (props.pagination.reversed) {
reverseConcat(res).then(() => { reverseConcat(res).then(() => {
more.value = true; more.value = true;
moreFetching.value = false;
}); });
} else { } else {
items.value = concatMapWithArray(items.value, res); items.value = concatMapWithArray(items.value, res);
more.value = true; more.value = true;
moreFetching.value = false;
} }
} }
}, err => { } finally {
moreFetching.value = false; moreFetching.value = false;
}); }
}; };
const fetchMoreAhead = async (): Promise<void> => { const fetchMoreAhead = async (): Promise<void> => {