Преглед изворни кода

Undo for Likes and Announces are no longer dropped.

default пре 2 година
родитељ
комит
46f2e324d8
2 измењених фајлова са 15 додато и 0 уклоњено
  1. 14 0
      activitypub.c
  2. 1 0
      data.c

+ 14 - 0
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));
     }

+ 1 - 0
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));