Write on the margins of the internet. Powered by the AT Protocol. margin.at
extension web atproto comments

fix feed tweaking out

+16 -23
+11 -18
backend/internal/api/handler.go
··· 8 8 "log" 9 9 "net/http" 10 10 "net/url" 11 + "sort" 11 12 "strconv" 12 13 "strings" 13 14 "sync" ··· 461 462 } 462 463 463 464 func sortFeed(feed []interface{}) { 464 - for i := 0; i < len(feed); i++ { 465 - for j := i + 1; j < len(feed); j++ { 466 - t1 := getCreatedAt(feed[i]) 467 - t2 := getCreatedAt(feed[j]) 468 - if t1.Before(t2) { 469 - feed[i], feed[j] = feed[j], feed[i] 470 - } 471 - } 472 - } 465 + sort.Slice(feed, func(i, j int) bool { 466 + t1 := getCreatedAt(feed[i]) 467 + t2 := getCreatedAt(feed[j]) 468 + return t1.After(t2) 469 + }) 473 470 } 474 471 475 472 func getCreatedAt(item interface{}) time.Time { ··· 488 485 } 489 486 490 487 func sortFeedByPopularity(feed []interface{}) { 491 - for i := 0; i < len(feed); i++ { 492 - for j := i + 1; j < len(feed); j++ { 493 - p1 := getPopularity(feed[i]) 494 - p2 := getPopularity(feed[j]) 495 - if p1 < p2 { 496 - feed[i], feed[j] = feed[j], feed[i] 497 - } 498 - } 499 - } 488 + sort.Slice(feed, func(i, j int) bool { 489 + p1 := getPopularity(feed[i]) 490 + p2 := getPopularity(feed[j]) 491 + return p1 > p2 492 + }) 500 493 } 501 494 502 495 func getPopularity(item interface{}) int {
+5 -5
web/src/pages/Feed.jsx
··· 46 46 const { user } = useAuth(); 47 47 48 48 const fetchFeed = useCallback( 49 - async (isLoadMore = false) => { 49 + async (offset = 0) => { 50 50 try { 51 + const isLoadMore = offset > 0; 51 52 if (isLoadMore) { 52 53 setLoadingMore(true); 53 54 } else { ··· 74 75 }; 75 76 const motivation = motivationMap[filter] || ""; 76 77 const limit = 50; 77 - const offset = isLoadMore ? annotations.length : 0; 78 78 79 79 const data = await getAnnotationFeed( 80 80 limit, ··· 104 104 setLoadingMore(false); 105 105 } 106 106 }, 107 - [tagFilter, feedType, filter, user, annotations.length], 107 + [tagFilter, feedType, filter, user], 108 108 ); 109 109 110 110 useEffect(() => { 111 - fetchFeed(false); 111 + fetchFeed(0); 112 112 }, [fetchFeed]); 113 113 114 114 const deduplicatedAnnotations = useMemo(() => { ··· 354 354 }} 355 355 > 356 356 <button 357 - onClick={() => fetchFeed(true)} 357 + onClick={() => fetchFeed(annotations.length)} 358 358 disabled={loadingMore} 359 359 className="feed-load-more" 360 360 >