mirror of
https://github.com/superseriousbusiness/gotosocial
synced 2025-06-05 21:59:39 +02:00
[bugfix] fix poll vote count responses on client and fedi API vote creation (#2343)
* increment poll votes *before* enqueuing vote to client API worker * increment vote counts before federating status update after vote in local poll * improved vote count calculation during backend -> frontend model conversion
This commit is contained in:
@@ -90,6 +90,11 @@ func (p *Processor) PollVote(ctx context.Context, requester *gtsmodel.Account, p
|
||||
return nil, gtserror.NewErrorInternalError(err)
|
||||
}
|
||||
|
||||
// Before enqueuing it, increment the poll
|
||||
// vote counts on the copy attached to the
|
||||
// PollVote (that we also later return).
|
||||
poll.IncrementVotes(choices)
|
||||
|
||||
// Enqueue worker task to handle side-effects of user poll vote(s).
|
||||
p.state.Workers.EnqueueClientAPI(ctx, messages.FromClientAPI{
|
||||
APActivityType: ap.ActivityCreate,
|
||||
@@ -98,11 +103,6 @@ func (p *Processor) PollVote(ctx context.Context, requester *gtsmodel.Account, p
|
||||
OriginAccount: requester,
|
||||
})
|
||||
|
||||
// Before returning the converted poll model,
|
||||
// increment the vote counts on our local copy
|
||||
// to get latest, instead of another db query.
|
||||
poll.IncrementVotes(choices)
|
||||
|
||||
// Return converted API model poll.
|
||||
return p.toAPIPoll(ctx, requester, poll)
|
||||
}
|
||||
|
@@ -233,6 +233,10 @@ func (p *fediAPI) CreatePollVote(ctx context.Context, fMsg messages.FromFediAPI)
|
||||
p.surface.invalidateStatusFromTimelines(ctx, vote.Poll.StatusID)
|
||||
|
||||
if *status.Local {
|
||||
// Before federating it, increment the
|
||||
// poll vote counts on our local copy.
|
||||
status.Poll.IncrementVotes(vote.Choices)
|
||||
|
||||
// These were poll votes in a local status, we need to
|
||||
// federate the updated status model with latest vote counts.
|
||||
if err := p.federate.UpdateStatus(ctx, status); err != nil {
|
||||
|
Reference in New Issue
Block a user