commit 9fb84bc
default
·
2024-11-24 07:54:43 +0000 UTC
parent 96576d2
The people page shows 'Approve' and 'Discard' buttons for pending follows.
M
data.c
+15,
-5
1@@ -1270,12 +1270,22 @@ xs_list *pending_list(snac *user)
2 const char *v;
3
4 xs_list_foreach(l, v) {
5- const char *actor = xs_dict_get(v, "actor");
6+ FILE *f;
7+ xs *msg = NULL;
8
9- if (xs_type(actor) == XSTYPE_STRING) {
10- xs *md5 = xs_md5_hex(actor, strlen(actor));
11- r = xs_list_append(r, md5);
12- }
13+ if ((f = fopen(v, "r")) == NULL)
14+ continue;
15+
16+ msg = xs_json_load(f);
17+ fclose(f);
18+
19+ if (msg == NULL)
20+ continue;
21+
22+ const char *actor = xs_dict_get(msg, "actor");
23+
24+ if (xs_type(actor) == XSTYPE_STRING)
25+ r = xs_list_append(r, actor);
26 }
27
28 return r;
M
html.c
+23,
-6
1@@ -2470,10 +2470,9 @@ xs_html *html_people_list(snac *snac, xs_list *list, char *header, char *t, cons
2 xs_html_tag("summary",
3 xs_html_text("..."))));
4
5- xs_list *p = list;
6 const char *actor_id;
7
8- while (xs_list_iter(&p, &actor_id)) {
9+ xs_list_foreach(list, actor_id) {
10 xs *md5 = xs_md5_hex(actor_id, strlen(actor_id));
11 xs *actor = NULL;
12
13@@ -2542,6 +2541,14 @@ xs_html *html_people_list(snac *snac, xs_list *list, char *header, char *t, cons
14 html_button("limit", L("Limit"),
15 L("Block announces (boosts) from this user")));
16 }
17+ if (pending_check(snac, actor_id)) {
18+ xs_html_add(form,
19+ html_button("approve", L("Approve"),
20+ L("Approve this follow request")));
21+
22+ xs_html_add(form,
23+ html_button("discard", L("Discard"), L("Discard this follow request")));
24+ }
25 else {
26 xs_html_add(form,
27 html_button("follow", L("Follow"),
28@@ -2596,13 +2603,23 @@ xs_str *html_people(snac *user)
29 xs *wing = following_list(user);
30 xs *wers = follower_list(user);
31
32+ xs_html *lists = xs_html_tag("div",
33+ xs_html_attr("class", "snac-posts"));
34+
35+ if (xs_is_true(xs_dict_get(user->config, "approve_followers"))) {
36+ xs *pending = pending_list(user);
37+ xs_html_add(lists,
38+ html_people_list(user, pending, L("Pending follow confirmations"), "p", proxy));
39+ }
40+
41+ xs_html_add(lists,
42+ html_people_list(user, wing, L("People you follow"), "i", proxy),
43+ html_people_list(user, wers, L("People that follow you"), "e", proxy));
44+
45 xs_html *html = xs_html_tag("html",
46 html_user_head(user, NULL, NULL),
47 xs_html_add(html_user_body(user, 0),
48- xs_html_tag("div",
49- xs_html_attr("class", "snac-posts"),
50- html_people_list(user, wing, L("People you follow"), "i", proxy),
51- html_people_list(user, wers, L("People that follow you"), "e", proxy)),
52+ lists,
53 html_footer()));
54
55 return xs_html_render_s(html, "<!DOCTYPE html>\n");