[bugfix] Fix single author threads not appearing in home timeline (#1679)
This commit is contained in:
parent
fb41d2d48f
commit
f28ed21343
|
@ -98,7 +98,7 @@ func (f *Filter) isStatusHomeTimelineable(ctx context.Context, owner *gtsmodel.A
|
|||
|
||||
var (
|
||||
next *gtsmodel.Status
|
||||
oneAuthor bool
|
||||
oneAuthor = true // Assume one author until proven otherwise.
|
||||
included bool
|
||||
converstn bool
|
||||
)
|
||||
|
@ -149,7 +149,7 @@ func (f *Filter) isStatusHomeTimelineable(ctx context.Context, owner *gtsmodel.A
|
|||
}
|
||||
|
||||
if oneAuthor {
|
||||
// Check if this is a single-author status thread.
|
||||
// Check if this continues to be a single-author thread.
|
||||
oneAuthor = (next.AccountID == status.AccountID)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -95,6 +95,54 @@ func (suite *StatusStatusHomeTimelineableTestSuite) TestStatusNotTooNewTimelinea
|
|||
suite.True(timelineable)
|
||||
}
|
||||
|
||||
func (suite *StatusStatusHomeTimelineableTestSuite) TestThread() {
|
||||
ctx := context.Background()
|
||||
|
||||
threadParentAccount := suite.testAccounts["local_account_1"]
|
||||
timelineOwnerAccount := suite.testAccounts["local_account_2"]
|
||||
originalStatus := suite.testStatuses["local_account_1_status_1"]
|
||||
|
||||
// this status should be hometimelineable for local_account_2
|
||||
originalStatusTimelineable, err := suite.filter.StatusHomeTimelineable(ctx, timelineOwnerAccount, originalStatus)
|
||||
suite.NoError(err)
|
||||
suite.True(originalStatusTimelineable)
|
||||
|
||||
// now a reply from the original status author to their own status
|
||||
firstReplyStatus := >smodel.Status{
|
||||
ID: "01G395ESAYPK9161QSQEZKATJN",
|
||||
URI: "http://localhost:8080/users/the_mighty_zork/statuses/01G395ESAYPK9161QSQEZKATJN",
|
||||
URL: "http://localhost:8080/@the_mighty_zork/statuses/01G395ESAYPK9161QSQEZKATJN",
|
||||
Content: "nbnbdy expects dog",
|
||||
CreatedAt: testrig.TimeMustParse("2021-09-20T12:41:37+02:00"),
|
||||
UpdatedAt: testrig.TimeMustParse("2021-09-20T12:41:37+02:00"),
|
||||
Local: testrig.FalseBool(),
|
||||
AccountURI: "http://localhost:8080/users/the_mighty_zork",
|
||||
AccountID: threadParentAccount.ID,
|
||||
InReplyToID: originalStatus.ID,
|
||||
InReplyToAccountID: threadParentAccount.ID,
|
||||
InReplyToURI: originalStatus.URI,
|
||||
BoostOfID: "",
|
||||
ContentWarning: "",
|
||||
Visibility: gtsmodel.VisibilityFollowersOnly,
|
||||
Sensitive: testrig.FalseBool(),
|
||||
Language: "en",
|
||||
CreatedWithApplicationID: "",
|
||||
Federated: testrig.TrueBool(),
|
||||
Boostable: testrig.TrueBool(),
|
||||
Replyable: testrig.TrueBool(),
|
||||
Likeable: testrig.TrueBool(),
|
||||
ActivityStreamsType: ap.ObjectNote,
|
||||
}
|
||||
if err := suite.db.PutStatus(ctx, firstReplyStatus); err != nil {
|
||||
suite.FailNow(err.Error())
|
||||
}
|
||||
|
||||
// this status should also be hometimelineable for local_account_2
|
||||
firstReplyStatusTimelineable, err := suite.filter.StatusHomeTimelineable(ctx, timelineOwnerAccount, firstReplyStatus)
|
||||
suite.NoError(err)
|
||||
suite.True(firstReplyStatusTimelineable)
|
||||
}
|
||||
|
||||
func (suite *StatusStatusHomeTimelineableTestSuite) TestChainReplyFollowersOnly() {
|
||||
ctx := context.Background()
|
||||
|
||||
|
|
Loading…
Reference in New Issue