A social RSS reader built on the AT Protocol. glean.at
glean atproto atmosphere rss feed social app
14
fork

Configure Feed

Select the types of activity you want to include in your feed.

Sort articles from the future last

+12 -6
+2 -1
internal/cluster/scoring.go
··· 224 224 JOIN articles a ON a.feed_url = la.feed_url AND a.url = la.article_url 225 225 LEFT JOIN feeds f ON f.feed_url = la.feed_url 226 226 LEFT JOIN social_likes sl ON sl.feed_url = la.feed_url AND sl.article_url = la.article_url 227 - ORDER BY score DESC, a.published DESC 227 + -- Future-published articles (e.g., scheduled) sort last 228 + ORDER BY score DESC, (CASE WHEN a.published > 'now' THEN 1 ELSE 0 END), a.published DESC 228 229 LIMIT ? 229 230 `, userDID, userDID, userDID, userDID, userDID, userDID, w.WLike, w.WSocial, limit) 230 231 if err != nil {
+6 -3
internal/db/article.go
··· 158 158 args = []any{userDID, userDID, userDID} 159 159 } 160 160 161 - query += ` ORDER BY a.published DESC LIMIT ? OFFSET ?` 161 + // Future-published articles (e.g., scheduled) sort last 162 + query += ` ORDER BY (CASE WHEN a.published > 'now' THEN 1 ELSE 0 END), a.published DESC LIMIT ? OFFSET ?` 162 163 args = append(args, limit, offset) 163 164 164 165 rows, err := db.QueryContext(ctx, query, args...) ··· 221 222 args = []any{userDID, userDID, userDID} 222 223 } 223 224 224 - query += ` ORDER BY a.published DESC LIMIT ? OFFSET ?` 225 + // Future-published articles (e.g., scheduled) sort last 226 + query += ` ORDER BY (CASE WHEN a.published > 'now' THEN 1 ELSE 0 END), a.published DESC LIMIT ? OFFSET ?` 225 227 args = append(args, limit, offset) 226 228 227 229 rows, err := db.QueryContext(ctx, query, args...) ··· 284 286 args = []any{userDID, userDID, userDID} 285 287 } 286 288 287 - query += ` ORDER BY a.published DESC LIMIT ? OFFSET ?` 289 + // Future-published articles (e.g., scheduled) sort last 290 + query += ` ORDER BY (CASE WHEN a.published > 'now' THEN 1 ELSE 0 END), a.published DESC LIMIT ? OFFSET ?` 288 291 args = append(args, limit, offset) 289 292 290 293 rows, err := db.QueryContext(ctx, query, args...)
+4 -2
internal/db/social.go
··· 255 255 UNION SELECT f.target_did FROM follows f WHERE f.user_did = ? 256 256 ) 257 257 GROUP BY ar.id 258 - ORDER BY like_count DESC, annotation_count DESC, ar.published DESC 258 + -- Future-published articles (e.g., scheduled) sort last 259 + ORDER BY like_count DESC, annotation_count DESC, (CASE WHEN ar.published > 'now' THEN 1 ELSE 0 END), ar.published DESC 259 260 LIMIT ? OFFSET ? 260 261 `, since, userDID, since, userDID, userDID, userDID, userDID, userDID, limit, offset) 261 262 if err != nil { ··· 291 292 LEFT JOIN likes ul ON ul.feed_url = l.feed_url AND ul.article_url = l.article_url AND ul.author_did = ? 292 293 WHERE l.created_at >= ? 293 294 GROUP BY ar.id 294 - ORDER BY like_count DESC, annotation_count DESC, ar.published DESC 295 + -- Future-published articles (e.g., scheduled) sort last 296 + ORDER BY like_count DESC, annotation_count DESC, (CASE WHEN ar.published > 'now' THEN 1 ELSE 0 END), ar.published DESC 295 297 LIMIT ? OFFSET ? 296 298 `, since, userDID, since, limit, offset) 297 299 if err != nil {