commit d215f8c

default  ·  2022-11-24 08:49:54 +0000 UTC
parent 4553528
Use the new hide API.
5 files changed,  +24, -50
M data.c
M html.c
M snac.h
M data.c
+2, -46
 1@@ -14,7 +14,7 @@
 2 #include <sys/file.h>
 3 #include <fcntl.h>
 4 
 5-double db_layout = 2.2;
 6+double db_layout = 2.3;
 7 
 8 
 9 int db_upgrade(d_char **error);
10@@ -913,50 +913,6 @@ void timeline_admire(snac *snac, char *id, char *admirer, int like)
11 }
12 
13 
14-int timeline_hide(snac *snac, char *id, int hide)
15-/* hides/unhides a timeline entry */
16-{
17-    int ret = 0;
18-    xs *fn = _timeline_find_fn(snac, id);
19-    FILE *f;
20-
21-    if (fn != NULL && (f = fopen(fn, "r")) != NULL) {
22-        xs *s1   = xs_readall(f);
23-        xs *msg  = xs_json_loads(s1);
24-        xs *meta = xs_dup(xs_dict_get(msg, "_snac"));
25-        xs *hdn  = xs_val_new(hide ? XSTYPE_TRUE : XSTYPE_FALSE);
26-        char *p, *v;
27-
28-        fclose(f);
29-
30-        /* if it's already in this hidden state, we're done */
31-        if ((v = xs_dict_get(meta, "hidden")) && xs_type(v) == xs_type(hdn))
32-            return ret;
33-
34-        meta = xs_dict_set(meta, "hidden", hdn);
35-        msg  = xs_dict_set(msg,  "_snac",  meta);
36-
37-        if ((f = fopen(fn, "w")) != NULL) {
38-            xs *j1 = xs_json_dumps_pp(msg, 4);
39-
40-            fwrite(j1, strlen(j1), 1, f);
41-            fclose(f);
42-
43-            snac_debug(snac, 1, xs_fmt("timeline_hide %d %s", hide, id));
44-
45-            /* now hide the children */
46-            p = xs_dict_get(meta, "children");
47-            while (xs_list_iter(&p, &v))
48-                timeline_hide(snac, v, hide);
49-
50-            ret = 1;
51-        }
52-    }
53-
54-    return ret;
55-}
56-
57-
58 d_char *_following_fn(snac *snac, char *actor)
59 {
60     xs *md5 = xs_md5_hex(actor, strlen(actor));
61@@ -1109,7 +1065,7 @@ int is_muted(snac *snac, char *actor)
62 d_char *_hidden_fn(snac *snac, const char *id)
63 {
64     xs *md5 = xs_md5_hex(id, strlen(id));
65-    return xs_fmt("%s/hidden/%s.json", snac->basedir, md5);
66+    return xs_fmt("%s/hidden/%s", snac->basedir, md5);
67 }
68 
69 
M html.c
+2, -2
 1@@ -497,7 +497,7 @@ d_char *html_entry(snac *snac, d_char *os, char *msg, xs_set *seen, int local, i
 2     xs *s = xs_str_new(NULL);
 3 
 4     /* top wrap */
 5-    if ((v = xs_dict_get(meta, "hidden")) && xs_type(v) == XSTYPE_TRUE)
 6+    if (is_hidden(snac, id))
 7         s = xs_str_cat(s, "<div style=\"display: none\">\n");
 8     else
 9         s = xs_str_cat(s, "<div>\n");
10@@ -1300,7 +1300,7 @@ int html_post_handler(d_char *req, char *q_path, d_char *payload, int p_size,
11         }
12         else
13         if (strcmp(action, L("Hide")) == 0) {
14-            timeline_hide(&snac, id, 1);
15+            hide(&snac, id);
16         }
17         else
18         if (strcmp(action, L("Follow")) == 0) {
M snac.h
+0, -1
1@@ -71,7 +71,6 @@ d_char *timeline_get(snac *snac, char *fn);
2 d_char *timeline_list(snac *snac, int max);
3 int timeline_add(snac *snac, char *id, char *o_msg, char *parent, char *referrer);
4 void timeline_admire(snac *snac, char *id, char *admirer, int like);
5-int timeline_hide(snac *snac, char *id, int hide);
6 
7 d_char *local_list(snac *snac, int max);
8 
+19, -0
 1@@ -74,6 +74,25 @@ int db_upgrade(d_char **error)
 2 
 3             nf = 2.2;
 4         }
 5+        else
 6+        if (f < 2.3) {
 7+            xs *users = user_list();
 8+            char *p, *v;
 9+
10+            p = users;
11+            while (xs_list_iter(&p, &v)) {
12+                snac snac;
13+
14+                if (user_open(&snac, v)) {
15+                    xs *dir = xs_fmt("%s/hidden", snac.basedir);
16+
17+                    mkdir(dir, 0755);
18+                    user_free(&snac);
19+                }
20+            }
21+
22+            nf = 2.3;
23+        }
24 
25         if (f < nf) {
26             f          = nf;
+1, -1
1@@ -237,7 +237,7 @@ int adduser(char *uid)
2     }
3 
4     const char *dirs[] = {
5-        "followers", "following", "local", "muted",
6+        "followers", "following", "local", "muted", "hidden",
7         "queue", "static", "timeline", "history", NULL };
8     int n;
9