commit f8c62fe
default
·
2023-09-18 20:52:27 +0000 UTC
parent 5afa5ab
Pinned posts are never purged.
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);