commit d32141e

default  ·  2023-09-06 11:58:55 +0000 UTC
parent 7eef1b4
Process Follow Group and Unfollow Group buttons.
1 files changed,  +31, -0
M html.c
M html.c
+31, -0
 1@@ -2282,6 +2282,7 @@ int html_post_handler(const xs_dict *req, const char *q_path,
 2         char *id     = xs_dict_get(p_vars, "id");
 3         char *actor  = xs_dict_get(p_vars, "actor");
 4         char *action = xs_dict_get(p_vars, "action");
 5+        char *group  = xs_dict_get(p_vars, "group");
 6 
 7         if (action == NULL)
 8             return 404;
 9@@ -2358,6 +2359,36 @@ int html_post_handler(const xs_dict *req, const char *q_path,
10                 snac_log(&snac, xs_fmt("actor is not being followed %s", actor));
11         }
12         else
13+        if (strcmp(action, L("Follow Group")) == 0) { /** **/
14+            xs *msg = msg_follow(&snac, group);
15+
16+            if (msg != NULL) {
17+                /* reload the group from the message, in may be different */
18+                group = xs_dict_get(msg, "object");
19+
20+                following_add(&snac, group, msg);
21+
22+                enqueue_output_by_actor(&snac, msg, group, 0);
23+            }
24+        }
25+        else
26+        if (strcmp(action, L("Unfollow Group")) == 0) { /** **/
27+            /* get the following object */
28+            xs *object = NULL;
29+
30+            if (valid_status(following_get(&snac, group, &object))) {
31+                xs *msg = msg_undo(&snac, xs_dict_get(object, "object"));
32+
33+                following_del(&snac, group);
34+
35+                enqueue_output_by_actor(&snac, msg, group, 0);
36+
37+                snac_log(&snac, xs_fmt("unfollowed group %s", group));
38+            }
39+            else
40+                snac_log(&snac, xs_fmt("actor is not being followed %s", actor));
41+        }
42+        else
43         if (strcmp(action, L("Delete")) == 0) { /** **/
44             char *actor_form = xs_dict_get(p_vars, "actor-form");
45             if (actor_form != NULL) {