diff --git a/html.c b/html.c index 599c6d8..bdf0bbe 100644 --- a/html.c +++ b/html.c @@ -375,6 +375,7 @@ d_char *html_entry_controls(snac *snac, d_char *os, char *msg) { char *id = xs_dict_get(msg, "id"); char *actor = xs_dict_get(msg, "attributedTo"); + char *meta = xs_dict_get(msg, "_snac"); xs *s = xs_str_new(NULL); xs *md5 = xs_md5_hex(id, strlen(id)); @@ -404,6 +405,63 @@ d_char *html_entry_controls(snac *snac, d_char *os, char *msg) if (strcmp(actor, snac->actor) != 0) { /* controls for other actors than this one */ + char *l; + + l = xs_dict_get(meta, "liked_by"); + if (xs_list_in(l, snac->actor) == -1) { + /* not already liked; add button */ + xs *s1 = xs_fmt( + "\n", + L("Like") + ); + + s = xs_str_cat(s, s1); + } + + l = xs_dict_get(meta, "announced_by"); + if (xs_list_in(l, snac->actor) == -1) { + /* not already boosted; add button */ + xs *s1 = xs_fmt( + "\n", + L("Boost") + ); + + s = xs_str_cat(s, s1); + } + + if (following_check(snac, actor)) { + xs *s1 = xs_fmt( + "\n", + L("Unfollow") + ); + + s = xs_str_cat(s, s1); + } + else { + xs *s1 = xs_fmt( + "\n" + "\n", + L("Follow"), + L("MUTE") + ); + + s = xs_str_cat(s, s1); + } + } + + { + xs *s1 = xs_fmt( + "\n", + L("Delete") + ); + + s = xs_str_cat(s, s1); } s = xs_str_cat(s, "\n"); @@ -430,6 +488,8 @@ d_char *html_entry_controls(snac *snac, d_char *os, char *msg) s = xs_str_cat(s, s1); } + s = xs_str_cat(s, "\n"); + return xs_str_cat(os, s); }