commit f8c62fe

default  ·  2023-09-18 20:52:27 +0000 UTC
parent 5afa5ab
Pinned posts are never purged.
3 files changed,  +9, -2
M data.c
M html.c
M snac.h
M data.c
+7, -1
 1@@ -1343,6 +1343,13 @@ int is_pinned(snac *user, const char *id)
 2 }
 3 
 4 
 5+int is_pinned_by_md5(snac *user, const char *md5)
 6+{
 7+    xs *fn = xs_fmt("%s/pinned/%s.json", user->basedir, md5);
 8+    return !!(mtime(fn) != 0.0);
 9+}
10+
11+
12 int pin(snac *user, const char *id)
13 /* pins a message */
14 {
15@@ -2436,7 +2443,6 @@ void purge_user(snac *snac)
16     _purge_user_subdir(snac, "hidden",  priv_days);
17     _purge_user_subdir(snac, "private", priv_days);
18 
19-    _purge_user_subdir(snac, "pinned",  pub_days);
20     _purge_user_subdir(snac, "public",  pub_days);
21 
22     const char *idxs[] = { "followers.idx", "private.idx", "public.idx", "pinned.idx", NULL };
M html.c
+1, -1
1@@ -1563,7 +1563,7 @@ xs_str *html_timeline(snac *user, const xs_list *list, int local, int skip, int
2         xs *msg = NULL;
3         int status;
4 
5-        if (user)
6+        if (user && !is_pinned_by_md5(user, v))
7             status = timeline_get_by_md5(user, v, &msg);
8         else
9             status = object_get_by_md5(v, &msg);
M snac.h
+1, -0
1@@ -130,6 +130,7 @@ int is_muted(snac *snac, const char *actor);
2 int pin(snac *user, const char *id);
3 int unpin(snac *user, const char *id);
4 int is_pinned(snac *user, const char *id);
5+int is_pinned_by_md5(snac *user, const char *md5);
6 xs_list *pinned_list(snac *user);
7 
8 int limited(snac *user, const char *id, int cmd);