commit a050be9
default
·
2023-04-14 11:05:36 +0000 UTC
parent cb616d6
Don't show the full tree in notifications.
2 files changed,
+60,
-45
M
html.c
+3,
-0
1@@ -937,6 +937,9 @@ void notify(snac *snac, xs_str *type, xs_str *utype, xs_str *actor, xs_dict *msg
2 enqueue_telegram(body, bot, chat_id);
3
4 /* finally, store it in the notification folder */
5+ if (strcmp(type, "Follow") == 0)
6+ objid = xs_dict_get(msg, "id");
7+
8 notify_add(snac, type, utype, actor, objid);
9 }
10
M
html.c
+57,
-45
1@@ -679,7 +679,8 @@ d_char *html_entry_controls(snac *snac, d_char *os, char *msg, const char *md5)
2 }
3
4
5-d_char *html_entry(snac *snac, d_char *os, char *msg, int local, int level, const char *md5)
6+d_char *html_entry(snac *snac, d_char *os, char *msg, int local,
7+ int level, const char *md5, int hide_children)
8 {
9 char *id = xs_dict_get(msg, "id");
10 char *type = xs_dict_get(msg, "type");
11@@ -922,56 +923,58 @@ d_char *html_entry(snac *snac, d_char *os, char *msg, int local, int level, cons
12 s = html_entry_controls(snac, s, msg, md5);
13
14 /** children **/
15- xs *children = object_children(id);
16- int left = xs_list_len(children);
17+ if (!hide_children) {
18+ xs *children = object_children(id);
19+ int left = xs_list_len(children);
20
21- if (left) {
22- char *p, *cmd5;
23- int older_open = 0;
24- xs *ss = xs_str_new(NULL);
25- int n_children = 0;
26+ if (left) {
27+ char *p, *cmd5;
28+ int older_open = 0;
29+ xs *ss = xs_str_new(NULL);
30+ int n_children = 0;
31
32- ss = xs_str_cat(ss, "<details open><summary>...</summary><p>\n");
33+ ss = xs_str_cat(ss, "<details open><summary>...</summary><p>\n");
34
35- if (level < 4)
36- ss = xs_str_cat(ss, "<div class=\"snac-children\">\n");
37- else
38- ss = xs_str_cat(ss, "<div>\n");
39+ if (level < 4)
40+ ss = xs_str_cat(ss, "<div class=\"snac-children\">\n");
41+ else
42+ ss = xs_str_cat(ss, "<div>\n");
43
44- if (left > 3) {
45- xs *s1 = xs_fmt("<details><summary>%s</summary>\n", L("Older..."));
46- ss = xs_str_cat(ss, s1);
47- older_open = 1;
48- }
49+ if (left > 3) {
50+ xs *s1 = xs_fmt("<details><summary>%s</summary>\n", L("Older..."));
51+ ss = xs_str_cat(ss, s1);
52+ older_open = 1;
53+ }
54
55- p = children;
56- while (xs_list_iter(&p, &cmd5)) {
57- xs *chd = NULL;
58- timeline_get_by_md5(snac, cmd5, &chd);
59+ p = children;
60+ while (xs_list_iter(&p, &cmd5)) {
61+ xs *chd = NULL;
62+ timeline_get_by_md5(snac, cmd5, &chd);
63
64- if (older_open && left <= 3) {
65- ss = xs_str_cat(ss, "</details>\n");
66- older_open = 0;
67- }
68+ if (older_open && left <= 3) {
69+ ss = xs_str_cat(ss, "</details>\n");
70+ older_open = 0;
71+ }
72+
73+ if (chd != NULL) {
74+ ss = html_entry(snac, ss, chd, local, level + 1, cmd5, hide_children);
75+ n_children++;
76+ }
77+ else
78+ snac_debug(snac, 2, xs_fmt("cannot read from timeline child %s", cmd5));
79
80- if (chd != NULL) {
81- ss = html_entry(snac, ss, chd, local, level + 1, cmd5);
82- n_children++;
83+ left--;
84 }
85- else
86- snac_debug(snac, 2, xs_fmt("cannot read from timeline child %s", cmd5));
87
88- left--;
89- }
90+ if (older_open)
91+ ss = xs_str_cat(ss, "</details>\n");
92
93- if (older_open)
94+ ss = xs_str_cat(ss, "</div>\n");
95 ss = xs_str_cat(ss, "</details>\n");
96
97- ss = xs_str_cat(ss, "</div>\n");
98- ss = xs_str_cat(ss, "</details>\n");
99-
100- if (n_children)
101- s = xs_str_cat(s, ss);
102+ if (n_children)
103+ s = xs_str_cat(s, ss);
104+ }
105 }
106
107 s = xs_str_cat(s, "</div>\n</div>\n");
108@@ -1015,7 +1018,7 @@ d_char *html_timeline(snac *snac, char *list, int local, int skip, int show, int
109 if (!valid_status(timeline_get_by_md5(snac, v, &msg)))
110 continue;
111
112- s = html_entry(snac, s, msg, local, 0, v);
113+ s = html_entry(snac, s, msg, local, 0, v, 0);
114 }
115
116 s = xs_str_cat(s, "</div>\n");
117@@ -1204,7 +1207,7 @@ xs_str *html_notifications(snac *snac)
118
119 xs *obj = NULL;
120 const char *type = xs_dict_get(noti, "type");
121- const char *id = xs_dict_get(noti, strcmp(type, "Follow") == 0 ? "actor" : "objid");
122+ const char *id = xs_dict_get(noti, "objid");
123
124 if (!valid_status(object_get(id, &obj)))
125 continue;
126@@ -1224,7 +1227,7 @@ xs_str *html_notifications(snac *snac)
127 else {
128 /* already seen notification */
129 if (stage != NHDR_OLD) {
130- xs *s1 = xs_fmt("<h2>%s</h2>\n", L("Older"));
131+ xs *s1 = xs_fmt("<h2>%s</h2>\n", L("Already seen"));
132 s = xs_str_cat(s, s1);
133
134 stage = NHDR_OLD;
135@@ -1233,11 +1236,20 @@ xs_str *html_notifications(snac *snac)
136
137 s = xs_str_cat(s, "<div>\n");
138
139- xs *s1 = xs_fmt("<p><b>%s</b>:</p>\n", strcmp("Create", type) == 0 ? "Mention" : type);
140+ xs *s1 = xs_fmt("<p><b>%s</b>:</p>\n", strcmp(type, "Create") == 0 ? "Mention" : type);
141 s = xs_str_cat(s, s1);
142
143- xs *md5 = xs_md5_hex(id, strlen(id));
144- s = html_entry(snac, s, obj, 0, 0, md5);
145+ if (strcmp(type, "Follow") == 0) {
146+ s = xs_str_cat(s, "<div class=\"snac-post\">\n");
147+
148+ s = html_msg_icon(snac, s, obj);
149+
150+ s = xs_str_cat(s, "</div>\n");
151+ }
152+ else {
153+ xs *md5 = xs_md5_hex(id, strlen(id));
154+ s = html_entry(snac, s, obj, 0, 0, md5, 1);
155+ }
156
157 s = xs_str_cat(s, "</div>\n");
158 }