Slon/Modules/ActivityPub: Associate replies with known statuses
This commit is contained in:
parent
2f879bc9ef
commit
b487e381e8
1 changed files with 23 additions and 0 deletions
|
@ -628,6 +628,22 @@ JsonObject* @slon_activitypub_get_account_for_remote_actor(SlonHttpSession* sess
|
|||
return account;
|
||||
}
|
||||
|
||||
U8* @slon_activitypub_status_id_by_uri(U8* uri, JsonArray* statuses)
|
||||
{
|
||||
if (!uri || !statuses) {
|
||||
return NULL;
|
||||
}
|
||||
I64 i;
|
||||
JsonObject* status;
|
||||
for (i = 0; i < statuses->length; i++) {
|
||||
status = statuses->@(i);
|
||||
if (status->@("uri") && !StrICmp(status->@("uri"), uri)) {
|
||||
return status->@("id");
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
U0 @slon_activitypub_users_inbox(SlonHttpSession* session, U8* user)
|
||||
{
|
||||
SLON_SCRATCH_BUFFER_AND_REQUEST_JSON
|
||||
|
@ -790,6 +806,13 @@ U0 @slon_activitypub_users_inbox(SlonHttpSession* session, U8* user)
|
|||
}
|
||||
}
|
||||
|
||||
if (request_json->o("object")->@("inReplyTo") || request_json->o("object")->@("inReplyToAtomUri")) {
|
||||
U8* reply_to_post_id = @slon_activitypub_status_id_by_uri(request_json->o("object")->@("inReplyTo"), db->o("timelines")->o("home")->a(account->@("id")));
|
||||
if (reply_to_post_id) {
|
||||
new_status->set("in_reply_to_id", reply_to_post_id, JSON_STRING);
|
||||
}
|
||||
}
|
||||
|
||||
new_status->set("id", id, JSON_STRING);
|
||||
new_status->set("created_at", request_json->@("published"), JSON_STRING);
|
||||
new_status->set("content", request_json->o("object")->@("content"), JSON_STRING);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue