From 4fca7c8a7ea2ee1373827c1e4d3726c8e763e2cc Mon Sep 17 00:00:00 2001 From: default Date: Sun, 23 Apr 2023 08:51:02 +0200 Subject: Added mastoapi unfollow. --- data.c | 2 +- mastoapi.c | 16 ++++++++++++++++ snac.h | 2 +- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/data.c b/data.c index 8332ec3..73244a5 100644 --- a/data.c +++ b/data.c @@ -1125,7 +1125,7 @@ int following_check(snac *snac, const char *actor) } -int following_get(snac *snac, char *actor, d_char **data) +int following_get(snac *snac, const char *actor, d_char **data) /* returns the 'Follow' object */ { xs *fn = _following_fn(snac, actor); diff --git a/mastoapi.c b/mastoapi.c index 894996d..ce1e547 100644 --- a/mastoapi.c +++ b/mastoapi.c @@ -1644,6 +1644,22 @@ int mastoapi_post_handler(const xs_dict *req, const char *q_path, } else if (strcmp(opt, "unfollow") == 0) { + if (valid_status(object_get_by_md5(md5, &actor_o))) { + const char *actor = xs_dict_get(actor_o, "id"); + + /* get the following object */ + xs *object = NULL; + + if (valid_status(following_get(&snac, actor, &object))) { + xs *msg = msg_undo(&snac, xs_dict_get(object, "object")); + + following_del(&snac, actor); + + enqueue_output_by_actor(&snac, msg, actor, 0); + + rsp = mastoapi_relationship(&snac, md5); + } + } } } diff --git a/snac.h b/snac.h index 689dd54..224dec2 100644 --- a/snac.h +++ b/snac.h @@ -115,7 +115,7 @@ d_char *local_list(snac *snac, int max); int following_add(snac *snac, const char *actor, const xs_dict *msg); int following_del(snac *snac, char *actor); int following_check(snac *snac, const char *actor); -int following_get(snac *snac, char *actor, d_char **data); +int following_get(snac *snac, const char *actor, d_char **data); d_char *following_list(snac *snac); void mute(snac *snac, const char *actor); -- cgit v1.2.3