From 6ad388764dd0f8652b2fbd6634cf11b35756c32a Mon Sep 17 00:00:00 2001 From: scanash00 Date: Fri, 30 Jan 2026 22:22:53 -0900 Subject: [PATCH] fix feed tweaking out --- backend/internal/api/handler.go | 29 +++++++++++------------------ web/src/pages/Feed.jsx | 10 +++++----- 2 files changed, 16 insertions(+), 23 deletions(-) diff --git a/backend/internal/api/handler.go b/backend/internal/api/handler.go index a53894f..33e69af 100644 --- a/backend/internal/api/handler.go +++ b/backend/internal/api/handler.go @@ -8,6 +8,7 @@ import ( "log" "net/http" "net/url" + "sort" "strconv" "strings" "sync" @@ -461,15 +462,11 @@ func containsTag(tagsJSON *string, tag string) bool { } func sortFeed(feed []interface{}) { - for i := 0; i < len(feed); i++ { - for j := i + 1; j < len(feed); j++ { - t1 := getCreatedAt(feed[i]) - t2 := getCreatedAt(feed[j]) - if t1.Before(t2) { - feed[i], feed[j] = feed[j], feed[i] - } - } - } + sort.Slice(feed, func(i, j int) bool { + t1 := getCreatedAt(feed[i]) + t2 := getCreatedAt(feed[j]) + return t1.After(t2) + }) } func getCreatedAt(item interface{}) time.Time { @@ -488,15 +485,11 @@ func getCreatedAt(item interface{}) time.Time { } func sortFeedByPopularity(feed []interface{}) { - for i := 0; i < len(feed); i++ { - for j := i + 1; j < len(feed); j++ { - p1 := getPopularity(feed[i]) - p2 := getPopularity(feed[j]) - if p1 < p2 { - feed[i], feed[j] = feed[j], feed[i] - } - } - } + sort.Slice(feed, func(i, j int) bool { + p1 := getPopularity(feed[i]) + p2 := getPopularity(feed[j]) + return p1 > p2 + }) } func getPopularity(item interface{}) int { diff --git a/web/src/pages/Feed.jsx b/web/src/pages/Feed.jsx index e16aac1..5ad4635 100644 --- a/web/src/pages/Feed.jsx +++ b/web/src/pages/Feed.jsx @@ -46,8 +46,9 @@ export default function Feed() { const { user } = useAuth(); const fetchFeed = useCallback( - async (isLoadMore = false) => { + async (offset = 0) => { try { + const isLoadMore = offset > 0; if (isLoadMore) { setLoadingMore(true); } else { @@ -74,7 +75,6 @@ export default function Feed() { }; const motivation = motivationMap[filter] || ""; const limit = 50; - const offset = isLoadMore ? annotations.length : 0; const data = await getAnnotationFeed( limit, @@ -104,11 +104,11 @@ export default function Feed() { setLoadingMore(false); } }, - [tagFilter, feedType, filter, user, annotations.length], + [tagFilter, feedType, filter, user], ); useEffect(() => { - fetchFeed(false); + fetchFeed(0); }, [fetchFeed]); const deduplicatedAnnotations = useMemo(() => { @@ -354,7 +354,7 @@ export default function Feed() { }} >