diff options
| author | 2025-11-30 14:40:37 +0100 | |
|---|---|---|
| committer | 2026-01-22 13:26:26 +0100 | |
| commit | 61ffbba4d952bbd2df1a018c40d91da1dc62c8e1 (patch) | |
| tree | 03a0644209ee9c3acf7ef9bad3c6e0106d3a68b1 | |
| parent | [chore] Go back to using `name` for attachment alt text for now, add note in ... (diff) | |
| download | gotosocial-61ffbba4d952bbd2df1a018c40d91da1dc62c8e1.tar.xz | |
[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>
| -rw-r--r-- | internal/processing/status/boost.go | 10 | ||||
| -rw-r--r-- | internal/processing/status/boost_test.go | 34 |
2 files changed, 43 insertions, 1 deletions
diff --git a/internal/processing/status/boost.go b/internal/processing/status/boost.go index 4a97706ab..d3fa87255 100644 --- a/internal/processing/status/boost.go +++ b/internal/processing/status/boost.go @@ -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. diff --git a/internal/processing/status/boost_test.go b/internal/processing/status/boost_test.go index 96971c05e..e9055bad2 100644 --- a/internal/processing/status/boost_test.go +++ b/internal/processing/status/boost_test.go @@ -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)) } |
