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) {