From 9e7a77c10f0bf3e4d9c99ff8c188476ca9c62a92 Mon Sep 17 00:00:00 2001 From: default Date: Fri, 14 Apr 2023 19:39:31 +0200 Subject: [PATCH] New mastoapi to clear all notifications. --- data.c | 13 +++++++++++++ mastoapi.c | 13 +++++++++++++ snac.h | 1 + 3 files changed, 27 insertions(+) diff --git a/data.c b/data.c index 9f2e462..4e5696e 100644 --- a/data.c +++ b/data.c @@ -1595,6 +1595,19 @@ xs_list *notify_list(snac *snac, int new_only) } +void notify_clear(snac *snac) +/* clears all notifications */ +{ + xs *spec = xs_fmt("%s/notify/" "*", snac->basedir); + xs *lst = xs_glob(spec, 0, 0); + xs_list *p = lst; + xs_str *v; + + while (xs_list_iter(&p, &v)) + unlink(v); +} + + /** the queue **/ static xs_dict *_enqueue_put(const char *fn, xs_dict *msg) diff --git a/mastoapi.c b/mastoapi.c index f9141d0..d07d012 100644 --- a/mastoapi.c +++ b/mastoapi.c @@ -1290,6 +1290,19 @@ int mastoapi_post_handler(const xs_dict *req, const char *q_path, else status = 401; } + else + if (strcmp(cmd, "/notifications/clear") == 0) { + if (logged_in) { + notify_clear(&snac); + timeline_touch(&snac); + + *body = xs_dup("{}"); + *ctype = "application/json"; + status = 200; + } + else + status = 401; + } /* user cleanup */ if (logged_in) diff --git a/snac.h b/snac.h index 17bd361..d65b5ac 100644 --- a/snac.h +++ b/snac.h @@ -143,6 +143,7 @@ void notify_add(snac *snac, const char *type, const char *utype, const char *actor, const char *objid); xs_dict *notify_get(snac *snac, const char *id); xs_list *notify_list(snac *snac, int new_only); +void notify_clear(snac *snac); void inbox_add(const char *inbox); void inbox_add_by_actor(const xs_dict *actor);