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 }