From 1c53f1581dbfc589918099975cda48beca261eaa Mon Sep 17 00:00:00 2001 From: Peter Sanchez Date: Fri, 26 Jul 2024 08:01:41 -0600 Subject: [PATCH] Removing requirement to specify visibility when adding a link. Defaulting to org default preference. References: https://todo.code.netlandish.com/~netlandish/links/82 --- api/graph/generated.go | 2 +- api/graph/model/models_gen.go | 2 +- api/graph/schema.graphqls | 2 +- api/graph/schema.resolvers.go | 23 ++++++++++++++++------- models/tag_links.go | 4 ---- 5 files changed, 19 insertions(+), 14 deletions(-) diff --git a/api/graph/generated.go b/api/graph/generated.go index 44fa6e9..805747b 100644 --- a/api/graph/generated.go +++ b/api/graph/generated.go @@ -22624,7 +22624,7 @@ func (ec *executionContext) unmarshalInputLinkInput(ctx context.Context, obj int var err error ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("visibility")) - it.Visibility, err = ec.unmarshalNInt2int(ctx, v) + it.Visibility, err = ec.unmarshalOInt2áš–int(ctx, v) if err != nil { return it, err } diff --git a/api/graph/model/models_gen.go b/api/graph/model/models_gen.go index 7fe6ec4..43c80a3 100644 --- a/api/graph/model/models_gen.go +++ b/api/graph/model/models_gen.go @@ -225,7 +225,7 @@ type GetUserInput struct { type LinkInput struct { URL string `json:"url"` Description *string `json:"description,omitempty"` - Visibility int `json:"visibility"` + Visibility *int `json:"visibility,omitempty"` Unread bool `json:"unread"` Starred bool `json:"starred"` Archive bool `json:"archive"` diff --git a/api/graph/schema.graphqls b/api/graph/schema.graphqls index 4f73d5e..2c14326 100644 --- a/api/graph/schema.graphqls +++ b/api/graph/schema.graphqls @@ -358,7 +358,7 @@ type QRObject { input LinkInput { url: String! description: String - visibility: Int! + visibility: Int unread: Boolean! starred: Boolean! archive: Boolean! diff --git a/api/graph/schema.resolvers.go b/api/graph/schema.resolvers.go index cc98fea..ab9e576 100644 --- a/api/graph/schema.resolvers.go +++ b/api/graph/schema.resolvers.go @@ -175,11 +175,13 @@ func (r *mutationResolver) AddLink(ctx context.Context, input *model.LinkInput) validator := valid.New(ctx) - validator.Expect(input.Visibility == models.OrgLinkVisibilityPublic || - input.Visibility == models.OrgLinkVisibilityPrivate, - lt.Translate("Invalid Visibility value.")). - WithField("visibility"). - WithCode(valid.ErrValidationCode) + if input.Visibility != nil { + validator.Expect(*input.Visibility == models.OrgLinkVisibilityPublic || + *input.Visibility == models.OrgLinkVisibilityPrivate, + lt.Translate("Invalid Visibility value.")). + WithField("visibility"). + WithCode(valid.ErrValidationCode) + } _, err := url.ParseRequestURI(input.URL) validator.Expect(err == nil, lt.Translate("Invalid URL.")). WithField("url"). @@ -241,9 +243,16 @@ func (r *mutationResolver) AddLink(ctx context.Context, input *model.LinkInput) return nil, nil } + var visibility int + if input.Visibility == nil { + visibility = org.Settings.DefaultPerm + } else { + visibility = *input.Visibility + } + srv := server.ForContext(ctx) // We want to restrict private links only to paid users - if input.Visibility == models.OrgLinkVisibilityPrivate && + if visibility == models.OrgLinkVisibilityPrivate && links.BillingEnabled(srv.Config) && org.IsRestricted([]int{models.BillingStatusFree}) { validator.Error(lt.Translate("Free organizations are not allowed to create private links. Please upgrade")). WithField("visibility"). @@ -270,7 +279,7 @@ func (r *mutationResolver) AddLink(ctx context.Context, input *model.LinkInput) Title: input.Title, OrgID: orgs[0].ID, BaseURLID: sql.NullInt64{Valid: true, Int64: int64(BaseURL.ID)}, - Visibility: input.Visibility, + Visibility: visibility, Unread: input.Unread, Starred: input.Starred, URL: input.URL, diff --git a/models/tag_links.go b/models/tag_links.go index 2ed8641..8118c18 100644 --- a/models/tag_links.go +++ b/models/tag_links.go @@ -75,10 +75,6 @@ func CreateBatchTagLinks(ctx context.Context, linkID int, tagIDs []int) error { PlaceholderFormat(sq.Dollar). RunWith(tx). ExecContext(ctx) - - if err != nil { - return err - } return err }) return err -- 2.45.2