summaryrefslogtreecommitdiff
path: root/internal/visibility/filter.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/visibility/filter.go')
-rw-r--r--internal/visibility/filter.go46
1 files changed, 10 insertions, 36 deletions
diff --git a/internal/visibility/filter.go b/internal/visibility/filter.go
index caa622d09..c9f007ccf 100644
--- a/internal/visibility/filter.go
+++ b/internal/visibility/filter.go
@@ -18,46 +18,20 @@
package visibility
import (
- "context"
-
- "github.com/superseriousbusiness/gotosocial/internal/db"
- "github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
+ "github.com/superseriousbusiness/gotosocial/internal/state"
)
-// Filter packages up a bunch of logic for checking whether given statuses or accounts are visible to a requester.
-type Filter interface {
- // StatusVisible returns true if targetStatus is visible to requestingAccount, based on the
- // privacy settings of the status, and any blocks/mutes that might exist between the two accounts
- // or account domains, and other relevant accounts mentioned in or replied to by the status.
- StatusVisible(ctx context.Context, targetStatus *gtsmodel.Status, requestingAccount *gtsmodel.Account) (bool, error)
-
- // StatusesVisible calls StatusVisible for each status in the statuses slice, and returns a slice of only
- // statuses which are visible to the requestingAccount.
- StatusesVisible(ctx context.Context, statuses []*gtsmodel.Status, requestingAccount *gtsmodel.Account) ([]*gtsmodel.Status, error)
-
- // StatusHometimelineable returns true if targetStatus should be in the home timeline of the requesting account.
- //
- // This function will call StatusVisible internally, so it's not necessary to call it beforehand.
- StatusHometimelineable(ctx context.Context, targetStatus *gtsmodel.Status, requestingAccount *gtsmodel.Account) (bool, error)
-
- // StatusPublictimelineable returns true if targetStatus should be in the public timeline of the requesting account.
- //
- // This function will call StatusVisible internally, so it's not necessary to call it beforehand.
- StatusPublictimelineable(ctx context.Context, targetStatus *gtsmodel.Status, timelineOwnerAccount *gtsmodel.Account) (bool, error)
-
- // StatusBoostable returns true if targetStatus can be boosted by the requesting account.
- //
- // this function will call StatusVisible internally so it's not necessary to call it beforehand.
- StatusBoostable(ctx context.Context, targetStatus *gtsmodel.Status, requestingAccount *gtsmodel.Account) (bool, error)
-}
+// noauth is a placeholder ID used in cache lookups
+// when there is no authorized account ID to use.
+const noauth = "noauth"
-type filter struct {
- db db.DB
+// Filter packages up a bunch of logic for checking whether
+// given statuses or accounts are visible to a requester.
+type Filter struct {
+ state *state.State
}
// NewFilter returns a new Filter interface that will use the provided database.
-func NewFilter(db db.DB) Filter {
- return &filter{
- db: db,
- }
+func NewFilter(state *state.State) *Filter {
+ return &Filter{state: state}
}