From 46f2e324d8df49af914ba5781f13337dea7dd6aa Mon Sep 17 00:00:00 2001 From: default Date: Thu, 11 Apr 2024 19:29:30 +0200 Subject: [PATCH] Undo for Likes and Announces are no longer dropped. --- activitypub.c | 14 ++++++++++++++ data.c | 1 + 2 files changed, 15 insertions(+) diff --git a/activitypub.c b/activitypub.c index 9a23e14..d75bbdd 100644 --- a/activitypub.c +++ b/activitypub.c @@ -1941,6 +1941,8 @@ int process_input_message(snac *snac, xs_dict *msg, xs_dict *req) } else if (strcmp(type, "Undo") == 0) { /** **/ + char *id = xs_dict_get(object, "object"); + if (xs_type(object) != XSTYPE_DICT) utype = "Follow"; @@ -1952,6 +1954,18 @@ int process_input_message(snac *snac, xs_dict *msg, xs_dict *req) else snac_log(snac, xs_fmt("error deleting follower %s", actor)); } + else + if (strcmp(utype, "Like") == 0) { /** **/ + int status = object_unadmire(id, actor, 1); + + snac_log(snac, xs_fmt("Unlike for %s %d", id, status)); + } + else + if (strcmp(utype, "Announce") == 0) { /** **/ + int status = object_unadmire(id, actor, 0); + + snac_log(snac, xs_fmt("Unboost for %s %d", id, status)); + } else snac_debug(snac, 1, xs_fmt("ignored 'Undo' for object type '%s'", utype)); } diff --git a/data.c b/data.c index 7dd7d19..5cf62e7 100644 --- a/data.c +++ b/data.c @@ -916,6 +916,7 @@ int object_unadmire(const char *id, const char *actor, int like) fn = xs_replace_i(fn, ".json", like ? "_l.idx" : "_a.idx"); status = index_del(fn, actor); + index_gc(fn); srv_debug(0, xs_fmt("object_unadmire (%s) %s %s %d", like ? "Like" : "Announce", actor, fn, status));