fix: pagination bug on misskey favourites

This commit is contained in:
mae taylor 2025-07-23 22:10:01 +01:00
parent cd5dc461f6
commit 19be3779e3
Signed by: mae
GPG key ID: 3C80D76BA7A3B9BD
2 changed files with 30 additions and 15 deletions

View file

@ -285,13 +285,17 @@ export async function getTimeline(host, token, timeline, max_id, local_only, rem
headers: { "Authorization": token ? `Bearer ${token}` : null }
})
let links = _parseLinkHeader(data.headers.get("Link"));
let res = {
data: await data.json()
}
return {
data: await data.json(),
prev: links.find(f=>f.rel=="prev"),
next: links.find(f=>f.rel=="next")
};
if(data.headers.has("Link")) {
let links = _parseLinkHeader(data.headers.get("Link"));
res["prev"] = links.find(f=>f.rel=="prev");
res["next"] = links.find(f=>f.rel=="next");
}
return res;
}
/**
@ -313,13 +317,17 @@ export async function getFavourites(host, token, max_id) {
headers: { "Authorization": token ? `Bearer ${token}` : null }
})
let links = _parseLinkHeader(data.headers.get("Link"));
let res = {
data: await data.json()
}
return {
data: await data.json(),
prev: links.find(f=>f.rel=="prev"),
next: links.find(f=>f.rel=="next")
};
if(data.headers.has("Link")) {
let links = _parseLinkHeader(data.headers.get("Link"));
res["prev"] = links.find(f=>f.rel=="prev");
res["next"] = links.find(f=>f.rel=="next");
}
return res;
}
/**

View file

@ -10,12 +10,15 @@ export const timeline = writable([]);
const lang = Lang();
let loading = false;
let last_post = false;
let last_post = false; // last post marker, used for fetching next sequence of posts
let at_end = false; // at end of timeline, no next param to paginate
export async function getTimeline(timelineType = "home", clean, localOnly = false, remoteOnly = false) {
if (loading) return; // no spamming!!
loading = true;
if(at_end) return;
if(clean) {
timeline.set([]);
last_post = false;
@ -49,8 +52,11 @@ export async function getTimeline(timelineType = "home", clean, localOnly = fals
return;
}
if (!clean) {
if (!clean && timeline_data.next) {
last_post = timeline_data.next.url.searchParams.get("max_id")
} else if(!timeline_data.next) {
console.log(timeline_data)
at_end = true;
}
for (let i in timeline_data.data) {
@ -75,4 +81,5 @@ export async function getTimeline(timelineType = "home", clean, localOnly = fals
export function clearTimeline() {
timeline.set([]);
last_post = false;
at_end = false;
}