diff --git a/internal/processing/status/boost.go b/internal/processing/status/boost.go index 7c7162c12..4a97706ab 100644 --- a/internal/processing/status/boost.go +++ b/internal/processing/status/boost.go @@ -130,15 +130,6 @@ func (p *Processor) BoostCreate( return nil, gtserror.NewErrorInternalError(err) } - // Process side effects asynchronously. - p.state.Workers.Client.Queue.Push(&messages.FromClientAPI{ - APObjectType: ap.ActivityAnnounce, - APActivityType: ap.ActivityCreate, - GTSModel: boost, - Origin: requester, - Target: target.Account, - }) - // If the boost target status replies to a status // that we own, and has a pending interaction // request, use the boost as an implicit accept. @@ -156,6 +147,16 @@ func (p *Processor) BoostCreate( target.PendingApproval = util.Ptr(false) } + // Queue remaining boost side effects + // (send out boost, update timeline, etc). + p.state.Workers.Client.Queue.Push(&messages.FromClientAPI{ + APObjectType: ap.ActivityAnnounce, + APActivityType: ap.ActivityCreate, + GTSModel: boost, + Origin: requester, + Target: target.Account, + }) + return p.c.GetAPIStatus(ctx, requester, boost) } diff --git a/internal/processing/status/create.go b/internal/processing/status/create.go index 3604d3a4a..1a00d8ab7 100644 --- a/internal/processing/status/create.go +++ b/internal/processing/status/create.go @@ -275,21 +275,6 @@ func (p *Processor) Create( } } - var model any = status - if backfill { - // We specifically wrap backfilled statuses in - // a different type to signal to worker process. - model = >smodel.BackfillStatus{Status: status} - } - - // Send it to the client API worker for async side-effects. - p.state.Workers.Client.Queue.Push(&messages.FromClientAPI{ - APObjectType: ap.ObjectNote, - APActivityType: ap.ActivityCreate, - GTSModel: model, - Origin: requester, - }) - // If the new status replies to a status that // replies to us, use our reply as an implicit // accept of any pending interaction. @@ -307,6 +292,22 @@ func (p *Processor) Create( status.InReplyTo.PendingApproval = util.Ptr(false) } + var model any = status + if backfill { + // We specifically wrap backfilled statuses in + // a different type to signal to worker process. + model = >smodel.BackfillStatus{Status: status} + } + + // Queue remaining create side effects + // (send out status, update timeline, etc). + p.state.Workers.Client.Queue.Push(&messages.FromClientAPI{ + APObjectType: ap.ObjectNote, + APActivityType: ap.ActivityCreate, + GTSModel: model, + Origin: requester, + }) + return p.c.GetAPIStatus(ctx, requester, status) } diff --git a/internal/processing/status/fave.go b/internal/processing/status/fave.go index 52e6b9d43..70560899b 100644 --- a/internal/processing/status/fave.go +++ b/internal/processing/status/fave.go @@ -160,15 +160,6 @@ func (p *Processor) FaveCreate( return nil, gtserror.NewErrorInternalError(err) } - // Process new status fave side effects. - p.state.Workers.Client.Queue.Push(&messages.FromClientAPI{ - APObjectType: ap.ActivityLike, - APActivityType: ap.ActivityCreate, - GTSModel: gtsFave, - Origin: requester, - Target: status.Account, - }) - // If the fave target status replies to a status // that we own, and has a pending interaction // request, use the fave as an implicit accept. @@ -186,6 +177,16 @@ func (p *Processor) FaveCreate( status.PendingApproval = util.Ptr(false) } + // Queue remaining fave side effects + // (send out fave, update timeline, etc). + p.state.Workers.Client.Queue.Push(&messages.FromClientAPI{ + APObjectType: ap.ActivityLike, + APActivityType: ap.ActivityCreate, + GTSModel: gtsFave, + Origin: requester, + Target: status.Account, + }) + return p.c.GetAPIStatus(ctx, requester, status) }