fix: pagination bug on misskey favourites
This commit is contained in:
parent
cd5dc461f6
commit
19be3779e3
2 changed files with 30 additions and 15 deletions
|
@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue