Preferences: Fixes broken preferences after recent merge (#48157)

* Preferences: Fixes broken preferences after recent merge

* Added check

* Shorter syntax

* Fixed test

* Remove error, and remove duplicate call
This commit is contained in:
Torkel Ödegaard 2022-04-24 17:50:10 +02:00 committed by GitHub
parent ea52663dd9
commit 70a7b73839
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 8 additions and 12 deletions

View File

@ -168,12 +168,12 @@ func (hs *HTTPServer) ReqCanAdminTeams(c *models.ReqContext) bool {
return c.OrgRole == models.ROLE_ADMIN || (hs.Cfg.EditorsCanAdmin && c.OrgRole == models.ROLE_EDITOR)
}
func (hs *HTTPServer) getNavTree(c *models.ReqContext, hasEditPerm bool) ([]*dtos.NavLink, error) {
func (hs *HTTPServer) getNavTree(c *models.ReqContext, hasEditPerm bool, prefs *pref.Preference) ([]*dtos.NavLink, error) {
hasAccess := ac.HasAccess(hs.AccessControl, c)
navTree := []*dtos.NavLink{}
if hs.Features.IsEnabled(featuremgmt.FlagNewNavigation) {
savedItemsLinks, err := hs.buildSavedItemsNavLinks(c)
savedItemsLinks, err := hs.buildSavedItemsNavLinks(c, prefs)
if err != nil {
return nil, err
}
@ -411,16 +411,11 @@ func (hs *HTTPServer) addHelpLinks(navTree []*dtos.NavLink, c *models.ReqContext
return navTree
}
func (hs *HTTPServer) buildSavedItemsNavLinks(c *models.ReqContext) ([]*dtos.NavLink, error) {
func (hs *HTTPServer) buildSavedItemsNavLinks(c *models.ReqContext, prefs *pref.Preference) ([]*dtos.NavLink, error) {
savedItemsChildNavs := []*dtos.NavLink{}
// query preferences table for any saved items
prefsQuery := pref.GetPreferenceWithDefaultsQuery{UserID: c.SignedInUser.UserId}
preference, err := hs.preferenceService.GetWithDefaults(c.Req.Context(), &prefsQuery)
if err != nil {
return nil, err
}
savedItems := preference.JSONData.Navbar.SavedItems
savedItems := prefs.JSONData.Navbar.SavedItems
if len(savedItems) > 0 {
for _, savedItem := range savedItems {
@ -665,7 +660,7 @@ func (hs *HTTPServer) setIndexViewData(c *models.ReqContext) (*dtos.IndexViewDat
settings["dateFormats"] = hs.Cfg.DateFormats
prefsQuery := pref.GetPreferenceWithDefaultsQuery{UserID: c.SignedInUser.UserId}
prefsQuery := pref.GetPreferenceWithDefaultsQuery{UserID: c.UserId, OrgID: c.OrgId, Teams: c.Teams}
prefs, err := hs.preferenceService.GetWithDefaults(c.Req.Context(), &prefsQuery)
if err != nil {
return nil, err
@ -690,7 +685,7 @@ func (hs *HTTPServer) setIndexViewData(c *models.ReqContext) (*dtos.IndexViewDat
settings["appSubUrl"] = ""
}
navTree, err := hs.getNavTree(c, hasEditPerm)
navTree, err := hs.getNavTree(c, hasEditPerm, prefs)
if err != nil {
return nil, err
}

View File

@ -30,6 +30,7 @@ func (s *Service) GetWithDefaults(ctx context.Context, query *pref.GetPreference
OrgID: query.OrgID,
UserID: query.UserID,
}
prefs, err := s.store.List(ctx, listQuery)
if err != nil {
return nil, err

View File

@ -107,7 +107,7 @@ func TestPreferencesService(t *testing.T) {
Theme: "light",
Timezone: "UTC",
}
query := &pref.GetPreferenceWithDefaultsQuery{}
query := &pref.GetPreferenceWithDefaultsQuery{OrgID: 1}
preference, err := prefService.GetWithDefaults(context.Background(), query)
require.NoError(t, err)
expected := &pref.Preference{