summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data.c24
-rw-r--r--mastoapi.c18
-rw-r--r--snac.h1
3 files changed, 27 insertions, 16 deletions
diff --git a/data.c b/data.c
index d7b0ff6..241ffbe 100644
--- a/data.c
+++ b/data.c
@@ -1935,6 +1935,30 @@ void enqueue_close_question(snac *user, const char *id, int end_secs)
1935} 1935}
1936 1936
1937 1937
1938int was_question_voted(snac *user, const char *id)
1939/* returns true if the user voted in this poll */
1940{
1941 xs *children = object_children(id);
1942 int voted = 0;
1943 xs_list *p;
1944 xs_str *md5;
1945
1946 p = children;
1947 while (xs_list_iter(&p, &md5)) {
1948 xs *obj = NULL;
1949
1950 if (valid_status(object_get_by_md5(md5, &obj))) {
1951 if (strcmp(xs_dict_get(obj, "attributedTo"), user->actor) == 0) {
1952 voted = 1;
1953 break;
1954 }
1955 }
1956 }
1957
1958 return voted;
1959}
1960
1961
1938xs_list *user_queue(snac *snac) 1962xs_list *user_queue(snac *snac)
1939/* returns a list with filenames that can be dequeued */ 1963/* returns a list with filenames that can be dequeued */
1940{ 1964{
diff --git a/mastoapi.c b/mastoapi.c
index fb76b56..a47c7e0 100644
--- a/mastoapi.c
+++ b/mastoapi.c
@@ -598,7 +598,6 @@ xs_dict *mastoapi_poll(snac *snac, const xs_dict *msg)
598 xs *f = xs_val_new(XSTYPE_FALSE); 598 xs *f = xs_val_new(XSTYPE_FALSE);
599 xs *t = xs_val_new(XSTYPE_TRUE); 599 xs *t = xs_val_new(XSTYPE_TRUE);
600 xs_list *opts = NULL; 600 xs_list *opts = NULL;
601 xs_list *p;
602 xs_val *v; 601 xs_val *v;
603 int num_votes = 0; 602 int num_votes = 0;
604 xs *options = xs_list_new(); 603 xs *options = xs_list_new();
@@ -638,21 +637,8 @@ xs_dict *mastoapi_poll(snac *snac, const xs_dict *msg)
638 xs *vc = xs_number_new(num_votes); 637 xs *vc = xs_number_new(num_votes);
639 poll = xs_dict_append(poll, "votes_count", vc); 638 poll = xs_dict_append(poll, "votes_count", vc);
640 639
641 xs *children = object_children(xs_dict_get(msg, "id")); 640 poll = xs_dict_append(poll, "voted",
642 int voted = 0; 641 was_question_voted(snac, xs_dict_get(msg, "id")) ? t : f);
643 p = children;
644 while (xs_list_iter(&p, &v)) {
645 xs *obj = NULL;
646
647 if (valid_status(object_get_by_md5(v, &obj))) {
648 if (strcmp(xs_dict_get(obj, "attributedTo"), snac->actor) == 0) {
649 voted = 1;
650 break;
651 }
652 }
653 }
654
655 poll = xs_dict_append(poll, "voted", voted ? t : f);
656 } 642 }
657 643
658 return poll; 644 return poll;
diff --git a/snac.h b/snac.h
index 33f3a85..00bb59a 100644
--- a/snac.h
+++ b/snac.h
@@ -166,6 +166,7 @@ void enqueue_email(xs_str *msg, int retries);
166void enqueue_telegram(const xs_str *msg, const char *bot, const char *chat_id); 166void enqueue_telegram(const xs_str *msg, const char *bot, const char *chat_id);
167void enqueue_message(snac *snac, char *msg); 167void enqueue_message(snac *snac, char *msg);
168void enqueue_close_question(snac *user, const char *id, int end_secs); 168void enqueue_close_question(snac *user, const char *id, int end_secs);
169int was_question_voted(snac *user, const char *id);
169 170
170xs_list *user_queue(snac *snac); 171xs_list *user_queue(snac *snac);
171xs_list *queue(void); 172xs_list *queue(void);