summaryrefslogtreecommitdiff
path: root/internal/processing/status/get.go
diff options
context:
space:
mode:
authorLibravatar kim <89579420+NyaaaWhatsUpDoc@users.noreply.github.com>2024-12-23 17:54:44 +0000
committerLibravatar GitHub <noreply@github.com>2024-12-23 17:54:44 +0000
commitfe8d5f23072c40a407723904eb5c54234879d58a (patch)
treedf80063f3238997de7144932d2d713321164ac1b /internal/processing/status/get.go
parent[chore] Stub /api/v1/announcements implementation (#3630) (diff)
downloadgotosocial-fe8d5f23072c40a407723904eb5c54234879d58a.tar.xz
[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
Diffstat (limited to 'internal/processing/status/get.go')
-rw-r--r--internal/processing/status/get.go78
1 files changed, 14 insertions, 64 deletions
diff --git a/internal/processing/status/get.go b/internal/processing/status/get.go
index 470b93a8f..812f01683 100644
--- a/internal/processing/status/get.go
+++ b/internal/processing/status/get.go
@@ -19,47 +19,16 @@ package status
import (
"context"
+ "errors"
apimodel "github.com/superseriousbusiness/gotosocial/internal/api/model"
"github.com/superseriousbusiness/gotosocial/internal/gtserror"
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
- "github.com/superseriousbusiness/gotosocial/internal/util"
)
-// HistoryGet gets edit history for the target status, taking account of privacy settings and blocks etc.
-// TODO: currently this just returns the latest version of the status.
-func (p *Processor) HistoryGet(ctx context.Context, requestingAccount *gtsmodel.Account, targetStatusID string) ([]*apimodel.StatusEdit, gtserror.WithCode) {
- targetStatus, errWithCode := p.c.GetVisibleTargetStatus(ctx,
- requestingAccount,
- targetStatusID,
- nil, // default freshness
- )
- if errWithCode != nil {
- return nil, errWithCode
- }
-
- apiStatus, errWithCode := p.c.GetAPIStatus(ctx, requestingAccount, targetStatus)
- if errWithCode != nil {
- return nil, errWithCode
- }
-
- return []*apimodel.StatusEdit{
- {
- Content: apiStatus.Content,
- SpoilerText: apiStatus.SpoilerText,
- Sensitive: apiStatus.Sensitive,
- CreatedAt: util.FormatISO8601(targetStatus.UpdatedAt),
- Account: apiStatus.Account,
- Poll: apiStatus.Poll,
- MediaAttachments: apiStatus.MediaAttachments,
- Emojis: apiStatus.Emojis,
- },
- }, nil
-}
-
// Get gets the given status, taking account of privacy settings and blocks etc.
func (p *Processor) Get(ctx context.Context, requestingAccount *gtsmodel.Account, targetStatusID string) (*apimodel.Status, gtserror.WithCode) {
- targetStatus, errWithCode := p.c.GetVisibleTargetStatus(ctx,
+ target, errWithCode := p.c.GetVisibleTargetStatus(ctx,
requestingAccount,
targetStatusID,
nil, // default freshness
@@ -67,44 +36,25 @@ func (p *Processor) Get(ctx context.Context, requestingAccount *gtsmodel.Account
if errWithCode != nil {
return nil, errWithCode
}
- return p.c.GetAPIStatus(ctx, requestingAccount, targetStatus)
+ return p.c.GetAPIStatus(ctx, requestingAccount, target)
}
// SourceGet returns the *apimodel.StatusSource version of the targetStatusID.
// Status must belong to the requester, and must not be a boost.
-func (p *Processor) SourceGet(ctx context.Context, requestingAccount *gtsmodel.Account, targetStatusID string) (*apimodel.StatusSource, gtserror.WithCode) {
- targetStatus, errWithCode := p.c.GetVisibleTargetStatus(ctx,
- requestingAccount,
- targetStatusID,
- nil, // default freshness
- )
+func (p *Processor) SourceGet(ctx context.Context, requester *gtsmodel.Account, statusID string) (*apimodel.StatusSource, gtserror.WithCode) {
+ status, errWithCode := p.c.GetOwnStatus(ctx, requester, statusID)
if errWithCode != nil {
return nil, errWithCode
}
-
- // Redirect to wrapped status if boost.
- targetStatus, errWithCode = p.c.UnwrapIfBoost(
- ctx,
- requestingAccount,
- targetStatus,
- )
- if errWithCode != nil {
- return nil, errWithCode
- }
-
- if targetStatus.AccountID != requestingAccount.ID {
- err := gtserror.Newf(
- "status %s does not belong to account %s",
- targetStatusID, requestingAccount.ID,
+ if status.BoostOfID != "" {
+ return nil, gtserror.NewErrorNotFound(
+ errors.New("status is a boost wrapper"),
+ "target status not found",
)
- return nil, gtserror.NewErrorNotFound(err)
}
-
- statusSource, err := p.converter.StatusToAPIStatusSource(ctx, targetStatus)
- if err != nil {
- err = gtserror.Newf("error converting status: %w", err)
- return nil, gtserror.NewErrorInternalError(err)
- }
-
- return statusSource, nil
+ return &apimodel.StatusSource{
+ ID: status.ID,
+ Text: status.Text,
+ SpoilerText: status.ContentWarning,
+ }, nil
}