44package repo
55
66import (
7+ "errors"
78 "net/http"
89
910 "code.gitea.io/gitea/models/db"
@@ -13,7 +14,9 @@ import (
1314 "code.gitea.io/gitea/modules/log"
1415 repo_module "code.gitea.io/gitea/modules/repository"
1516 "code.gitea.io/gitea/modules/templates"
17+ "code.gitea.io/gitea/modules/util"
1618 "code.gitea.io/gitea/modules/web"
19+ shared_label "code.gitea.io/gitea/routers/web/shared/label"
1720 "code.gitea.io/gitea/services/context"
1821 "code.gitea.io/gitea/services/forms"
1922 issue_service "code.gitea.io/gitea/services/issue"
@@ -100,13 +103,8 @@ func RetrieveLabelsForList(ctx *context.Context) {
100103
101104// NewLabel create new label for repository
102105func NewLabel (ctx * context.Context ) {
103- form := web .GetForm (ctx ).(* forms.CreateLabelForm )
104- ctx .Data ["Title" ] = ctx .Tr ("repo.labels" )
105- ctx .Data ["PageIsLabels" ] = true
106-
107- if ctx .HasError () {
108- ctx .Flash .Error (ctx .Data ["ErrorMsg" ].(string ))
109- ctx .Redirect (ctx .Repo .RepoLink + "/labels" )
106+ form := shared_label .GetLabelEditForm (ctx )
107+ if ctx .Written () {
110108 return
111109 }
112110
@@ -119,45 +117,39 @@ func NewLabel(ctx *context.Context) {
119117 Color : form .Color ,
120118 }
121119 if err := issues_model .NewLabel (ctx , l ); err != nil {
122- if label .IsErrInvalidLabelColor (err ) {
123- ctx .Flash .Error ("NewLabel: " + err .Error ())
124- } else {
125- ctx .ServerError ("NewLabel" , err )
126- return
127- }
120+ ctx .ServerError ("NewLabel" , err )
121+ return
128122 }
129- ctx .Redirect (ctx .Repo .RepoLink + "/labels" )
123+ ctx .JSONRedirect (ctx .Repo .RepoLink + "/labels" )
130124}
131125
132126// UpdateLabel update a label's name and color
133127func UpdateLabel (ctx * context.Context ) {
134- form := web .GetForm (ctx ).(* forms.CreateLabelForm )
128+ form := shared_label .GetLabelEditForm (ctx )
129+ if ctx .Written () {
130+ return
131+ }
132+
135133 l , err := issues_model .GetLabelInRepoByID (ctx , ctx .Repo .Repository .ID , form .ID )
136- if err != nil {
137- switch {
138- case issues_model .IsErrRepoLabelNotExist (err ):
139- ctx .HTTPError (http .StatusNotFound )
140- default :
141- ctx .ServerError ("UpdateLabel" , err )
142- }
134+ if errors .Is (err , util .ErrNotExist ) {
135+ ctx .JSONErrorNotFound ()
136+ return
137+ } else if err != nil {
138+ ctx .ServerError ("GetLabelInRepoByID" , err )
143139 return
144140 }
141+
145142 l .Name = form .Title
146143 l .Exclusive = form .Exclusive
147144 l .ExclusiveOrder = form .ExclusiveOrder
148145 l .Description = form .Description
149146 l .Color = form .Color
150-
151147 l .SetArchived (form .IsArchived )
152148 if err := issues_model .UpdateLabel (ctx , l ); err != nil {
153- if label .IsErrInvalidLabelColor (err ) {
154- ctx .Flash .Error ("UpdateLabel: " + err .Error ())
155- } else {
156- ctx .ServerError ("UpdateLabel" , err )
157- return
158- }
149+ ctx .ServerError ("UpdateLabel" , err )
150+ return
159151 }
160- ctx .Redirect (ctx .Repo .RepoLink + "/labels" )
152+ ctx .JSONRedirect (ctx .Repo .RepoLink + "/labels" )
161153}
162154
163155// DeleteLabel delete a label
0 commit comments