summaryrefslogtreecommitdiff
path: root/internal/processing/status/context.go
diff options
context:
space:
mode:
authorLibravatar kim <89579420+NyaaaWhatsUpDoc@users.noreply.github.com>2024-09-23 11:53:42 +0000
committerLibravatar GitHub <noreply@github.com>2024-09-23 11:53:42 +0000
commit4592e290872e0208d03189aea4f410cd47a5dc1d (patch)
tree00df4221fc924e8fdcafc985f33c0395687a711c /internal/processing/status/context.go
parent[chore] header filter improvements (#3329) (diff)
downloadgotosocial-4592e290872e0208d03189aea4f410cd47a5dc1d.tar.xz
[chore] local instance count query caching, improved status context endpoint logging, don't log ErrHideStatus when timelining (#3330)
* ensure that errors checking status visibility / converting aren't dropped * add some more context to error messages * include calling function name in log entries * don't error on timelining hidden status * further code to ignore statusfilter.ErrHideStatus type errors * remove unused error type * add local instance status / domain / user counts * add checks for localhost * rename from InstanceCounts to LocalInstance * improved code comment
Diffstat (limited to 'internal/processing/status/context.go')
-rw-r--r--internal/processing/status/context.go61
1 files changed, 19 insertions, 42 deletions
diff --git a/internal/processing/status/context.go b/internal/processing/status/context.go
index 9f3a7d089..19c6cac18 100644
--- a/internal/processing/status/context.go
+++ b/internal/processing/status/context.go
@@ -24,7 +24,6 @@ import (
apimodel "github.com/superseriousbusiness/gotosocial/internal/api/model"
statusfilter "github.com/superseriousbusiness/gotosocial/internal/filter/status"
- "github.com/superseriousbusiness/gotosocial/internal/filter/usermute"
"github.com/superseriousbusiness/gotosocial/internal/gtscontext"
"github.com/superseriousbusiness/gotosocial/internal/gtserror"
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
@@ -308,22 +307,7 @@ func (p *Processor) ContextGet(
return nil, gtserror.NewErrorInternalError(err)
}
- convert := func(
- ctx context.Context,
- status *gtsmodel.Status,
- requestingAccount *gtsmodel.Account,
- ) (*apimodel.Status, error) {
- return p.converter.StatusToAPIStatus(
- ctx,
- status,
- requestingAccount,
- statusfilter.FilterContextThread,
- filters,
- usermute.NewCompiledUserMuteList(mutes),
- )
- }
-
- // Retrieve the thread context.
+ // Retrieve the full thread context.
threadContext, errWithCode := p.contextGet(
ctx,
requester,
@@ -333,34 +317,27 @@ func (p *Processor) ContextGet(
return nil, errWithCode
}
- apiContext := &apimodel.ThreadContext{
- Ancestors: make([]apimodel.Status, 0, len(threadContext.ancestors)),
- Descendants: make([]apimodel.Status, 0, len(threadContext.descendants)),
- }
+ var apiContext apimodel.ThreadContext
- // Convert ancestors + filter
- // out ones that aren't visible.
- for _, status := range threadContext.ancestors {
- if v, err := p.visFilter.StatusVisible(ctx, requester, status); err == nil && v {
- status, err := convert(ctx, status, requester)
- if err == nil {
- apiContext.Ancestors = append(apiContext.Ancestors, *status)
- }
- }
- }
+ // Convert and filter the thread context ancestors.
+ apiContext.Ancestors = p.c.GetVisibleAPIStatuses(ctx,
+ requester,
+ threadContext.ancestors,
+ statusfilter.FilterContextThread,
+ filters,
+ mutes,
+ )
- // Convert descendants + filter
- // out ones that aren't visible.
- for _, status := range threadContext.descendants {
- if v, err := p.visFilter.StatusVisible(ctx, requester, status); err == nil && v {
- status, err := convert(ctx, status, requester)
- if err == nil {
- apiContext.Descendants = append(apiContext.Descendants, *status)
- }
- }
- }
+ // Convert and filter the thread context descendants
+ apiContext.Descendants = p.c.GetVisibleAPIStatuses(ctx,
+ requester,
+ threadContext.descendants,
+ statusfilter.FilterContextThread,
+ filters,
+ mutes,
+ )
- return apiContext, nil
+ return &apiContext, nil
}
// WebContextGet is like ContextGet, but is explicitly