summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar default2022-11-04 08:48:15 +0100
committerGravatar default2022-11-04 08:48:15 +0100
commit8b252dab84e45de924fb55ef9a85131769c477bc (patch)
tree273501204f5856753769d0337191bc182f492277
parentUpdated TODO. (diff)
downloadsnac2-8b252dab84e45de924fb55ef9a85131769c477bc.tar.gz
snac2-8b252dab84e45de924fb55ef9a85131769c477bc.tar.xz
snac2-8b252dab84e45de924fb55ef9a85131769c477bc.zip
New 'Hide' button.
-rw-r--r--data.c31
-rw-r--r--html.c13
-rw-r--r--snac.h1
-rw-r--r--utils.c1
4 files changed, 45 insertions, 1 deletions
diff --git a/data.c b/data.c
index e8e4f9f..741acc8 100644
--- a/data.c
+++ b/data.c
@@ -627,6 +627,37 @@ void timeline_admire(snac *snac, char *id, char *admirer, int like)
627} 627}
628 628
629 629
630int timeline_hide(snac *snac, char *id, int hide)
631/* hides/unhides a timeline entry */
632{
633 int ret = 0;
634 xs *fn = _timeline_find_fn(snac, id);
635 FILE *f;
636
637 if (fn != NULL && (f = fopen(fn, "r")) != NULL) {
638 xs *s1 = xs_readall(f);
639 xs *msg = xs_json_loads(s1);
640 xs *meta = xs_dup(xs_dict_get(msg, "_snac"));
641
642 fclose(f);
643
644 meta = xs_dict_set(meta, "hidden", xs_val_new(hide ? XSTYPE_TRUE : XSTYPE_FALSE));
645 msg = xs_dict_set(msg, "_snac", meta);
646
647 if ((f = fopen(fn, "w")) != NULL) {
648 xs *j1 = xs_json_dumps_pp(msg, 4);
649
650 fwrite(j1, strlen(j1), 1, f);
651 fclose(f);
652
653 ret = 1;
654 }
655 }
656
657 return ret;
658}
659
660
630d_char *_following_fn(snac *snac, char *actor) 661d_char *_following_fn(snac *snac, char *actor)
631{ 662{
632 xs *md5 = xs_md5_hex(actor, strlen(actor)); 663 xs *md5 = xs_md5_hex(actor, strlen(actor));
diff --git a/html.c b/html.c
index afeb5df..53f82cb 100644
--- a/html.c
+++ b/html.c
@@ -435,6 +435,7 @@ d_char *html_entry_controls(snac *snac, d_char *os, char *msg, int num)
435 s = html_button(s, "mute", L("MUTE")); 435 s = html_button(s, "mute", L("MUTE"));
436 } 436 }
437 437
438 s = html_button(s, "hide", L("Hide"));
438 s = html_button(s, "delete", L("Delete")); 439 s = html_button(s, "delete", L("Delete"));
439 440
440 s = xs_str_cat(s, "</form>\n"); 441 s = xs_str_cat(s, "</form>\n");
@@ -489,6 +490,12 @@ d_char *html_entry(snac *snac, d_char *os, char *msg, xs_set *seen, int local, i
489 490
490 xs *s = xs_str_new(NULL); 491 xs *s = xs_str_new(NULL);
491 492
493 /* top wrap */
494 if ((v = xs_dict_get(meta, "hidden")) && xs_type(v) == XSTYPE_TRUE)
495 s = xs_str_cat(s, "<div style=\"display: none\">\n");
496 else
497 s = xs_str_cat(s, "<div>\n");
498
492 if (level == 0) { 499 if (level == 0) {
493 xs *s1 = xs_fmt("<a name=\"%d_entry\"></a>\n", *num); 500 xs *s1 = xs_fmt("<a name=\"%d_entry\"></a>\n", *num);
494 501
@@ -738,7 +745,7 @@ d_char *html_entry(snac *snac, d_char *os, char *msg, xs_set *seen, int local, i
738 s = xs_str_cat(s, "</div>\n"); 745 s = xs_str_cat(s, "</div>\n");
739 } 746 }
740 747
741 s = xs_str_cat(s, "</div>\n"); 748 s = xs_str_cat(s, "</div>\n</div>\n");
742 749
743 return xs_str_cat(os, s); 750 return xs_str_cat(os, s);
744} 751}
@@ -1194,6 +1201,10 @@ int html_post_handler(d_char *req, char *q_path, d_char *payload, int p_size,
1194 unmute(&snac, actor); 1201 unmute(&snac, actor);
1195 } 1202 }
1196 else 1203 else
1204 if (strcmp(action, L("Hide")) == 0) {
1205 timeline_hide(&snac, id, 1);
1206 }
1207 else
1197 if (strcmp(action, L("Follow")) == 0) { 1208 if (strcmp(action, L("Follow")) == 0) {
1198 xs *msg = msg_follow(&snac, actor); 1209 xs *msg = msg_follow(&snac, actor);
1199 1210
diff --git a/snac.h b/snac.h
index c25e9a8..b65a86a 100644
--- a/snac.h
+++ b/snac.h
@@ -65,6 +65,7 @@ d_char *timeline_get(snac *snac, char *fn);
65d_char *timeline_list(snac *snac, int max); 65d_char *timeline_list(snac *snac, int max);
66int timeline_add(snac *snac, char *id, char *o_msg, char *parent, char *referrer); 66int timeline_add(snac *snac, char *id, char *o_msg, char *parent, char *referrer);
67void timeline_admire(snac *snac, char *id, char *admirer, int like); 67void timeline_admire(snac *snac, char *id, char *admirer, int like);
68int timeline_hide(snac *snac, char *id, int hide);
68 69
69d_char *local_list(snac *snac, int max); 70d_char *local_list(snac *snac, int max);
70 71
diff --git a/utils.c b/utils.c
index 55b8758..e0ca276 100644
--- a/utils.c
+++ b/utils.c
@@ -46,6 +46,7 @@ const char *default_css =
46 ".snac-btn-unmute { float: right; margin-left: 0.5em }\n" 46 ".snac-btn-unmute { float: right; margin-left: 0.5em }\n"
47 ".snac-btn-follow { float: right; margin-left: 0.5em }\n" 47 ".snac-btn-follow { float: right; margin-left: 0.5em }\n"
48 ".snac-btn-unfollow { float: right; margin-left: 0.5em }\n" 48 ".snac-btn-unfollow { float: right; margin-left: 0.5em }\n"
49 ".snac-btn-hide { float: right; margin-left: 0.5em }\n"
49 ".snac-btn-delete { float: right; margin-left: 0.5em }\n" 50 ".snac-btn-delete { float: right; margin-left: 0.5em }\n"
50 ".snac-footer { margin-top: 2em; font-size: 75% }\n"; 51 ".snac-footer { margin-top: 2em; font-size: 75% }\n";
51 52