From e46323c207230b01e48ae1b8e5117a9774d9f157 Mon Sep 17 00:00:00 2001 From: kim <89579420+NyaaaWhatsUpDoc@users.noreply.github.com> Date: Thu, 6 Apr 2023 16:11:25 +0100 Subject: [bugfix] visibility caching and hometimeline (#1675) * fix visibility caching to use correct type key Signed-off-by: kim * check for ID check > max possible ID Signed-off-by: kim * update home timeline code to include relevant threads to owner (e.g. between mutuals/follows) Signed-off-by: kim --------- Signed-off-by: kim --- internal/visibility/status.go | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'internal/visibility/status.go') diff --git a/internal/visibility/status.go b/internal/visibility/status.go index dc8261624..d41bbc80b 100644 --- a/internal/visibility/status.go +++ b/internal/visibility/status.go @@ -49,6 +49,8 @@ func (f *Filter) StatusesVisible(ctx context.Context, requester *gtsmodel.Accoun // StatusVisible will check if given status is visible to requester, accounting for requester with no auth (i.e is nil), suspensions, disabled local users, account blocks and status privacy. func (f *Filter) StatusVisible(ctx context.Context, requester *gtsmodel.Account, status *gtsmodel.Status) (bool, error) { + const vtype = cache.VisibilityTypeStatus + // By default we assume no auth. requesterID := noauth @@ -68,10 +70,10 @@ func (f *Filter) StatusVisible(ctx context.Context, requester *gtsmodel.Account, return &cache.CachedVisibility{ ItemID: status.ID, RequesterID: requesterID, - Type: cache.VisibilityTypeStatus, + Type: vtype, Value: visible, }, nil - }, "status", requesterID, status.ID) + }, vtype, requesterID, status.ID) if err != nil { return false, err } @@ -83,7 +85,7 @@ func (f *Filter) StatusVisible(ctx context.Context, requester *gtsmodel.Account, func (f *Filter) isStatusVisible(ctx context.Context, requester *gtsmodel.Account, status *gtsmodel.Status) (bool, error) { // Ensure that status is fully populated for further processing. if err := f.state.DB.PopulateStatus(ctx, status); err != nil { - return false, err + return false, fmt.Errorf("isStatusVisible: error populating status %s: %w", status.ID, err) } // Check whether status accounts are visible to the requester. @@ -185,7 +187,7 @@ func (f *Filter) areStatusAccountsVisible(ctx context.Context, requester *gtsmod // Check whether status author's account is visible to requester. visible, err := f.AccountVisible(ctx, requester, status.Account) if err != nil { - return false, err + return false, fmt.Errorf("error checking status author visibility: %w", err) } if !visible { @@ -204,7 +206,7 @@ func (f *Filter) areStatusAccountsVisible(ctx context.Context, requester *gtsmod // Check whether boosted status author's account is visible to requester. visible, err := f.AccountVisible(ctx, requester, status.BoostOfAccount) if err != nil { - return false, err + return false, fmt.Errorf("error checking boosted author visibility: %w", err) } if !visible { -- cgit v1.2.3