mirror of
https://github.com/superseriousbusiness/gotosocial
synced 2025-06-05 21:59:39 +02:00
[feature] add support for clients editing statuses and fetching status revision history (#3628)
* start adding client support for making status edits and viewing history * modify 'freshest' freshness window to be 5s, add typeutils test for status -> api edits * only populate the status edits when specifically requested * start adding some simple processor status edit tests * add test editing status but adding a poll * test edits appropriately adding poll expiry handlers * finish adding status edit tests * store both new and old revision emojis in status * add code comment * ensure the requester's account is populated before status edits * add code comments for status edit tests * update status edit form swagger comments * remove unused function * fix status source test * add more code comments, move media description check back to media process in status create * fix tests, add necessary form struct tag
This commit is contained in:
@ -31,6 +31,40 @@ import (
|
||||
"github.com/superseriousbusiness/gotosocial/internal/log"
|
||||
)
|
||||
|
||||
// GetOwnStatus fetches the given status with ID,
|
||||
// and ensures that it belongs to given requester.
|
||||
func (p *Processor) GetOwnStatus(
|
||||
ctx context.Context,
|
||||
requester *gtsmodel.Account,
|
||||
targetID string,
|
||||
) (
|
||||
*gtsmodel.Status,
|
||||
gtserror.WithCode,
|
||||
) {
|
||||
target, err := p.state.DB.GetStatusByID(ctx, targetID)
|
||||
if err != nil && !errors.Is(err, db.ErrNoEntries) {
|
||||
err := gtserror.Newf("error getting from db: %w", err)
|
||||
return nil, gtserror.NewErrorInternalError(err)
|
||||
}
|
||||
|
||||
switch {
|
||||
case target == nil:
|
||||
const text = "target status not found"
|
||||
return nil, gtserror.NewErrorNotFound(
|
||||
errors.New(text),
|
||||
text,
|
||||
)
|
||||
|
||||
case target.AccountID != requester.ID:
|
||||
return nil, gtserror.NewErrorNotFound(
|
||||
errors.New("status does not belong to requester"),
|
||||
"target status not found",
|
||||
)
|
||||
}
|
||||
|
||||
return target, nil
|
||||
}
|
||||
|
||||
// GetTargetStatusBy fetches the target status with db load
|
||||
// function, given the authorized (or, nil) requester's
|
||||
// account. This returns an approprate gtserror.WithCode
|
||||
|
Reference in New Issue
Block a user