commit 46f2e324d8df49af914ba5781f13337dea7dd6aa
parent 1a9bb5fd076a78bd336fc65aac6ee01f468eb4bd
Author: default <nobody@localhost>
Date: Thu, 11 Apr 2024 19:29:30 +0200
Undo for Likes and Announces are no longer dropped.
Diffstat:
2 files changed, 15 insertions(+), 0 deletions(-)
diff --git 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";
@@ -1953,6 +1955,18 @@ int process_input_message(snac *snac, xs_dict *msg, xs_dict *req)
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));
}
else
diff --git 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));