forked from mirrors/pronouns.cc
fix(backend): use to-be-set custom preferences when validating fields, remove constants
This commit is contained in:
parent
6dd3478ff9
commit
5594463a09
4 changed files with 47 additions and 52 deletions
|
@ -7,15 +7,6 @@ import (
|
||||||
|
|
||||||
type WordStatus string
|
type WordStatus string
|
||||||
|
|
||||||
const (
|
|
||||||
StatusUnknown WordStatus = ""
|
|
||||||
StatusFavourite WordStatus = "favourite"
|
|
||||||
StatusOkay WordStatus = "okay"
|
|
||||||
StatusJokingly WordStatus = "jokingly"
|
|
||||||
StatusFriendsOnly WordStatus = "friends_only"
|
|
||||||
StatusAvoid WordStatus = "avoid"
|
|
||||||
)
|
|
||||||
|
|
||||||
func (w *WordStatus) UnmarshalJSON(src []byte) error {
|
func (w *WordStatus) UnmarshalJSON(src []byte) error {
|
||||||
if string(src) == "null" {
|
if string(src) == "null" {
|
||||||
return nil
|
return nil
|
||||||
|
@ -41,7 +32,7 @@ func (w *WordStatus) UnmarshalJSON(src []byte) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (w WordStatus) Valid(extra CustomPreferences) bool {
|
func (w WordStatus) Valid(extra CustomPreferences) bool {
|
||||||
if w == StatusFavourite || w == StatusOkay || w == StatusJokingly || w == StatusFriendsOnly || w == StatusAvoid {
|
if w == "favourite" || w == "okay" || w == "jokingly" || w == "friends_only" || w == "avoid" {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -144,7 +144,7 @@ func (bot *Bot) userPronouns(w http.ResponseWriter, r *http.Request, ev *discord
|
||||||
var favs []db.FieldEntry
|
var favs []db.FieldEntry
|
||||||
|
|
||||||
for _, e := range field.Entries {
|
for _, e := range field.Entries {
|
||||||
if e.Status == db.StatusFavourite {
|
if e.Status == "favourite" {
|
||||||
favs = append(favs, e)
|
favs = append(favs, e)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -106,18 +106,6 @@ func (s *Server) patchUser(w http.ResponseWriter, r *http.Request) error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := validateSlicePtr("name", req.Names, u.CustomPreferences); err != nil {
|
|
||||||
return *err
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := validateSlicePtr("pronoun", req.Pronouns, u.CustomPreferences); err != nil {
|
|
||||||
return *err
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := validateSlicePtr("field", req.Fields, u.CustomPreferences); err != nil {
|
|
||||||
return *err
|
|
||||||
}
|
|
||||||
|
|
||||||
// validate custom preferences
|
// validate custom preferences
|
||||||
if req.CustomPreferences != nil {
|
if req.CustomPreferences != nil {
|
||||||
if count := len(*req.CustomPreferences); count > db.MaxFields {
|
if count := len(*req.CustomPreferences); count > db.MaxFields {
|
||||||
|
@ -134,6 +122,22 @@ func (s *Server) patchUser(w http.ResponseWriter, r *http.Request) error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
customPreferences := u.CustomPreferences
|
||||||
|
if req.CustomPreferences != nil {
|
||||||
|
customPreferences = *req.CustomPreferences
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := validateSlicePtr("name", req.Names, customPreferences); err != nil {
|
||||||
|
return *err
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := validateSlicePtr("pronoun", req.Pronouns, customPreferences); err != nil {
|
||||||
|
return *err
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := validateSlicePtr("field", req.Fields, customPreferences); err != nil {
|
||||||
|
return *err
|
||||||
|
}
|
||||||
|
|
||||||
// update avatar
|
// update avatar
|
||||||
var avatarHash *string = nil
|
var avatarHash *string = nil
|
||||||
|
|
|
@ -55,11 +55,11 @@ func run(c *cli.Context) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
err = pg.SetUserNamesPronouns(ctx, tx, u.ID, []db.FieldEntry{
|
err = pg.SetUserNamesPronouns(ctx, tx, u.ID, []db.FieldEntry{
|
||||||
{Value: "testing 1", Status: db.StatusFavourite},
|
{Value: "testing 1", Status: "favourite"},
|
||||||
{Value: "testing 2", Status: db.StatusOkay},
|
{Value: "testing 2", Status: "okay"},
|
||||||
}, []db.PronounEntry{
|
}, []db.PronounEntry{
|
||||||
{Pronouns: "it/it/its/its/itself", DisplayText: ptr("it/its"), Status: db.StatusFavourite},
|
{Pronouns: "it/it/its/its/itself", DisplayText: ptr("it/its"), Status: "favourite"},
|
||||||
{Pronouns: "they/them/their/theirs/themself", Status: db.StatusOkay},
|
{Pronouns: "they/them/their/theirs/themself", Status: "okay"},
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("error setting pronouns:", err)
|
fmt.Println("error setting pronouns:", err)
|
||||||
|
@ -70,51 +70,51 @@ func run(c *cli.Context) error {
|
||||||
{
|
{
|
||||||
Name: "Field 1",
|
Name: "Field 1",
|
||||||
Entries: []db.FieldEntry{
|
Entries: []db.FieldEntry{
|
||||||
{Value: "Favourite 1", Status: db.StatusFavourite},
|
{Value: "Favourite 1", Status: "favourite"},
|
||||||
{Value: "Okay 1", Status: db.StatusOkay},
|
{Value: "Okay 1", Status: "okay"},
|
||||||
{Value: "Jokingly 1", Status: db.StatusJokingly},
|
{Value: "Jokingly 1", Status: "jokingly"},
|
||||||
{Value: "Friends only 1", Status: db.StatusFriendsOnly},
|
{Value: "Friends only 1", Status: "friends_only"},
|
||||||
{Value: "Avoid 1", Status: db.StatusAvoid},
|
{Value: "Avoid 1", Status: "avoid"},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "Field 2",
|
Name: "Field 2",
|
||||||
Entries: []db.FieldEntry{
|
Entries: []db.FieldEntry{
|
||||||
{Value: "Favourite 2", Status: db.StatusFavourite},
|
{Value: "Favourite 2", Status: "favourite"},
|
||||||
{Value: "Okay 2", Status: db.StatusOkay},
|
{Value: "Okay 2", Status: "okay"},
|
||||||
{Value: "Jokingly 2", Status: db.StatusJokingly},
|
{Value: "Jokingly 2", Status: "jokingly"},
|
||||||
{Value: "Friends only 2", Status: db.StatusFriendsOnly},
|
{Value: "Friends only 2", Status: "friends_only"},
|
||||||
{Value: "Avoid 2", Status: db.StatusAvoid},
|
{Value: "Avoid 2", Status: "avoid"},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "Field 3",
|
Name: "Field 3",
|
||||||
Entries: []db.FieldEntry{
|
Entries: []db.FieldEntry{
|
||||||
{Value: "Favourite 3", Status: db.StatusFavourite},
|
{Value: "Favourite 3", Status: "favourite"},
|
||||||
{Value: "Okay 3", Status: db.StatusOkay},
|
{Value: "Okay 3", Status: "okay"},
|
||||||
{Value: "Jokingly 3", Status: db.StatusJokingly},
|
{Value: "Jokingly 3", Status: "jokingly"},
|
||||||
{Value: "Friends only 3", Status: db.StatusFriendsOnly},
|
{Value: "Friends only 3", Status: "friends_only"},
|
||||||
{Value: "Avoid 3", Status: db.StatusAvoid},
|
{Value: "Avoid 3", Status: "avoid"},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "Field 4",
|
Name: "Field 4",
|
||||||
Entries: []db.FieldEntry{
|
Entries: []db.FieldEntry{
|
||||||
{Value: "Favourite 4", Status: db.StatusFavourite},
|
{Value: "Favourite 4", Status: "favourite"},
|
||||||
{Value: "Okay 4", Status: db.StatusOkay},
|
{Value: "Okay 4", Status: "okay"},
|
||||||
{Value: "Jokingly 4", Status: db.StatusJokingly},
|
{Value: "Jokingly 4", Status: "jokingly"},
|
||||||
{Value: "Friends only 4", Status: db.StatusFriendsOnly},
|
{Value: "Friends only 4", Status: "friends_only"},
|
||||||
{Value: "Avoid 4", Status: db.StatusAvoid},
|
{Value: "Avoid 4", Status: "avoid"},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "Field 5",
|
Name: "Field 5",
|
||||||
Entries: []db.FieldEntry{
|
Entries: []db.FieldEntry{
|
||||||
{Value: "Favourite 5", Status: db.StatusFavourite},
|
{Value: "Favourite 5", Status: "favourite"},
|
||||||
{Value: "Okay 5", Status: db.StatusOkay},
|
{Value: "Okay 5", Status: "okay"},
|
||||||
{Value: "Jokingly 5", Status: db.StatusJokingly},
|
{Value: "Jokingly 5", Status: "jokingly"},
|
||||||
{Value: "Friends only 5", Status: db.StatusFriendsOnly},
|
{Value: "Friends only 5", Status: "friends_only"},
|
||||||
{Value: "Avoid 5", Status: db.StatusAvoid},
|
{Value: "Avoid 5", Status: "avoid"},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in a new issue