diff --git a/activitypub.c b/activitypub.c index f9e7077..10e0e64 100644 --- a/activitypub.c +++ b/activitypub.c @@ -143,8 +143,6 @@ int actor_request(snac *snac, const char *actor, xs_dict **data) } -void timeline_request_replies(snac *user, const char *id); - int timeline_request(snac *snac, char **id, xs_str **wrk) /* ensures that an entry and its ancestors are in the timeline */ { @@ -191,7 +189,7 @@ int timeline_request(snac *snac, char **id, xs_str **wrk) } } - timeline_request_replies(snac, *id); + enqueue_request_replies(snac, *id); } return status; @@ -1679,7 +1677,14 @@ void process_user_queue_item(snac *snac, xs_dict *q_item) update_question(snac, id); } else - snac_log(snac, xs_fmt("unexpected q_item type '%s'", type)); + if (strcmp(type, "request_replies") == 0) { + const char *id = xs_dict_get(q_item, "message"); + + if (!xs_is_null(id)) + timeline_request_replies(snac, id); + } + else + snac_log(snac, xs_fmt("unexpected user q_item type '%s'", type)); } diff --git a/data.c b/data.c index 27f62a9..8da0888 100644 --- a/data.c +++ b/data.c @@ -1935,6 +1935,19 @@ void enqueue_close_question(snac *user, const char *id, int end_secs) } +void enqueue_request_replies(snac *user, const char *id) +/* enqueues a request for the replies of a message */ +{ + xs *qmsg = _new_qmsg("request_replies", id, 0); + char *ntid = xs_dict_get(qmsg, "ntid"); + xs *fn = xs_fmt("%s/queue/%s.json", user->basedir, ntid); + + qmsg = _enqueue_put(fn, qmsg); + + snac_debug(user, 0, xs_fmt("enqueue_request_replies %s", id)); +} + + int was_question_voted(snac *user, const char *id) /* returns true if the user voted in this poll */ { diff --git a/snac.h b/snac.h index ef2c3ac..f3ed48c 100644 --- a/snac.h +++ b/snac.h @@ -165,6 +165,7 @@ void enqueue_email(xs_str *msg, int retries); void enqueue_telegram(const xs_str *msg, const char *bot, const char *chat_id); void enqueue_message(snac *snac, char *msg); void enqueue_close_question(snac *user, const char *id, int end_secs); +void enqueue_request_replies(snac *user, const char *id); int was_question_voted(snac *user, const char *id); xs_list *user_queue(snac *snac); @@ -213,6 +214,7 @@ xs_dict *msg_question(snac *user, const char *content, xs_list *attach, int activitypub_request(snac *snac, const char *url, xs_dict **data); int actor_request(snac *snac, const char *actor, xs_dict **data); +void timeline_request_replies(snac *user, const char *id); int send_to_inbox_raw(const char *keyid, const char *seckey, const xs_str *inbox, const xs_dict *msg, xs_val **payload, int *p_size, int timeout);