commit 1766d6b
default
·
2025-01-27 19:20:40 +0000 UTC
parent 82bcc4b
Added a 'No more unseen posts' mark.
M
data.c
+8,
-0
1@@ -1528,6 +1528,14 @@ xs_list *timeline_list(snac *snac, const char *idx_name, int skip, int show, int
2 }
3
4
5+void timeline_add_mark(snac *user)
6+/* adds an "already seen" mark to the private timeline */
7+{
8+ xs *fn = xs_fmt("%s/private.idx", user->basedir);
9+ index_add_md5(fn, MD5_ALREADY_SEEN_MARK);
10+}
11+
12+
13 xs_str *instance_index_fn(void)
14 {
15 return xs_fmt("%s/public.idx", srv_basedir);
M
html.c
+24,
-0
1@@ -2648,10 +2648,31 @@ xs_str *html_timeline(snac *user, const xs_list *list, int read_only,
2 xs_html_add(body,
3 posts);
4
5+ int mark_shown = 0;
6+
7 while (xs_list_iter(&p, &v)) {
8 xs *msg = NULL;
9 int status;
10
11+ /* "already seen" mark? */
12+ if (strcmp(v, MD5_ALREADY_SEEN_MARK) == 0) {
13+ if (skip == 0 && !mark_shown) {
14+ xs *s = xs_fmt("%s/admin#top", user->actor);
15+
16+ xs_html_add(posts,
17+ xs_html_text(L("No more unseen posts")),
18+ xs_html_text(" - "),
19+ xs_html_tag("a",
20+ xs_html_attr("href", s),
21+ xs_html_text(L("Back to top"))),
22+ xs_html_sctag("hr", NULL));
23+ }
24+
25+ mark_shown = 1;
26+
27+ continue;
28+ }
29+
30 if (utl && user && !is_pinned_by_md5(user, v))
31 status = timeline_get_by_md5(user, v, &msg);
32 else
33@@ -3473,6 +3494,7 @@ int html_get_handler(const xs_dict *req, const char *q_path,
34 }
35 }
36 else {
37+ /** the private timeline **/
38 double t = history_mtime(&snac, "timeline.html_");
39
40 /* if enabled by admin, return a cached page if its timestamp is:
41@@ -3492,6 +3514,8 @@ int html_get_handler(const xs_dict *req, const char *q_path,
42
43 xs *list = timeline_list(&snac, "private", skip, show, &more);
44
45+ timeline_add_mark(&snac);
46+
47 *body = html_timeline(&snac, list, 0, skip, show,
48 more, NULL, "/admin", 1, error);
49
M
snac.h
+4,
-0
1@@ -22,6 +22,8 @@
2
3 #define MD5_HEX_SIZE 33
4
5+#define MD5_ALREADY_SEEN_MARK "00000000000000000000000000000000"
6+
7 extern double disk_layout;
8 extern xs_str *srv_basedir;
9 extern xs_dict *srv_config;
10@@ -163,6 +165,8 @@ int timeline_add(snac *snac, const char *id, const xs_dict *o_msg);
11 int timeline_admire(snac *snac, const char *id, const char *admirer, int like);
12
13 xs_list *timeline_top_level(snac *snac, const xs_list *list);
14+void timeline_add_mark(snac *user);
15+
16 xs_list *local_list(snac *snac, int max);
17 xs_str *instance_index_fn(void);
18 xs_list *timeline_instance_list(int skip, int show);