mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2024-10-31 22:40:01 +00:00
[bugfix] Fix single author threads not appearing in home timeline (#1679)
This commit is contained in:
parent
fb41d2d48f
commit
f28ed21343
2 changed files with 50 additions and 2 deletions
|
@ -98,7 +98,7 @@ func (f *Filter) isStatusHomeTimelineable(ctx context.Context, owner *gtsmodel.A
|
||||||
|
|
||||||
var (
|
var (
|
||||||
next *gtsmodel.Status
|
next *gtsmodel.Status
|
||||||
oneAuthor bool
|
oneAuthor = true // Assume one author until proven otherwise.
|
||||||
included bool
|
included bool
|
||||||
converstn bool
|
converstn bool
|
||||||
)
|
)
|
||||||
|
@ -149,7 +149,7 @@ func (f *Filter) isStatusHomeTimelineable(ctx context.Context, owner *gtsmodel.A
|
||||||
}
|
}
|
||||||
|
|
||||||
if oneAuthor {
|
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)
|
oneAuthor = (next.AccountID == status.AccountID)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -95,6 +95,54 @@ func (suite *StatusStatusHomeTimelineableTestSuite) TestStatusNotTooNewTimelinea
|
||||||
suite.True(timelineable)
|
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() {
|
func (suite *StatusStatusHomeTimelineableTestSuite) TestChainReplyFollowersOnly() {
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue