diff options
author | 2024-08-22 19:47:10 +0200 | |
---|---|---|
committer | 2024-08-22 19:47:10 +0200 | |
commit | 53fccb8af8943aa63e557cbd54d2c19c75b63174 (patch) | |
tree | 5a3dad5bfb03df895a1a45c69d8fe8acc33abab6 /internal/api/client/statuses/statuscreate.go | |
parent | [bugfix/frontend] Small safari + gnome web fixes (#3219) (diff) | |
download | gotosocial-53fccb8af8943aa63e557cbd54d2c19c75b63174.tar.xz |
[feature] Use `local_only` field, deprecate `federated` field (#3222)
* [feature] Use `local_only` field, deprecate `federated` field
* use `deprecated` comment for form.Federated
* nolint
Diffstat (limited to 'internal/api/client/statuses/statuscreate.go')
-rw-r--r-- | internal/api/client/statuses/statuscreate.go | 37 |
1 files changed, 28 insertions, 9 deletions
diff --git a/internal/api/client/statuses/statuscreate.go b/internal/api/client/statuses/statuscreate.go index 7b30e0ee6..de1581515 100644 --- a/internal/api/client/statuses/statuscreate.go +++ b/internal/api/client/statuses/statuscreate.go @@ -29,6 +29,7 @@ import ( "github.com/superseriousbusiness/gotosocial/internal/config" "github.com/superseriousbusiness/gotosocial/internal/gtserror" "github.com/superseriousbusiness/gotosocial/internal/oauth" + "github.com/superseriousbusiness/gotosocial/internal/util" "github.com/superseriousbusiness/gotosocial/internal/validate" ) @@ -137,6 +138,24 @@ import ( // - direct // in: formData // - +// name: local_only +// x-go-name: LocalOnly +// description: >- +// If set to true, this status will be "local only" and will NOT be federated beyond the local timeline(s). +// If set to false (default), this status will be federated to your followers beyond the local timeline(s). +// type: boolean +// in: formData +// default: false +// - +// name: federated +// x-go-name: Federated +// description: >- +// ***DEPRECATED***. Included for back compat only. Only used if set and local_only is not yet. +// If set to true, this status will be federated beyond the local timeline(s). +// If set to false, this status will NOT be federated beyond the local timeline(s). +// in: formData +// type: boolean +// - // name: scheduled_at // x-go-name: ScheduledAt // description: |- @@ -162,12 +181,6 @@ import ( // - text/plain // - text/markdown // in: formData -// - -// name: federated -// x-go-name: Federated -// description: This status will be federated beyond the local timeline(s). -// in: formData -// type: boolean // // produces: // - application/json @@ -210,7 +223,7 @@ func (m *Module) StatusCreatePOSTHandler(c *gin.Context) { return } - form := &apimodel.AdvancedStatusCreateForm{} + form := &apimodel.StatusCreateRequest{} if err := c.ShouldBind(form); err != nil { apiutil.ErrorHandler(c, gtserror.NewErrorBadRequest(err, err.Error()), m.processor.InstanceGetV1) return @@ -249,7 +262,7 @@ func (m *Module) StatusCreatePOSTHandler(c *gin.Context) { // overlength inputs. // // Side effect: normalizes the post's language tag. -func validateNormalizeCreateStatus(form *apimodel.AdvancedStatusCreateForm) error { +func validateNormalizeCreateStatus(form *apimodel.StatusCreateRequest) error { hasStatus := form.Status != "" hasMedia := len(form.MediaIDs) != 0 hasPoll := form.Poll != nil @@ -286,10 +299,16 @@ func validateNormalizeCreateStatus(form *apimodel.AdvancedStatusCreateForm) erro form.Language = language } + // Check if the deprecated "federated" field was + // set in lieu of "local_only", and use it if so. + if form.LocalOnly == nil && form.Federated != nil { // nolint:staticcheck + form.LocalOnly = util.Ptr(!*form.Federated) // nolint:staticcheck + } + return nil } -func validateNormalizeCreatePoll(form *apimodel.AdvancedStatusCreateForm) error { +func validateNormalizeCreatePoll(form *apimodel.StatusCreateRequest) error { maxPollOptions := config.GetStatusesPollMaxOptions() maxPollChars := config.GetStatusesPollOptionMaxChars() |