Browse Source

Replace Optional{Int,Int64,Float64} with a generic function OptionalNumber()

Frédéric Guillot 2 years ago
parent
commit
f6404290ba
3 changed files with 10 additions and 24 deletions
  1. 5 19
      internal/model/model.go
  2. 1 1
      internal/ui/feed_update.go
  3. 4 4
      internal/ui/settings_update.go

+ 5 - 19
internal/model/model.go

@@ -3,33 +3,19 @@
 
 package model // import "miniflux.app/v2/internal/model"
 
-// OptionalString populates an optional string field.
-func OptionalString(value string) *string {
-	if value != "" {
-		return &value
-	}
-	return nil
-}
-
-// OptionalInt populates an optional int field.
-func OptionalInt(value int) *int {
-	if value > 0 {
-		return &value
-	}
-	return nil
+type Number interface {
+	int | int64 | float64
 }
 
-// OptionalInt64 populates an optional int64 field.
-func OptionalInt64(value int64) *int64 {
+func OptionalNumber[T Number](value T) *T {
 	if value > 0 {
 		return &value
 	}
 	return nil
 }
 
-// OptionalFloat populates an optional float64 field.
-func OptionalFloat(value float64) *float64 {
-	if value > 0 {
+func OptionalString(value string) *string {
+	if value != "" {
 		return &value
 	}
 	return nil

+ 1 - 1
internal/ui/feed_update.go

@@ -59,7 +59,7 @@ func (h *handler) updateFeed(w http.ResponseWriter, r *http.Request) {
 		FeedURL:         model.OptionalString(feedForm.FeedURL),
 		SiteURL:         model.OptionalString(feedForm.SiteURL),
 		Title:           model.OptionalString(feedForm.Title),
-		CategoryID:      model.OptionalInt64(feedForm.CategoryID),
+		CategoryID:      model.OptionalNumber(feedForm.CategoryID),
 		BlocklistRules:  model.OptionalString(feedForm.BlocklistRules),
 		KeeplistRules:   model.OptionalString(feedForm.KeeplistRules),
 		UrlRewriteRules: model.OptionalString(feedForm.UrlRewriteRules),

+ 4 - 4
internal/ui/settings_update.go

@@ -56,13 +56,13 @@ func (h *handler) updateSettings(w http.ResponseWriter, r *http.Request) {
 		Language:            model.OptionalString(settingsForm.Language),
 		Timezone:            model.OptionalString(settingsForm.Timezone),
 		EntryDirection:      model.OptionalString(settingsForm.EntryDirection),
-		EntriesPerPage:      model.OptionalInt(settingsForm.EntriesPerPage),
+		EntriesPerPage:      model.OptionalNumber(settingsForm.EntriesPerPage),
 		DisplayMode:         model.OptionalString(settingsForm.DisplayMode),
 		GestureNav:          model.OptionalString(settingsForm.GestureNav),
-		DefaultReadingSpeed: model.OptionalInt(settingsForm.DefaultReadingSpeed),
-		CJKReadingSpeed:     model.OptionalInt(settingsForm.CJKReadingSpeed),
+		DefaultReadingSpeed: model.OptionalNumber(settingsForm.DefaultReadingSpeed),
+		CJKReadingSpeed:     model.OptionalNumber(settingsForm.CJKReadingSpeed),
 		DefaultHomePage:     model.OptionalString(settingsForm.DefaultHomePage),
-		MediaPlaybackRate:   model.OptionalFloat(settingsForm.MediaPlaybackRate),
+		MediaPlaybackRate:   model.OptionalNumber(settingsForm.MediaPlaybackRate),
 	}
 
 	if validationErr := validator.ValidateUserModification(h.store, loggedUser.ID, userModificationRequest); validationErr != nil {