snac2

Fork of https://codeberg.org/grunfink/snac2
git clone https://git.inz.fi/snac2
Log | Files | Refs | README | LICENSE

commit 9e7a77c10f0bf3e4d9c99ff8c188476ca9c62a92
parent 58b2a47631363e9d35d8194694483b53ed06b03c
Author: default <nobody@localhost>
Date:   Fri, 14 Apr 2023 19:39:31 +0200

New mastoapi to clear all notifications.

Diffstat:
Mdata.c | 13+++++++++++++
Mmastoapi.c | 13+++++++++++++
Msnac.h | 1+
3 files changed, 27 insertions(+), 0 deletions(-)

diff --git 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 @@ -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 @@ -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);