Pinned posts are never purged.

This commit is contained in:
default 2023-09-18 22:52:27 +02:00
parent 5afa5ab071
commit f8c62fe210
3 changed files with 9 additions and 2 deletions

8
data.c
View file

@ -1343,6 +1343,13 @@ int is_pinned(snac *user, const char *id)
} }
int is_pinned_by_md5(snac *user, const char *md5)
{
xs *fn = xs_fmt("%s/pinned/%s.json", user->basedir, md5);
return !!(mtime(fn) != 0.0);
}
int pin(snac *user, const char *id) int pin(snac *user, const char *id)
/* pins a message */ /* pins a message */
{ {
@ -2436,7 +2443,6 @@ void purge_user(snac *snac)
_purge_user_subdir(snac, "hidden", priv_days); _purge_user_subdir(snac, "hidden", priv_days);
_purge_user_subdir(snac, "private", priv_days); _purge_user_subdir(snac, "private", priv_days);
_purge_user_subdir(snac, "pinned", pub_days);
_purge_user_subdir(snac, "public", pub_days); _purge_user_subdir(snac, "public", pub_days);
const char *idxs[] = { "followers.idx", "private.idx", "public.idx", "pinned.idx", NULL }; const char *idxs[] = { "followers.idx", "private.idx", "public.idx", "pinned.idx", NULL };

2
html.c
View file

@ -1563,7 +1563,7 @@ xs_str *html_timeline(snac *user, const xs_list *list, int local, int skip, int
xs *msg = NULL; xs *msg = NULL;
int status; int status;
if (user) if (user && !is_pinned_by_md5(user, v))
status = timeline_get_by_md5(user, v, &msg); status = timeline_get_by_md5(user, v, &msg);
else else
status = object_get_by_md5(v, &msg); status = object_get_by_md5(v, &msg);

1
snac.h
View file

@ -130,6 +130,7 @@ int is_muted(snac *snac, const char *actor);
int pin(snac *user, const char *id); int pin(snac *user, const char *id);
int unpin(snac *user, const char *id); int unpin(snac *user, const char *id);
int is_pinned(snac *user, const char *id); int is_pinned(snac *user, const char *id);
int is_pinned_by_md5(snac *user, const char *md5);
xs_list *pinned_list(snac *user); xs_list *pinned_list(snac *user);
int limited(snac *user, const char *id, int cmd); int limited(snac *user, const char *id, int cmd);