diff options
| author | grunfink <grunfink@comam.es> | 2026-04-10 16:43:13 +0200 |
|---|---|---|
| committer | grunfink <grunfink@comam.es> | 2026-04-10 16:43:13 +0200 |
| commit | d704c796ff46a8189b5c98ae99e0814a4f1dc69c (patch) | |
| tree | c5c3db285decdc4b4cf539174d84ca032183f95c | |
| parent | f5a2b96ac54a66f4f7d0aeb50bb13f46d9276e00 (diff) | |
New user toggle 'show_unlisted', to show unlisted posts in public pages and RSS feeds.
| -rw-r--r-- | html.c | 12 | ||||
| -rw-r--r-- | rss.c | 9 |
2 files changed, 18 insertions, 3 deletions
@@ -3595,6 +3595,8 @@ xs_str *html_timeline(snac *user, const xs_list *list, int read_only, int mark_shown = 0; + int show_unlisted = xs_is_true(xs_dict_get(user->config, "show_unlisted")); + while (xs_list_iter(&p, &v)) { xs *msg = NULL; int status; @@ -3651,9 +3653,15 @@ xs_str *html_timeline(snac *user, const xs_list *list, int read_only, /* hide non-public posts from /instance view */ if (page != NULL && strcmp(page, "/instance") == 0 && scope != SCOPE_PUBLIC) continue; + /* hide non-public posts viewed from outside */ - if (read_only && (scope != SCOPE_PUBLIC && scope != SCOPE_UNLISTED)) - continue; + if (read_only) { + if (scope == SCOPE_MENTIONED || scope == SCOPE_FOLLOWERS) + continue; + + if (scope == SCOPE_UNLISTED && !show_unlisted) + continue; + } xs_html *entry = html_entry(user, msg, read_only, 0, v, (user && !hide_children) ? 0 : 1); @@ -44,6 +44,8 @@ xs_str *rss_from_timeline(snac *user, const xs_list *timeline, int cnt = 0; const char *v; + int show_unlisted = xs_is_true(xs_dict_get(user->config, "show_unlisted")); + xs_list_foreach(timeline, v) { xs *msg = NULL; @@ -66,7 +68,12 @@ xs_str *rss_from_timeline(snac *user, const xs_list *timeline, if (!id || !content || !published) continue; - if (!is_msg_public(msg)) + int scope = get_msg_visibility(msg); + + if (scope == SCOPE_MENTIONED || scope == SCOPE_FOLLOWERS) + continue; + + if (scope == SCOPE_UNLISTED && !show_unlisted) continue; /* create a title with the first line of the content */ |