summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar default2023-09-18 22:52:27 +0200
committerGravatar default2023-09-18 22:52:27 +0200
commitf8c62fe2102c28e9a59bf4cf14ad6b893753a8d3 (patch)
treea1e664f31e7309a7b065a4f78abee9d7e62c4bd9
parentAlso purge the 'pinned' folder. (diff)
downloadsnac2-f8c62fe2102c28e9a59bf4cf14ad6b893753a8d3.tar.gz
snac2-f8c62fe2102c28e9a59bf4cf14ad6b893753a8d3.tar.xz
snac2-f8c62fe2102c28e9a59bf4cf14ad6b893753a8d3.zip
Pinned posts are never purged.
-rw-r--r--data.c8
-rw-r--r--html.c2
-rw-r--r--snac.h1
3 files changed, 9 insertions, 2 deletions
diff --git a/data.c b/data.c
index 2e9f3b7..3b22114 100644
--- a/data.c
+++ b/data.c
@@ -1343,6 +1343,13 @@ int is_pinned(snac *user, const char *id)
1343} 1343}
1344 1344
1345 1345
1346int is_pinned_by_md5(snac *user, const char *md5)
1347{
1348 xs *fn = xs_fmt("%s/pinned/%s.json", user->basedir, md5);
1349 return !!(mtime(fn) != 0.0);
1350}
1351
1352
1346int pin(snac *user, const char *id) 1353int pin(snac *user, const char *id)
1347/* pins a message */ 1354/* pins a message */
1348{ 1355{
@@ -2436,7 +2443,6 @@ void purge_user(snac *snac)
2436 _purge_user_subdir(snac, "hidden", priv_days); 2443 _purge_user_subdir(snac, "hidden", priv_days);
2437 _purge_user_subdir(snac, "private", priv_days); 2444 _purge_user_subdir(snac, "private", priv_days);
2438 2445
2439 _purge_user_subdir(snac, "pinned", pub_days);
2440 _purge_user_subdir(snac, "public", pub_days); 2446 _purge_user_subdir(snac, "public", pub_days);
2441 2447
2442 const char *idxs[] = { "followers.idx", "private.idx", "public.idx", "pinned.idx", NULL }; 2448 const char *idxs[] = { "followers.idx", "private.idx", "public.idx", "pinned.idx", NULL };
diff --git a/html.c b/html.c
index f967a1e..e8d31a3 100644
--- a/html.c
+++ b/html.c
@@ -1563,7 +1563,7 @@ xs_str *html_timeline(snac *user, const xs_list *list, int local, int skip, int
1563 xs *msg = NULL; 1563 xs *msg = NULL;
1564 int status; 1564 int status;
1565 1565
1566 if (user) 1566 if (user && !is_pinned_by_md5(user, v))
1567 status = timeline_get_by_md5(user, v, &msg); 1567 status = timeline_get_by_md5(user, v, &msg);
1568 else 1568 else
1569 status = object_get_by_md5(v, &msg); 1569 status = object_get_by_md5(v, &msg);
diff --git a/snac.h b/snac.h
index e0d9fcc..9b7f37a 100644
--- a/snac.h
+++ b/snac.h
@@ -130,6 +130,7 @@ int is_muted(snac *snac, const char *actor);
130int pin(snac *user, const char *id); 130int pin(snac *user, const char *id);
131int unpin(snac *user, const char *id); 131int unpin(snac *user, const char *id);
132int is_pinned(snac *user, const char *id); 132int is_pinned(snac *user, const char *id);
133int is_pinned_by_md5(snac *user, const char *md5);
133xs_list *pinned_list(snac *user); 134xs_list *pinned_list(snac *user);
134 135
135int limited(snac *user, const char *id, int cmd); 136int limited(snac *user, const char *id, int cmd);