aboutsummaryrefslogtreecommitdiff
path: root/html.c
diff options
context:
space:
mode:
Diffstat (limited to 'html.c')
-rw-r--r--html.c28
1 files changed, 20 insertions, 8 deletions
diff --git a/html.c b/html.c
index 2a02d18..3fd1e4b 100644
--- a/html.c
+++ b/html.c
@@ -1855,13 +1855,15 @@ xs_html *html_entry(snac *user, xs_dict *msg, int read_only,
}
}
}
- else
- if (strcmp(type, "Note") == 0) {
- if (level == 0) {
- /* is the parent not here? */
- const char *parent = get_in_reply_to(msg);
- if (user && !xs_is_null(parent) && *parent && !timeline_here(user, parent)) {
+ if (user && strcmp(type, "Note") == 0) {
+ /* is the parent not here? */
+ const char *parent = get_in_reply_to(msg);
+
+ if (!xs_is_null(parent) && *parent) {
+ xs *md5 = xs_md5_hex(parent, strlen(parent));
+
+ if (!timeline_here(user, md5)) {
xs_html_add(post_header,
xs_html_tag("div",
xs_html_attr("class", "snac-origin"),
@@ -2965,9 +2967,12 @@ xs_str *html_notifications(snac *user, int skip, int show)
xs_html_attr("class", "snac-posts"));
xs_html_add(body, posts);
- xs_list *p = n_list;
+ xs_set rep;
+ xs_set_init(&rep);
+
const xs_str *v;
- while (xs_list_iter(&p, &v)) {
+
+ xs_list_foreach(n_list, v) {
xs *noti = notify_get(user, v);
if (noti == NULL)
@@ -2988,6 +2993,11 @@ xs_str *html_notifications(snac *user, int skip, int show)
object_get(id, &obj);
+ const char *msg_id = NULL;
+
+ if (xs_is_dict(obj) && (msg_id = xs_dict_get(obj, "id")) && xs_set_add(&rep, msg_id) != 1)
+ continue;
+
const char *actor_id = xs_dict_get(noti, "actor");
xs *actor = NULL;
@@ -3101,6 +3111,8 @@ xs_str *html_notifications(snac *user, int skip, int show)
}
}
+ xs_set_free(&rep);
+
if (noti_new == NULL && noti_seen == NULL)
xs_html_add(body,
xs_html_tag("h2",