diff options
Diffstat (limited to 'internal/processing/status')
-rw-r--r-- | internal/processing/status/common.go | 10 | ||||
-rw-r--r-- | internal/processing/status/status.go | 5 | ||||
-rw-r--r-- | internal/processing/status/status_test.go | 2 |
3 files changed, 15 insertions, 2 deletions
diff --git a/internal/processing/status/common.go b/internal/processing/status/common.go index d6478d35a..1c08a1e65 100644 --- a/internal/processing/status/common.go +++ b/internal/processing/status/common.go @@ -43,6 +43,16 @@ func (p *Processor) getVisibleStatus(ctx context.Context, requestingAccount *gts return nil, gtserror.NewErrorNotFound(err) } + if requestingAccount != nil { + // Ensure the status is up-to-date. + p.federator.RefreshStatusAsync(ctx, + requestingAccount.Username, + targetStatus, + nil, + false, + ) + } + visible, err := p.filter.StatusVisible(ctx, requestingAccount, targetStatus) if err != nil { err = fmt.Errorf("getVisibleStatus: error seeing if status %s is visible: %w", targetStatus.ID, err) diff --git a/internal/processing/status/status.go b/internal/processing/status/status.go index 2bc1b62ce..c34bff30f 100644 --- a/internal/processing/status/status.go +++ b/internal/processing/status/status.go @@ -18,6 +18,7 @@ package status import ( + "github.com/superseriousbusiness/gotosocial/internal/federation" "github.com/superseriousbusiness/gotosocial/internal/gtsmodel" "github.com/superseriousbusiness/gotosocial/internal/state" "github.com/superseriousbusiness/gotosocial/internal/text" @@ -27,6 +28,7 @@ import ( type Processor struct { state *state.State + federator federation.Federator tc typeutils.TypeConverter filter *visibility.Filter formatter text.Formatter @@ -34,9 +36,10 @@ type Processor struct { } // New returns a new status processor. -func New(state *state.State, tc typeutils.TypeConverter, filter *visibility.Filter, parseMention gtsmodel.ParseMentionFunc) Processor { +func New(state *state.State, federator federation.Federator, tc typeutils.TypeConverter, filter *visibility.Filter, parseMention gtsmodel.ParseMentionFunc) Processor { return Processor{ state: state, + federator: federator, tc: tc, filter: filter, formatter: text.NewFormatter(state.DB), diff --git a/internal/processing/status/status_test.go b/internal/processing/status/status_test.go index bef0a6e69..0de56c30e 100644 --- a/internal/processing/status/status_test.go +++ b/internal/processing/status/status_test.go @@ -88,7 +88,7 @@ func (suite *StatusStandardTestSuite) SetupTest() { suite.federator = testrig.NewTestFederator(&suite.state, suite.tc, suite.mediaManager) filter := visibility.NewFilter(&suite.state) - suite.status = status.New(&suite.state, suite.typeConverter, filter, processing.GetParseMentionFunc(suite.db, suite.federator)) + suite.status = status.New(&suite.state, suite.federator, suite.typeConverter, filter, processing.GetParseMentionFunc(suite.db, suite.federator)) testrig.StandardDBSetup(suite.db, suite.testAccounts) testrig.StandardStorageSetup(suite.storage, "../../../testrig/media") |