Pārlūkot izejas kodu

mastoapi: 'unfavourite' and 'unreblog' actions now fully work.

default 2 gadi atpakaļ
vecāks
revīzija
877fb079f3
2 mainītis faili ar 17 papildinājumiem un 10 dzēšanām
  1. 3 3
      activitypub.c
  2. 14 7
      mastoapi.c

+ 3 - 3
activitypub.c

@@ -1186,11 +1186,11 @@ xs_dict *msg_repulsion(snac *user, char *id, char *type)
 
         /* copy the 'to' field */
         msg = xs_dict_set(msg, "to", xs_dict_get(object, "to"));
-
-        /* now we despise this */
-        object_unadmire(id, user->actor, *type == 'L' ? 1 : 0);
     }
 
+    /* now we despise this */
+    object_unadmire(id, user->actor, *type == 'L' ? 1 : 0);
+
     return msg;
 }
 

+ 14 - 7
mastoapi.c

@@ -2314,11 +2314,13 @@ int mastoapi_post_handler(const xs_dict *req, const char *q_path,
                     }
                     else
                     if (strcmp(op, "unfavourite") == 0) { /** **/
-                        /* partial support: as the original Like message
-                           is not stored anywhere here, it's not possible
-                           to send an Undo + Like; the only thing done here
-                           is to delete the actor from the list of likes */
-                        object_unadmire(id, snac.actor, 1);
+                        xs *n_msg = msg_repulsion(&snac, id, "Like");
+
+                        if (n_msg != NULL) {
+                            enqueue_message(&snac, n_msg);
+
+                            out = mastoapi_status(&snac, msg);
+                        }
                     }
                     else
                     if (strcmp(op, "reblog") == 0) { /** **/
@@ -2333,8 +2335,13 @@ int mastoapi_post_handler(const xs_dict *req, const char *q_path,
                     }
                     else
                     if (strcmp(op, "unreblog") == 0) { /** **/
-                        /* partial support: see comment in 'unfavourite' */
-                        object_unadmire(id, snac.actor, 0);
+                        xs *n_msg = msg_repulsion(&snac, id, "Announce");
+
+                        if (n_msg != NULL) {
+                            enqueue_message(&snac, n_msg);
+
+                            out = mastoapi_status(&snac, msg);
+                        }
                     }
                     else
                     if (strcmp(op, "bookmark") == 0) { /** **/