Preferences: Add preferences kind and remove unused navbar settings (#59621)

This commit is contained in:
Ryan McKinley
2023-01-25 11:00:32 -08:00
committed by GitHub
parent 8b574e22b5
commit a0405912a8
24 changed files with 420 additions and 144 deletions

View File

@@ -50,7 +50,6 @@ type SavePreferenceCommand struct {
WeekStart string `json:"weekStart,omitempty"`
Theme string `json:"theme,omitempty"`
Language string `json:"language,omitempty"`
Navbar *NavbarPreference `json:"navbar,omitempty"`
QueryHistory *QueryHistoryPreference `json:"queryHistory,omitempty"`
}
@@ -65,24 +64,11 @@ type PatchPreferenceCommand struct {
WeekStart *string `json:"weekStart,omitempty"`
Theme *string `json:"theme,omitempty"`
Language *string `json:"language,omitempty"`
Navbar *NavbarPreference `json:"navbar,omitempty"`
QueryHistory *QueryHistoryPreference `json:"queryHistory,omitempty"`
}
type NavLink struct {
ID string `json:"id,omitempty"`
Text string `json:"text,omitempty"`
Url string `json:"url,omitempty"`
Target string `json:"target,omitempty"`
}
type NavbarPreference struct {
SavedItems []NavLink `json:"savedItems"`
}
type PreferenceJSONData struct {
Language string `json:"language"`
Navbar NavbarPreference `json:"navbar"`
QueryHistory QueryHistoryPreference `json:"queryHistory"`
}

View File

@@ -65,10 +65,6 @@ func (s *Service) GetWithDefaults(ctx context.Context, query *pref.GetPreference
res.JSONData.Language = p.JSONData.Language
}
if len(p.JSONData.Navbar.SavedItems) > 0 {
res.JSONData.Navbar = p.JSONData.Navbar
}
if p.JSONData.QueryHistory.HomeTab != "" {
res.JSONData.QueryHistory.HomeTab = p.JSONData.QueryHistory.HomeTab
}
@@ -134,9 +130,6 @@ func (s *Service) Save(ctx context.Context, cmd *pref.SavePreferenceCommand) err
Language: cmd.Language,
}
if cmd.Navbar != nil {
preference.JSONData.Navbar = *cmd.Navbar
}
if cmd.QueryHistory != nil {
preference.JSONData.QueryHistory = *cmd.QueryHistory
}
@@ -173,15 +166,6 @@ func (s *Service) Patch(ctx context.Context, cmd *pref.PatchPreferenceCommand) e
preference.JSONData.Language = *cmd.Language
}
if cmd.Navbar != nil {
if preference.JSONData == nil {
preference.JSONData = &pref.PreferenceJSONData{}
}
if cmd.Navbar.SavedItems != nil {
preference.JSONData.Navbar.SavedItems = cmd.Navbar.SavedItems
}
}
if cmd.QueryHistory != nil {
if preference.JSONData == nil {
preference.JSONData = &pref.PreferenceJSONData{}
@@ -210,16 +194,6 @@ func (s *Service) Patch(ctx context.Context, cmd *pref.PatchPreferenceCommand) e
preference.Updated = time.Now()
preference.Version += 1
// Wrap this in an if statement to maintain backwards compatibility
if cmd.Navbar != nil {
if preference.JSONData == nil {
preference.JSONData = &pref.PreferenceJSONData{}
}
if cmd.Navbar.SavedItems != nil {
preference.JSONData.Navbar.SavedItems = cmd.Navbar.SavedItems
}
}
if exists {
err = s.store.Update(ctx, preference)
} else {

View File

@@ -174,51 +174,15 @@ func TestGetDefaults_JSONData(t *testing.T) {
queryPreference := pref.QueryHistoryPreference{
HomeTab: "hometab",
}
userNavbarPreferences := pref.NavbarPreference{
SavedItems: []pref.NavLink{{
ID: "explore",
Text: "Explore",
Url: "/explore",
}},
}
orgNavbarPreferences := pref.NavbarPreference{
SavedItems: []pref.NavLink{{
ID: "alerting",
Text: "Alerting",
Url: "/alerting",
}},
}
team1NavbarPreferences := pref.NavbarPreference{
SavedItems: []pref.NavLink{{
ID: "dashboards",
Text: "Dashboards",
Url: "/dashboards",
}},
}
team2NavbarPreferences := pref.NavbarPreference{
SavedItems: []pref.NavLink{{
ID: "home",
Text: "Home",
Url: "/home",
}},
}
userPreferencesJsonData := pref.PreferenceJSONData{
Navbar: userNavbarPreferences,
QueryHistory: queryPreference,
}
orgPreferencesJsonData := pref.PreferenceJSONData{
Navbar: orgNavbarPreferences,
}
orgPreferencesJsonData := pref.PreferenceJSONData{}
orgPreferencesWithLanguageJsonData := pref.PreferenceJSONData{
Navbar: orgNavbarPreferences,
Language: "en-GB",
}
team2PreferencesJsonData := pref.PreferenceJSONData{
Navbar: team2NavbarPreferences,
}
team1PreferencesJsonData := pref.PreferenceJSONData{
Navbar: team1NavbarPreferences,
}
team2PreferencesJsonData := pref.PreferenceJSONData{}
team1PreferencesJsonData := pref.PreferenceJSONData{}
t.Run("users have precedence over org", func(t *testing.T) {
prefService := &Service{
@@ -274,7 +238,6 @@ func TestGetDefaults_JSONData(t *testing.T) {
WeekStart: &weekStart,
JSONData: &pref.PreferenceJSONData{
Language: "en-GB",
Navbar: userNavbarPreferences,
QueryHistory: queryPreference,
},
}, preference)

View File

@@ -20,13 +20,6 @@ func testIntegrationPreferencesDataAccess(t *testing.T, fn getStore) {
weekStartOne := "1"
ss := db.InitTestDB(t)
prefStore := fn(ss)
orgNavbarPreferences := pref.NavbarPreference{
SavedItems: []pref.NavLink{{
ID: "alerting",
Text: "Alerting",
Url: "/alerting",
}},
}
t.Run("Get with saved org and user home dashboard returns not found", func(t *testing.T) {
query := &pref.Preference{OrgID: 1, UserID: 1, TeamID: 2}
@@ -124,7 +117,7 @@ func testIntegrationPreferencesDataAccess(t *testing.T, fn getStore) {
Timezone: "browser",
HomeDashboardID: 5,
WeekStart: &weekStartOne,
JSONData: &pref.PreferenceJSONData{Navbar: orgNavbarPreferences},
JSONData: &pref.PreferenceJSONData{},
Created: time.Now(),
Updated: time.Now(),
})