Disallow empty or repeated options in msg_question().

This commit is contained in:
default 2023-06-01 17:14:50 +02:00
parent af88b78478
commit e66b3ff8da

View file

@ -1057,6 +1057,7 @@ xs_dict *msg_question(snac *user, const char *content, xs_list *attach,
xs *ntid = tid(0);
xs_dict *msg = msg_note(user, content, NULL, NULL, attach, 0);
int max = 8;
xs_set seen;
msg = xs_dict_set(msg, "type", "Question");
@ -1068,7 +1069,10 @@ xs_dict *msg_question(snac *user, const char *content, xs_list *attach,
xs_str *v;
xs *replies = xs_json_loads("{\"type\":\"Collection\",\"totalItems\":0}");
while (max-- && xs_list_iter(&p, &v)) {
xs_set_init(&seen);
while (max && xs_list_iter(&p, &v)) {
if (*v) {
xs *v2 = xs_dup(v);
xs *d = xs_dict_new();
@ -1077,10 +1081,17 @@ xs_dict *msg_question(snac *user, const char *content, xs_list *attach,
v2 = xs_str_cat(v2, "...");
}
if (xs_set_add(&seen, v2) == 1) {
d = xs_dict_append(d, "name", v2);
d = xs_dict_append(d, "replies", replies);
o = xs_list_append(o, d);
max--;
}
}
}
xs_set_free(&seen);
msg = xs_dict_append(msg, multiple ? "anyOf" : "oneOf", o);