Procházet zdrojové kódy

More scheduled post code.

default před 1 rokem
rodič
revize
9b2d0381ba
3 změnil soubory, kde provedl 32 přidání a 2 odebrání
  1. 2 0
      activitypub.c
  2. 28 1
      data.c
  3. 2 1
      snac.h

+ 2 - 0
activitypub.c

@@ -2759,6 +2759,8 @@ int process_user_queue(snac *snac)
         cnt++;
     }
 
+    scheduled_process(snac);
+
     return cnt;
 }
 

+ 28 - 1
data.c

@@ -1966,6 +1966,33 @@ xs_list *scheduled_list(snac *user)
 }
 
 
+void scheduled_process(snac *user)
+/* processes the scheduled list, sending those ready to be sent */
+{
+    xs *posts = scheduled_list(user);
+    const char *md5;
+    xs *right_now = xs_str_utctime(0, ISO_DATE_SPEC);
+
+    xs_list_foreach(posts, md5) {
+        xs *msg = NULL;
+
+        if (valid_status(object_get_by_md5(md5, &msg))) {
+            if (strcmp(xs_dict_get(msg, "published"), right_now) < 0) {
+                /* due date! */
+                const char *id = xs_dict_get(msg, "id");
+
+                timeline_add(user, id, msg);
+
+                xs *c_msg = msg_create(user, msg);
+                enqueue_message(user, c_msg);
+
+                schedule_del(user, id);
+            }
+        }
+    }
+}
+
+
 /** hiding **/
 
 xs_str *_hidden_fn(snac *snac, const char *id)
@@ -3734,7 +3761,7 @@ void purge_user(snac *snac)
     _purge_user_subdir(snac, "public",  pub_days);
 
     const char *idxs[] = { "followers.idx", "private.idx", "public.idx",
-                           "pinned.idx", "bookmark.idx", "draft.idx", NULL };
+                           "pinned.idx", "bookmark.idx", "draft.idx", "sched.idx", NULL };
 
     for (n = 0; idxs[n]; n++) {
         xs *idx = xs_fmt("%s/%s", snac->basedir, idxs[n]);

+ 2 - 1
snac.h

@@ -1,7 +1,7 @@
 /* snac - A simple, minimalistic ActivityPub instance */
 /* copyright (c) 2022 - 2025 grunfink et al. / MIT license */
 
-#define VERSION "2.74"
+#define VERSION "2.75-dev"
 
 #define USER_AGENT "snac/" VERSION
 
@@ -209,6 +209,7 @@ int is_scheduled(snac *user, const char *id);
 void schedule_del(snac *user, const char *id);
 void schedule_add(snac *user, const char *id, const xs_dict *msg);
 xs_list *scheduled_list(snac *user);
+void scheduled_process(snac *user);
 
 int limited(snac *user, const char *id, int cmd);
 #define is_limited(user, id) limited((user), (id), 0)