From 3cebd87bbb285995d852c8850656ccef4c1d9fcd Mon Sep 17 00:00:00 2001 From: Josh Hunt Date: Tue, 14 Jun 2022 12:53:51 +0100 Subject: [PATCH] I18n: Add locale to user preference (#49425) * Add __debug_bin file to gitignore * Add locale user preference * undo defaulting to existing JSONData in preferences save --- .gitignore | 2 +- pkg/api/dtos/prefs.go | 3 +++ pkg/api/preferences.go | 3 +++ pkg/services/preference/model.go | 3 +++ pkg/services/preference/prefimpl/pref.go | 14 +++++++++++++- 5 files changed, 23 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 708681a5b34..c146457b513 100644 --- a/.gitignore +++ b/.gitignore @@ -99,6 +99,7 @@ debug.test /packaging/**/*.deb /packaging/**/*.tar.gz /packaging/**/*.tar.gz.sha256 +pkg/cmd/grafana-server/__debug_bin # Ignore OSX indexing .DS_Store @@ -165,4 +166,3 @@ public/locales/_build/ public/locales/**/*.js deployment_tools_config.json - diff --git a/pkg/api/dtos/prefs.go b/pkg/api/dtos/prefs.go index 134f48fba11..0c5ac67dc6f 100644 --- a/pkg/api/dtos/prefs.go +++ b/pkg/api/dtos/prefs.go @@ -10,6 +10,7 @@ type Prefs struct { HomeDashboardUID string `json:"homeDashboardUID,omitempty"` Timezone string `json:"timezone"` WeekStart string `json:"weekStart"` + Locale string `json:"locale"` Navbar pref.NavbarPreference `json:"navbar,omitempty"` QueryHistory pref.QueryHistoryPreference `json:"queryHistory,omitempty"` } @@ -27,6 +28,7 @@ type UpdatePrefsCmd struct { WeekStart string `json:"weekStart"` Navbar *pref.NavbarPreference `json:"navbar,omitempty"` QueryHistory *pref.QueryHistoryPreference `json:"queryHistory,omitempty"` + Locale string `json:"locale"` } // swagger:model @@ -39,6 +41,7 @@ type PatchPrefsCmd struct { // Enum: utc,browser Timezone *string `json:"timezone,omitempty"` WeekStart *string `json:"weekStart,omitempty"` + Locale *string `json:"locale,omitempty"` Navbar *pref.NavbarPreference `json:"navbar,omitempty"` QueryHistory *pref.QueryHistoryPreference `json:"queryHistory,omitempty"` HomeDashboardUID *string `json:"homeDashboardUID,omitempty"` diff --git a/pkg/api/preferences.go b/pkg/api/preferences.go index 47d54b58117..e1acad29947 100644 --- a/pkg/api/preferences.go +++ b/pkg/api/preferences.go @@ -80,6 +80,7 @@ func (hs *HTTPServer) getPreferencesFor(ctx context.Context, orgID, userID, team } if preference.JSONData != nil { + dto.Locale = preference.JSONData.Locale dto.Navbar = preference.JSONData.Navbar dto.QueryHistory = preference.JSONData.QueryHistory } @@ -117,6 +118,7 @@ func (hs *HTTPServer) updatePreferencesFor(ctx context.Context, orgID, userID, t OrgID: orgID, TeamID: teamId, Theme: dtoCmd.Theme, + Locale: dtoCmd.Locale, Timezone: dtoCmd.Timezone, WeekStart: dtoCmd.WeekStart, HomeDashboardID: dtoCmd.HomeDashboardID, @@ -165,6 +167,7 @@ func (hs *HTTPServer) patchPreferencesFor(ctx context.Context, orgID, userID, te Timezone: dtoCmd.Timezone, WeekStart: dtoCmd.WeekStart, HomeDashboardID: dtoCmd.HomeDashboardID, + Locale: dtoCmd.Locale, Navbar: dtoCmd.Navbar, QueryHistory: dtoCmd.QueryHistory, } diff --git a/pkg/services/preference/model.go b/pkg/services/preference/model.go index f3f9d2c233c..5b07e91afd0 100644 --- a/pkg/services/preference/model.go +++ b/pkg/services/preference/model.go @@ -47,6 +47,7 @@ type SavePreferenceCommand struct { Timezone string `json:"timezone,omitempty"` WeekStart string `json:"weekStart,omitempty"` Theme string `json:"theme,omitempty"` + Locale string `json:"locale,omitempty"` Navbar *NavbarPreference `json:"navbar,omitempty"` QueryHistory *QueryHistoryPreference `json:"queryHistory,omitempty"` } @@ -61,6 +62,7 @@ type PatchPreferenceCommand struct { Timezone *string `json:"timezone,omitempty"` WeekStart *string `json:"weekStart,omitempty"` Theme *string `json:"theme,omitempty"` + Locale *string `json:"locale,omitempty"` Navbar *NavbarPreference `json:"navbar,omitempty"` QueryHistory *QueryHistoryPreference `json:"queryHistory,omitempty"` } @@ -77,6 +79,7 @@ type NavbarPreference struct { } type PreferenceJSONData struct { + Locale string `json:"locale"` Navbar NavbarPreference `json:"navbar"` QueryHistory QueryHistoryPreference `json:"queryHistory"` } diff --git a/pkg/services/preference/prefimpl/pref.go b/pkg/services/preference/prefimpl/pref.go index d1ebdbe9c00..d8fd2937c31 100644 --- a/pkg/services/preference/prefimpl/pref.go +++ b/pkg/services/preference/prefimpl/pref.go @@ -92,6 +92,9 @@ func (s *Service) Save(ctx context.Context, cmd *pref.SavePreferenceCommand) err Theme: cmd.Theme, Created: time.Now(), Updated: time.Now(), + JSONData: &pref.PreferenceJSONData{ + Locale: cmd.Locale, + }, } _, err = s.store.Insert(ctx, preference) if err != nil { @@ -106,8 +109,10 @@ func (s *Service) Save(ctx context.Context, cmd *pref.SavePreferenceCommand) err preference.Theme = cmd.Theme preference.Updated = time.Now() preference.Version += 1 - preference.JSONData = &pref.PreferenceJSONData{} preference.HomeDashboardID = cmd.HomeDashboardID + preference.JSONData = &pref.PreferenceJSONData{ + Locale: cmd.Locale, + } if cmd.Navbar != nil { preference.JSONData.Navbar = *cmd.Navbar @@ -141,6 +146,13 @@ func (s *Service) Patch(ctx context.Context, cmd *pref.PatchPreferenceCommand) e exists = true } + if cmd.Locale != nil { + if preference.JSONData == nil { + preference.JSONData = &pref.PreferenceJSONData{} + } + preference.JSONData.Locale = *cmd.Locale + } + if cmd.Navbar != nil { if preference.JSONData == nil { preference.JSONData = &pref.PreferenceJSONData{}