commit cfca2ad
default
·
2023-04-24 15:05:34 +0000 UTC
parent 3d20adc
Added mentions to mastoapi_status().
1 files changed,
+39,
-3
+39,
-3
1@@ -557,9 +557,45 @@ xs_dict *mastoapi_status(snac *snac, const xs_dict *msg)
2
3 st = xs_dict_append(st, "media_attachments", matt);
4
5- st = xs_dict_append(st, "mentions", el);
6- st = xs_dict_append(st, "tags", el);
7- st = xs_dict_append(st, "emojis", el);
8+ {
9+ xs *ml = xs_list_new();
10+ xs *htl = xs_list_new();
11+ xs *eml = xs_list_new();
12+ xs_list *p = xs_dict_get(msg, "tag");
13+ xs_dict *v;
14+ int n = 0;
15+
16+ while (xs_list_iter(&p, &v)) {
17+ const char *type = xs_dict_get(v, "type");
18+
19+ if (xs_is_null(type))
20+ continue;
21+
22+ xs *d1 = xs_dict_new();
23+
24+ if (strcmp(type, "Mention") == 0) {
25+ const char *name = xs_dict_get(v, "name");
26+ const char *href = xs_dict_get(v, "href");
27+
28+ if (!xs_is_null(name) && !xs_is_null(href) &&
29+ strcmp(href, snac->actor) != 0) {
30+ xs *nm = xs_strip_chars_i(xs_dup(name), "@");
31+
32+ xs *id = xs_fmt("%d", n++);
33+ d1 = xs_dict_append(d1, "id", id);
34+ d1 = xs_dict_append(d1, "username", nm);
35+ d1 = xs_dict_append(d1, "acct", nm);
36+ d1 = xs_dict_append(d1, "url", href);
37+
38+ ml = xs_list_append(ml, d1);
39+ }
40+ }
41+ }
42+
43+ st = xs_dict_append(st, "mentions", ml);
44+ st = xs_dict_append(st, "tags", htl);
45+ st = xs_dict_append(st, "emojis", eml);
46+ }
47
48 xs_free(idx);
49 xs_free(ixc);