aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgrunfink <grunfink@comam.es>2026-04-10 16:43:13 +0200
committergrunfink <grunfink@comam.es>2026-04-10 16:43:13 +0200
commitd704c796ff46a8189b5c98ae99e0814a4f1dc69c (patch)
treec5c3db285decdc4b4cf539174d84ca032183f95c
parentf5a2b96ac54a66f4f7d0aeb50bb13f46d9276e00 (diff)
New user toggle 'show_unlisted', to show unlisted posts in public pages and RSS feeds.
-rw-r--r--html.c12
-rw-r--r--rss.c9
2 files changed, 18 insertions, 3 deletions
diff --git a/html.c b/html.c
index c503702..f70685f 100644
--- a/html.c
+++ b/html.c
@@ -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);
diff --git a/rss.c b/rss.c
index 8aa7f68..47fb212 100644
--- a/rss.c
+++ b/rss.c
@@ -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 */