commit 3b72b0f
default
·
2023-05-31 20:06:31 +0000 UTC
parent 796a111
New function was_question_voted().
3 files changed,
+27,
-16
M
data.c
+24,
-0
1@@ -1935,6 +1935,30 @@ void enqueue_close_question(snac *user, const char *id, int end_secs)
2 }
3
4
5+int was_question_voted(snac *user, const char *id)
6+/* returns true if the user voted in this poll */
7+{
8+ xs *children = object_children(id);
9+ int voted = 0;
10+ xs_list *p;
11+ xs_str *md5;
12+
13+ p = children;
14+ while (xs_list_iter(&p, &md5)) {
15+ xs *obj = NULL;
16+
17+ if (valid_status(object_get_by_md5(md5, &obj))) {
18+ if (strcmp(xs_dict_get(obj, "attributedTo"), user->actor) == 0) {
19+ voted = 1;
20+ break;
21+ }
22+ }
23+ }
24+
25+ return voted;
26+}
27+
28+
29 xs_list *user_queue(snac *snac)
30 /* returns a list with filenames that can be dequeued */
31 {
+2,
-16
1@@ -598,7 +598,6 @@ xs_dict *mastoapi_poll(snac *snac, const xs_dict *msg)
2 xs *f = xs_val_new(XSTYPE_FALSE);
3 xs *t = xs_val_new(XSTYPE_TRUE);
4 xs_list *opts = NULL;
5- xs_list *p;
6 xs_val *v;
7 int num_votes = 0;
8 xs *options = xs_list_new();
9@@ -638,21 +637,8 @@ xs_dict *mastoapi_poll(snac *snac, const xs_dict *msg)
10 xs *vc = xs_number_new(num_votes);
11 poll = xs_dict_append(poll, "votes_count", vc);
12
13- xs *children = object_children(xs_dict_get(msg, "id"));
14- int voted = 0;
15- p = children;
16- while (xs_list_iter(&p, &v)) {
17- xs *obj = NULL;
18-
19- if (valid_status(object_get_by_md5(v, &obj))) {
20- if (strcmp(xs_dict_get(obj, "attributedTo"), snac->actor) == 0) {
21- voted = 1;
22- break;
23- }
24- }
25- }
26-
27- poll = xs_dict_append(poll, "voted", voted ? t : f);
28+ poll = xs_dict_append(poll, "voted",
29+ was_question_voted(snac, xs_dict_get(msg, "id")) ? t : f);
30 }
31
32 return poll;
M
snac.h
+1,
-0
1@@ -166,6 +166,7 @@ void enqueue_email(xs_str *msg, int retries);
2 void enqueue_telegram(const xs_str *msg, const char *bot, const char *chat_id);
3 void enqueue_message(snac *snac, char *msg);
4 void enqueue_close_question(snac *user, const char *id, int end_secs);
5+int was_question_voted(snac *user, const char *id);
6
7 xs_list *user_queue(snac *snac);
8 xs_list *queue(void);