diff options
| author | 2023-09-18 22:52:27 +0200 | |
|---|---|---|
| committer | 2023-09-18 22:52:27 +0200 | |
| commit | f8c62fe2102c28e9a59bf4cf14ad6b893753a8d3 (patch) | |
| tree | a1e664f31e7309a7b065a4f78abee9d7e62c4bd9 | |
| parent | Also purge the 'pinned' folder. (diff) | |
| download | snac2-f8c62fe2102c28e9a59bf4cf14ad6b893753a8d3.tar.gz snac2-f8c62fe2102c28e9a59bf4cf14ad6b893753a8d3.tar.xz snac2-f8c62fe2102c28e9a59bf4cf14ad6b893753a8d3.zip | |
Pinned posts are never purged.
| -rw-r--r-- | data.c | 8 | ||||
| -rw-r--r-- | html.c | 2 | ||||
| -rw-r--r-- | snac.h | 1 |
3 files changed, 9 insertions, 2 deletions
| @@ -1343,6 +1343,13 @@ int is_pinned(snac *user, const char *id) | |||
| 1343 | } | 1343 | } |
| 1344 | 1344 | ||
| 1345 | 1345 | ||
| 1346 | int 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 | |||
| 1346 | int pin(snac *user, const char *id) | 1353 | int 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 }; |
| @@ -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); |
| @@ -130,6 +130,7 @@ int is_muted(snac *snac, const char *actor); | |||
| 130 | int pin(snac *user, const char *id); | 130 | int pin(snac *user, const char *id); |
| 131 | int unpin(snac *user, const char *id); | 131 | int unpin(snac *user, const char *id); |
| 132 | int is_pinned(snac *user, const char *id); | 132 | int is_pinned(snac *user, const char *id); |
| 133 | int is_pinned_by_md5(snac *user, const char *md5); | ||
| 133 | xs_list *pinned_list(snac *user); | 134 | xs_list *pinned_list(snac *user); |
| 134 | 135 | ||
| 135 | int limited(snac *user, const char *id, int cmd); | 136 | int limited(snac *user, const char *id, int cmd); |