summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar default2025-04-01 06:32:53 +0200
committerGravatar default2025-04-01 06:32:53 +0200
commit9b2d0381ba734102c20d2111f0a2b64a3c438ef7 (patch)
treed969b47e718d7efe53fafe648a363a198a01e4f3
parentAdded more scheduling code. (diff)
downloadsnac2-9b2d0381ba734102c20d2111f0a2b64a3c438ef7.tar.gz
snac2-9b2d0381ba734102c20d2111f0a2b64a3c438ef7.tar.xz
snac2-9b2d0381ba734102c20d2111f0a2b64a3c438ef7.zip
More scheduled post code.
-rw-r--r--activitypub.c2
-rw-r--r--data.c29
-rw-r--r--snac.h3
3 files changed, 32 insertions, 2 deletions
diff --git a/activitypub.c b/activitypub.c
index c00c371..4c22c25 100644
--- a/activitypub.c
+++ b/activitypub.c
@@ -2759,6 +2759,8 @@ int process_user_queue(snac *snac)
2759 cnt++; 2759 cnt++;
2760 } 2760 }
2761 2761
2762 scheduled_process(snac);
2763
2762 return cnt; 2764 return cnt;
2763} 2765}
2764 2766
diff --git a/data.c b/data.c
index 8f68ee2..6661472 100644
--- a/data.c
+++ b/data.c
@@ -1966,6 +1966,33 @@ xs_list *scheduled_list(snac *user)
1966} 1966}
1967 1967
1968 1968
1969void scheduled_process(snac *user)
1970/* processes the scheduled list, sending those ready to be sent */
1971{
1972 xs *posts = scheduled_list(user);
1973 const char *md5;
1974 xs *right_now = xs_str_utctime(0, ISO_DATE_SPEC);
1975
1976 xs_list_foreach(posts, md5) {
1977 xs *msg = NULL;
1978
1979 if (valid_status(object_get_by_md5(md5, &msg))) {
1980 if (strcmp(xs_dict_get(msg, "published"), right_now) < 0) {
1981 /* due date! */
1982 const char *id = xs_dict_get(msg, "id");
1983
1984 timeline_add(user, id, msg);
1985
1986 xs *c_msg = msg_create(user, msg);
1987 enqueue_message(user, c_msg);
1988
1989 schedule_del(user, id);
1990 }
1991 }
1992 }
1993}
1994
1995
1969/** hiding **/ 1996/** hiding **/
1970 1997
1971xs_str *_hidden_fn(snac *snac, const char *id) 1998xs_str *_hidden_fn(snac *snac, const char *id)
@@ -3734,7 +3761,7 @@ void purge_user(snac *snac)
3734 _purge_user_subdir(snac, "public", pub_days); 3761 _purge_user_subdir(snac, "public", pub_days);
3735 3762
3736 const char *idxs[] = { "followers.idx", "private.idx", "public.idx", 3763 const char *idxs[] = { "followers.idx", "private.idx", "public.idx",
3737 "pinned.idx", "bookmark.idx", "draft.idx", NULL }; 3764 "pinned.idx", "bookmark.idx", "draft.idx", "sched.idx", NULL };
3738 3765
3739 for (n = 0; idxs[n]; n++) { 3766 for (n = 0; idxs[n]; n++) {
3740 xs *idx = xs_fmt("%s/%s", snac->basedir, idxs[n]); 3767 xs *idx = xs_fmt("%s/%s", snac->basedir, idxs[n]);
diff --git a/snac.h b/snac.h
index 7e44039..0d2aafe 100644
--- a/snac.h
+++ b/snac.h
@@ -1,7 +1,7 @@
1/* snac - A simple, minimalistic ActivityPub instance */ 1/* snac - A simple, minimalistic ActivityPub instance */
2/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */ 2/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */
3 3
4#define VERSION "2.74" 4#define VERSION "2.75-dev"
5 5
6#define USER_AGENT "snac/" VERSION 6#define USER_AGENT "snac/" VERSION
7 7
@@ -209,6 +209,7 @@ int is_scheduled(snac *user, const char *id);
209void schedule_del(snac *user, const char *id); 209void schedule_del(snac *user, const char *id);
210void schedule_add(snac *user, const char *id, const xs_dict *msg); 210void schedule_add(snac *user, const char *id, const xs_dict *msg);
211xs_list *scheduled_list(snac *user); 211xs_list *scheduled_list(snac *user);
212void scheduled_process(snac *user);
212 213
213int limited(snac *user, const char *id, int cmd); 214int limited(snac *user, const char *id, int cmd);
214#define is_limited(user, id) limited((user), (id), 0) 215#define is_limited(user, id) limited((user), (id), 0)