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