aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--modules/optional/option.go7
-rw-r--r--modules/optional/option_test.go6
-rw-r--r--routers/api/v1/admin/user.go2
-rw-r--r--routers/api/v1/org/org.go2
4 files changed, 15 insertions, 2 deletions
diff --git a/modules/optional/option.go b/modules/optional/option.go
index 6075c6347e..cbecf86987 100644
--- a/modules/optional/option.go
+++ b/modules/optional/option.go
@@ -28,6 +28,13 @@ func FromPtr[T any](v *T) Option[T] {
return Some(*v)
}
+func FromMapLookup[K comparable, V any](m map[K]V, k K) Option[V] {
+ if v, ok := m[k]; ok {
+ return Some(v)
+ }
+ return None[V]()
+}
+
func FromNonDefault[T comparable](v T) Option[T] {
var zero T
if v == zero {
diff --git a/modules/optional/option_test.go b/modules/optional/option_test.go
index f600ff5a2c..ea80a2e3cb 100644
--- a/modules/optional/option_test.go
+++ b/modules/optional/option_test.go
@@ -56,6 +56,12 @@ func TestOption(t *testing.T) {
opt3 := optional.FromNonDefault(1)
assert.True(t, opt3.Has())
assert.Equal(t, int(1), opt3.Value())
+
+ opt4 := optional.FromMapLookup(map[string]int{"a": 1}, "a")
+ assert.True(t, opt4.Has())
+ assert.Equal(t, 1, opt4.Value())
+ opt4 = optional.FromMapLookup(map[string]int{"a": 1}, "b")
+ assert.False(t, opt4.Has())
}
func Test_ParseBool(t *testing.T) {
diff --git a/routers/api/v1/admin/user.go b/routers/api/v1/admin/user.go
index 8a267cc418..494bace585 100644
--- a/routers/api/v1/admin/user.go
+++ b/routers/api/v1/admin/user.go
@@ -240,7 +240,7 @@ func EditUser(ctx *context.APIContext) {
Description: optional.FromPtr(form.Description),
IsActive: optional.FromPtr(form.Active),
IsAdmin: user_service.UpdateOptionFieldFromPtr(form.Admin),
- Visibility: optional.FromNonDefault(api.VisibilityModes[form.Visibility]),
+ Visibility: optional.FromMapLookup(api.VisibilityModes, form.Visibility),
AllowGitHook: optional.FromPtr(form.AllowGitHook),
AllowImportLocal: optional.FromPtr(form.AllowImportLocal),
MaxRepoCreation: optional.FromPtr(form.MaxRepoCreation),
diff --git a/routers/api/v1/org/org.go b/routers/api/v1/org/org.go
index 05744ba155..cd67686065 100644
--- a/routers/api/v1/org/org.go
+++ b/routers/api/v1/org/org.go
@@ -391,7 +391,7 @@ func Edit(ctx *context.APIContext) {
Description: optional.Some(form.Description),
Website: optional.Some(form.Website),
Location: optional.Some(form.Location),
- Visibility: optional.FromNonDefault(api.VisibilityModes[form.Visibility]),
+ Visibility: optional.FromMapLookup(api.VisibilityModes, form.Visibility),
RepoAdminChangeTeamAccess: optional.FromPtr(form.RepoAdminChangeTeamAccess),
}
if err := user_service.UpdateUser(ctx, ctx.Org.Organization.AsUser(), opts); err != nil {