[bugfix] Return unboosted status with reblogged=false (#4593)

# Description

> If this is a code change, please include a summary of what you've coded, and link to the issue(s) it closes/implements.
>
> If this is a documentation change, please briefly describe what you've changed and why.

Closes https://codeberg.org/superseriousbusiness/gotosocial/issues/4584 by setting reblogged=false on the returned status, even though side effects haven't processed yet (we can safely assume they will).

## Checklist

Please put an x inside each checkbox to indicate that you've read and followed it: `[ ]` -> `[x]`

If this is a documentation change, only the first checkbox must be filled (you can delete the others if you want).

- [x] I/we have read the [GoToSocial contribution guidelines](https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/CONTRIBUTING.md).
- [x] I/we have discussed the proposed changes already, either in an issue on the repository, or in the Matrix chat.
- [x] I/we have not leveraged AI to create the proposed changes.
- [x] I/we have performed a self-review of added code.
- [x] I/we have written code that is legible and maintainable by others.
- [x] I/we have commented the added code, particularly in hard-to-understand areas.
- [ ] I/we have made any necessary changes to documentation.
- [x] I/we have added tests that cover new code.
- [x] I/we have run tests and they pass locally with the changes.
- [x] I/we have run `go fmt ./...` and `golangci-lint run`.

Reviewed-on: https://codeberg.org/superseriousbusiness/gotosocial/pulls/4593
Co-authored-by: tobi <tobi.smethurst@protonmail.com>
Co-committed-by: tobi <tobi.smethurst@protonmail.com>
This commit is contained in:
tobi
2025-11-30 14:40:37 +01:00
committed by tobi
parent 56143a7e77
commit 05b294d8a1
2 changed files with 43 additions and 1 deletions
+9 -1
View File
@@ -210,7 +210,15 @@ func (p *Processor) BoostRemove(
})
}
return p.c.GetAPIStatus(ctx, requester, target)
// For client convenience, mark the status as unboosted
// even though side effects probably haven't completed yet.
unboostedStatus, errWithCode := p.c.GetAPIStatus(ctx, requester, target)
if errWithCode != nil {
return nil, errWithCode
}
unboostedStatus.Reblogged = false
return unboostedStatus, nil
}
// StatusBoostedBy returns a slice of accounts that have boosted the given status, filtered according to privacy settings.
+34
View File
@@ -53,6 +53,40 @@ func (suite *StatusBoostTestSuite) TestBoostOfBoost() {
suite.Equal(targetStatus1.ID, boost2.Reblog.ID)
}
func (suite *StatusBoostTestSuite) TestBoostUnboost() {
var (
ctx = suite.T().Context()
acct = suite.testAccounts["local_account_1"]
app = suite.testApplications["application_1"]
statusID = suite.testStatuses["admin_account_status_1"].ID
)
// Boost the status.
_, err := suite.status.BoostCreate(ctx, acct, app, statusID)
if err != nil {
suite.FailNow(err.Error())
}
// Check status is boosted by the caller.
status, err := suite.status.Get(ctx, acct, statusID)
if err != nil {
suite.FailNow(err.Error())
}
if !status.Reblogged {
suite.FailNow("", "expected reblogged=true, got false")
}
// Unboost that status.
// Check it's not boosted by the caller.
status, err = suite.status.BoostRemove(ctx, acct, app, statusID)
if err != nil {
suite.FailNow(err.Error())
}
if status.Reblogged {
suite.FailNow("", "expected reblogged=false, got true")
}
}
func TestStatusBoostTestSuite(t *testing.T) {
suite.Run(t, new(StatusBoostTestSuite))
}