i18n: Add locale to backend (#102233)
This commit is contained in:
@@ -67,6 +67,10 @@ func (s *Service) GetWithDefaults(ctx context.Context, query *pref.GetPreference
|
||||
res.JSONData.Language = p.JSONData.Language
|
||||
}
|
||||
|
||||
if p.JSONData.Locale != "" {
|
||||
res.JSONData.Locale = p.JSONData.Locale
|
||||
}
|
||||
|
||||
if p.JSONData.QueryHistory.HomeTab != "" {
|
||||
res.JSONData.QueryHistory.HomeTab = p.JSONData.QueryHistory.HomeTab
|
||||
}
|
||||
@@ -174,6 +178,13 @@ func (s *Service) Patch(ctx context.Context, cmd *pref.PatchPreferenceCommand) e
|
||||
preference.JSONData.Language = *cmd.Language
|
||||
}
|
||||
|
||||
if cmd.Locale != nil {
|
||||
if preference.JSONData == nil {
|
||||
preference.JSONData = &pref.PreferenceJSONData{}
|
||||
}
|
||||
preference.JSONData.Locale = *cmd.Locale
|
||||
}
|
||||
|
||||
if cmd.Navbar != nil && cmd.Navbar.BookmarkUrls != nil {
|
||||
if preference.JSONData == nil {
|
||||
preference.JSONData = &pref.PreferenceJSONData{}
|
||||
@@ -266,8 +277,8 @@ func parseCookiePreferences(prefs []pref.CookieType) (map[string]struct{}, error
|
||||
func preferenceData(cmd *pref.SavePreferenceCommand) (*pref.PreferenceJSONData, error) {
|
||||
jsonData := &pref.PreferenceJSONData{
|
||||
Language: cmd.Language,
|
||||
Locale: cmd.Locale,
|
||||
}
|
||||
|
||||
if cmd.Navbar != nil {
|
||||
jsonData.Navbar = *cmd.Navbar
|
||||
}
|
||||
|
||||
@@ -92,6 +92,7 @@ func TestGetWithDefaults_withUserAndOrgPrefs(t *testing.T) {
|
||||
WeekStart: &weekStartOne,
|
||||
JSONData: &pref.PreferenceJSONData{
|
||||
Language: "en-GB",
|
||||
Locale: "en-US",
|
||||
},
|
||||
},
|
||||
pref.Preference{
|
||||
@@ -103,6 +104,7 @@ func TestGetWithDefaults_withUserAndOrgPrefs(t *testing.T) {
|
||||
WeekStart: &weekStartTwo,
|
||||
JSONData: &pref.PreferenceJSONData{
|
||||
Language: "en-AU",
|
||||
Locale: "es-ES",
|
||||
},
|
||||
},
|
||||
)
|
||||
@@ -118,6 +120,7 @@ func TestGetWithDefaults_withUserAndOrgPrefs(t *testing.T) {
|
||||
HomeDashboardID: 4,
|
||||
JSONData: &pref.PreferenceJSONData{
|
||||
Language: "en-AU",
|
||||
Locale: "es-ES",
|
||||
},
|
||||
}
|
||||
if diff := cmp.Diff(expected, preference); diff != "" {
|
||||
@@ -137,6 +140,7 @@ func TestGetWithDefaults_withUserAndOrgPrefs(t *testing.T) {
|
||||
HomeDashboardID: 1,
|
||||
JSONData: &pref.PreferenceJSONData{
|
||||
Language: "en-GB",
|
||||
Locale: "en-US",
|
||||
},
|
||||
}
|
||||
if diff := cmp.Diff(expected, preference); diff != "" {
|
||||
@@ -157,6 +161,9 @@ func TestGetDefaults_JSONData(t *testing.T) {
|
||||
orgPreferencesWithLanguageJsonData := pref.PreferenceJSONData{
|
||||
Language: "en-GB",
|
||||
}
|
||||
orgPreferencesWithLocaleJsonData := pref.PreferenceJSONData{
|
||||
Locale: "en-US",
|
||||
}
|
||||
team2PreferencesJsonData := pref.PreferenceJSONData{}
|
||||
team1PreferencesJsonData := pref.PreferenceJSONData{}
|
||||
|
||||
@@ -217,6 +224,36 @@ func TestGetDefaults_JSONData(t *testing.T) {
|
||||
}, preference)
|
||||
})
|
||||
|
||||
t.Run("user JSONData with missing locale does not override org preference", func(t *testing.T) {
|
||||
prefService := &Service{
|
||||
store: newFake(),
|
||||
defaults: prefsFromConfig(setting.NewCfg()),
|
||||
}
|
||||
|
||||
insertPrefs(t, prefService.store,
|
||||
pref.Preference{
|
||||
OrgID: 1,
|
||||
JSONData: &orgPreferencesWithLocaleJsonData,
|
||||
},
|
||||
pref.Preference{
|
||||
OrgID: 1,
|
||||
UserID: 1,
|
||||
JSONData: &userPreferencesJsonData,
|
||||
},
|
||||
)
|
||||
|
||||
query := &pref.GetPreferenceWithDefaultsQuery{OrgID: 1, UserID: 1}
|
||||
preference, err := prefService.GetWithDefaults(context.Background(), query)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, &pref.Preference{
|
||||
WeekStart: &weekStart,
|
||||
JSONData: &pref.PreferenceJSONData{
|
||||
Locale: "en-US",
|
||||
QueryHistory: queryPreference,
|
||||
},
|
||||
}, preference)
|
||||
})
|
||||
|
||||
t.Run("teams have precedence over org and are read in ascending order", func(t *testing.T) {
|
||||
prefService := &Service{
|
||||
store: newFake(),
|
||||
|
||||
Reference in New Issue
Block a user