commit 182ba33
default
·
2023-06-01 06:13:58 +0000 UTC
parent 91ed98d
Minor refactoring to mastoapi_poll().
1 files changed,
+42,
-48
+42,
-48
1@@ -590,56 +590,50 @@ xs_dict *mastoapi_account(const xs_dict *actor)
2 xs_dict *mastoapi_poll(snac *snac, const xs_dict *msg)
3 /* creates a mastoapi Poll object */
4 {
5- xs_dict *poll = NULL;
6-
7- /* is it a poll? */
8- if (strcmp(xs_dict_get(msg, "type"), "Question") == 0) {
9- xs *mid = mastoapi_id(msg);
10- xs *f = xs_val_new(XSTYPE_FALSE);
11- xs *t = xs_val_new(XSTYPE_TRUE);
12- xs_list *opts = NULL;
13- xs_val *v;
14- int num_votes = 0;
15- xs *options = xs_list_new();
16-
17- poll = xs_dict_new();
18-
19- poll = xs_dict_append(poll, "id", mid);
20- poll = xs_dict_append(poll, "expires_at", xs_dict_get(msg, "endTime"));
21- poll = xs_dict_append(poll, "expired", xs_dict_get(msg, "closed") != NULL ? t : f);
22-
23- if ((opts = xs_dict_get(msg, "oneOf")) != NULL)
24- poll = xs_dict_append(poll, "multiple", f);
25- else {
26- opts = xs_dict_get(msg, "anyOf");
27- poll = xs_dict_append(poll, "multiple", t);
28- }
29+ xs_dict *poll = xs_dict_new();
30+ xs *mid = mastoapi_id(msg);
31+ xs *f = xs_val_new(XSTYPE_FALSE);
32+ xs *t = xs_val_new(XSTYPE_TRUE);
33+ xs_list *opts = NULL;
34+ xs_val *v;
35+ int num_votes = 0;
36+ xs *options = xs_list_new();
37+
38+ poll = xs_dict_append(poll, "id", mid);
39+ poll = xs_dict_append(poll, "expires_at", xs_dict_get(msg, "endTime"));
40+ poll = xs_dict_append(poll, "expired", xs_dict_get(msg, "closed") != NULL ? t : f);
41+
42+ if ((opts = xs_dict_get(msg, "oneOf")) != NULL)
43+ poll = xs_dict_append(poll, "multiple", f);
44+ else {
45+ opts = xs_dict_get(msg, "anyOf");
46+ poll = xs_dict_append(poll, "multiple", t);
47+ }
48
49- while (xs_list_iter(&opts, &v)) {
50- const char *title = xs_dict_get(v, "name");
51- const char *replies = xs_dict_get(v, "replies");
52+ while (xs_list_iter(&opts, &v)) {
53+ const char *title = xs_dict_get(v, "name");
54+ const char *replies = xs_dict_get(v, "replies");
55
56- if (title && replies) {
57- const char *votes_count = xs_dict_get(replies, "totalItems");
58+ if (title && replies) {
59+ const char *votes_count = xs_dict_get(replies, "totalItems");
60
61- if (xs_type(votes_count) == XSTYPE_NUMBER) {
62- xs *d = xs_dict_new();
63- d = xs_dict_append(d, "title", title);
64- d = xs_dict_append(d, "votes_count", votes_count);
65+ if (xs_type(votes_count) == XSTYPE_NUMBER) {
66+ xs *d = xs_dict_new();
67+ d = xs_dict_append(d, "title", title);
68+ d = xs_dict_append(d, "votes_count", votes_count);
69
70- options = xs_list_append(options, d);
71- num_votes += xs_number_get(votes_count);
72- }
73+ options = xs_list_append(options, d);
74+ num_votes += xs_number_get(votes_count);
75 }
76 }
77+ }
78
79- poll = xs_dict_append(poll, "options", options);
80- xs *vc = xs_number_new(num_votes);
81- poll = xs_dict_append(poll, "votes_count", vc);
82+ poll = xs_dict_append(poll, "options", options);
83+ xs *vc = xs_number_new(num_votes);
84+ poll = xs_dict_append(poll, "votes_count", vc);
85
86- poll = xs_dict_append(poll, "voted",
87- was_question_voted(snac, xs_dict_get(msg, "id")) ? t : f);
88- }
89+ poll = xs_dict_append(poll, "voted",
90+ was_question_voted(snac, xs_dict_get(msg, "id")) ? t : f);
91
92 return poll;
93 }
94@@ -655,6 +649,9 @@ xs_dict *mastoapi_status(snac *snac, const xs_dict *msg)
95 if (actor == NULL)
96 return NULL;
97
98+ const char *type = xs_dict_get(msg, "type");
99+ const char *id = xs_dict_get(msg, "id");
100+
101 xs *acct = mastoapi_account(actor);
102
103 xs *f = xs_val_new(XSTYPE_FALSE);
104@@ -662,9 +659,7 @@ xs_dict *mastoapi_status(snac *snac, const xs_dict *msg)
105 xs *n = xs_val_new(XSTYPE_NULL);
106 xs *idx = NULL;
107 xs *ixc = NULL;
108-
109 char *tmp;
110- char *id = xs_dict_get(msg, "id");
111 xs *mid = mastoapi_id(msg);
112
113 xs_dict *st = xs_dict_new();
114@@ -861,11 +856,10 @@ xs_dict *mastoapi_status(snac *snac, const xs_dict *msg)
115
116 st = xs_dict_append(st, "edited_at", tmp);
117
118- /* build the poll object, if applicable */
119- xs *poll = mastoapi_poll(snac, msg);
120-
121- if (poll)
122+ if (strcmp(type, "Question") == 0) {
123+ xs *poll = mastoapi_poll(snac, msg);
124 st = xs_dict_append(st, "poll", poll);
125+ }
126
127 return st;
128 }