mirror of
https://codeberg.org/grunfink/snac2.git
synced 2024-11-22 13:25:04 +00:00
Fixed some bugs in update_question().
This commit is contained in:
parent
8551c691fb
commit
e913d03f02
1 changed files with 19 additions and 4 deletions
|
@ -1000,15 +1000,20 @@ int update_question(snac *user, const char *id)
|
||||||
chld = object_children(id);
|
chld = object_children(id);
|
||||||
p = chld;
|
p = chld;
|
||||||
while (xs_list_iter(&p, &v)) {
|
while (xs_list_iter(&p, &v)) {
|
||||||
const char *name = xs_dict_get(v, "name");
|
xs *obj = NULL;
|
||||||
|
|
||||||
|
if (!valid_status(object_get_by_md5(v, &obj)))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
const char *name = xs_dict_get(obj, "name");
|
||||||
if (name) {
|
if (name) {
|
||||||
/* get the current count */
|
/* get the current count */
|
||||||
const xs_number *cnt = xs_dict_get(rcnt, "name");
|
const xs_number *cnt = xs_dict_get(rcnt, name);
|
||||||
|
|
||||||
if (xs_type(cnt) == XSTYPE_NUMBER) {
|
if (xs_type(cnt) == XSTYPE_NUMBER) {
|
||||||
/* if it exists, increment */
|
/* if it exists, increment */
|
||||||
xs *ucnt = xs_number_new(xs_number_get(cnt) + 1);
|
xs *ucnt = xs_number_new(xs_number_get(cnt) + 1);
|
||||||
rcnt = xs_dict_set(rcnt, "name", ucnt);
|
rcnt = xs_dict_set(rcnt, name, ucnt);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1156,7 +1161,11 @@ int process_input_message(snac *snac, xs_dict *msg, xs_dict *req)
|
||||||
int a_status;
|
int a_status;
|
||||||
int do_notify = 0;
|
int do_notify = 0;
|
||||||
|
|
||||||
if (xs_is_null(actor) || xs_is_null(type)) {
|
/* question votes may not have a type */
|
||||||
|
if (xs_is_null(type))
|
||||||
|
type = "Note";
|
||||||
|
|
||||||
|
if (xs_is_null(actor)) {
|
||||||
snac_debug(snac, 0, xs_fmt("malformed message"));
|
snac_debug(snac, 0, xs_fmt("malformed message"));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -1268,6 +1277,12 @@ int process_input_message(snac *snac, xs_dict *msg, xs_dict *req)
|
||||||
snac_log(snac, xs_fmt("new 'Note' %s %s", actor, id));
|
snac_log(snac, xs_fmt("new 'Note' %s %s", actor, id));
|
||||||
do_notify = 1;
|
do_notify = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* if it has a "name" field, it may be a vote for a question */
|
||||||
|
const char *name = xs_dict_get(object, "name");
|
||||||
|
|
||||||
|
if (!xs_is_null(name) && *name && !xs_is_null(in_reply_to) && *in_reply_to)
|
||||||
|
update_question(snac, in_reply_to);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if (strcmp(utype, "Question") == 0) {
|
if (strcmp(utype, "Question") == 0) {
|
||||||
|
|
Loading…
Reference in a new issue