summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar default2023-04-24 17:05:34 +0200
committerGravatar default2023-04-24 17:05:34 +0200
commitcfca2adcb9e9d9fbc0c2a30e98d129892dacfed2 (patch)
treed44815df3194fa6ce5e8bb5f468aacd6e7ddd435
parentAdded some more Instance values. (diff)
downloadsnac2-cfca2adcb9e9d9fbc0c2a30e98d129892dacfed2.tar.gz
snac2-cfca2adcb9e9d9fbc0c2a30e98d129892dacfed2.tar.xz
snac2-cfca2adcb9e9d9fbc0c2a30e98d129892dacfed2.zip
Added mentions to mastoapi_status().
-rw-r--r--mastoapi.c42
1 files changed, 39 insertions, 3 deletions
diff --git a/mastoapi.c b/mastoapi.c
index 1b34187..23312f8 100644
--- a/mastoapi.c
+++ b/mastoapi.c
@@ -557,9 +557,45 @@ xs_dict *mastoapi_status(snac *snac, const xs_dict *msg)
557 557
558 st = xs_dict_append(st, "media_attachments", matt); 558 st = xs_dict_append(st, "media_attachments", matt);
559 559
560 st = xs_dict_append(st, "mentions", el); 560 {
561 st = xs_dict_append(st, "tags", el); 561 xs *ml = xs_list_new();
562 st = xs_dict_append(st, "emojis", el); 562 xs *htl = xs_list_new();
563 xs *eml = xs_list_new();
564 xs_list *p = xs_dict_get(msg, "tag");
565 xs_dict *v;
566 int n = 0;
567
568 while (xs_list_iter(&p, &v)) {
569 const char *type = xs_dict_get(v, "type");
570
571 if (xs_is_null(type))
572 continue;
573
574 xs *d1 = xs_dict_new();
575
576 if (strcmp(type, "Mention") == 0) {
577 const char *name = xs_dict_get(v, "name");
578 const char *href = xs_dict_get(v, "href");
579
580 if (!xs_is_null(name) && !xs_is_null(href) &&
581 strcmp(href, snac->actor) != 0) {
582 xs *nm = xs_strip_chars_i(xs_dup(name), "@");
583
584 xs *id = xs_fmt("%d", n++);
585 d1 = xs_dict_append(d1, "id", id);
586 d1 = xs_dict_append(d1, "username", nm);
587 d1 = xs_dict_append(d1, "acct", nm);
588 d1 = xs_dict_append(d1, "url", href);
589
590 ml = xs_list_append(ml, d1);
591 }
592 }
593 }
594
595 st = xs_dict_append(st, "mentions", ml);
596 st = xs_dict_append(st, "tags", htl);
597 st = xs_dict_append(st, "emojis", eml);
598 }
563 599
564 xs_free(idx); 600 xs_free(idx);
565 xs_free(ixc); 601 xs_free(ixc);