summaryrefslogtreecommitdiff
path: root/internal/filter
diff options
context:
space:
mode:
Diffstat (limited to 'internal/filter')
-rw-r--r--internal/filter/visibility/status.go56
1 files changed, 13 insertions, 43 deletions
diff --git a/internal/filter/visibility/status.go b/internal/filter/visibility/status.go
index 24fa6f2e6..c46fd369c 100644
--- a/internal/filter/visibility/status.go
+++ b/internal/filter/visibility/status.go
@@ -115,9 +115,7 @@ func (f *Filter) isStatusVisible(
if requester == nil {
// Use a different visibility
// heuristic for unauthed requests.
- return f.isStatusVisibleUnauthed(
- ctx, status,
- )
+ return f.isStatusVisibleUnauthed(status), nil
}
/*
@@ -245,57 +243,29 @@ func isPendingStatusVisible(requester *gtsmodel.Account, status *gtsmodel.Status
return false
}
-// isStatusVisibleUnauthed returns whether status is visible without any unauthenticated account.
-func (f *Filter) isStatusVisibleUnauthed(ctx context.Context, status *gtsmodel.Status) (bool, error) {
-
- // For remote accounts, only show
- // Public statuses via the web.
- if status.Account.IsRemote() {
- return status.Visibility == gtsmodel.VisibilityPublic, nil
- }
+// isStatusVisibleUnauthed returns whether status is visible without authentication.
+func (f *Filter) isStatusVisibleUnauthed(status *gtsmodel.Status) bool {
// If status is local only,
- // never show via the web.
+ // never show without auth.
if status.IsLocalOnly() {
- return false, nil
- }
-
- // Check account's settings to see
- // what they expose. Populate these
- // from the DB if necessary.
- if status.Account.Settings == nil {
- var err error
- status.Account.Settings, err = f.state.DB.GetAccountSettings(ctx, status.Account.ID)
- if err != nil {
- return false, gtserror.Newf(
- "error getting settings for account %s: %w",
- status.Account.ID, err,
- )
- }
+ return false
}
- switch webvis := status.Account.Settings.WebVisibility; webvis {
+ switch status.Visibility {
- // public_only: status must be Public.
case gtsmodel.VisibilityPublic:
- return status.Visibility == gtsmodel.VisibilityPublic, nil
+ // Visible if account doesn't hide Public statuses.
+ return !*status.Account.HidesToPublicFromUnauthedWeb
- // unlisted: status must be Public or Unlocked.
case gtsmodel.VisibilityUnlocked:
- visible := status.Visibility == gtsmodel.VisibilityPublic ||
- status.Visibility == gtsmodel.VisibilityUnlocked
- return visible, nil
+ // Visible if account doesn't hide Unlocked statuses.
+ return !*status.Account.HidesCcPublicFromUnauthedWeb
- // none: never show via the web.
- case gtsmodel.VisibilityNone:
- return false, nil
-
- // Huh?
default:
- return false, gtserror.Newf(
- "unrecognized web visibility for account %s: %s",
- status.Account.ID, webvis,
- )
+ // For all other visibilities,
+ // never show without auth.
+ return false
}
}