Navigation: Backend to save navigation customization into preferences (#89783)
This commit is contained in:
@@ -67,6 +67,7 @@ type SavePreferenceCommand struct {
|
||||
Language string `json:"language,omitempty"`
|
||||
QueryHistory *QueryHistoryPreference `json:"queryHistory,omitempty"`
|
||||
CookiePreferences []CookieType `json:"cookiePreferences,omitempty"`
|
||||
Navbar *NavbarPreference `json:"navbar,omitempty"`
|
||||
}
|
||||
|
||||
type PatchPreferenceCommand struct {
|
||||
@@ -82,18 +83,24 @@ type PatchPreferenceCommand struct {
|
||||
Language *string `json:"language,omitempty"`
|
||||
QueryHistory *QueryHistoryPreference `json:"queryHistory,omitempty"`
|
||||
CookiePreferences []CookieType `json:"cookiePreferences,omitempty"`
|
||||
Navbar *NavbarPreference `json:"navbar,omitempty"`
|
||||
}
|
||||
|
||||
type PreferenceJSONData struct {
|
||||
Language string `json:"language"`
|
||||
QueryHistory QueryHistoryPreference `json:"queryHistory"`
|
||||
CookiePreferences map[string]struct{} `json:"cookiePreferences"`
|
||||
Navbar NavbarPreference `json:"navbar"`
|
||||
}
|
||||
|
||||
type QueryHistoryPreference struct {
|
||||
HomeTab string `json:"homeTab"`
|
||||
}
|
||||
|
||||
type NavbarPreference struct {
|
||||
SavedItemIds []string `json:"savedItemIds"`
|
||||
}
|
||||
|
||||
func (j *PreferenceJSONData) FromDB(data []byte) error {
|
||||
dec := json.NewDecoder(bytes.NewBuffer(data))
|
||||
dec.UseNumber()
|
||||
|
||||
@@ -46,6 +46,7 @@ func UpdatePreferencesFor(ctx context.Context,
|
||||
HomeDashboardID: dtoCmd.HomeDashboardID,
|
||||
QueryHistory: dtoCmd.QueryHistory,
|
||||
CookiePreferences: dtoCmd.Cookies,
|
||||
Navbar: dtoCmd.Navbar,
|
||||
}
|
||||
|
||||
if err := preferenceService.Save(ctx, &saveCmd); err != nil {
|
||||
@@ -96,6 +97,13 @@ func GetPreferencesFor(ctx context.Context,
|
||||
dto.Language = &preference.JSONData.Language
|
||||
}
|
||||
|
||||
if preference.JSONData.Navbar.SavedItemIds != nil {
|
||||
dto.Navbar = &preferences.NavbarPreference{
|
||||
SavedItemIds: []string{},
|
||||
}
|
||||
dto.Navbar.SavedItemIds = preference.JSONData.Navbar.SavedItemIds
|
||||
}
|
||||
|
||||
if preference.JSONData.QueryHistory.HomeTab != "" {
|
||||
dto.QueryHistory = &preferences.QueryHistoryPreference{
|
||||
HomeTab: &preference.JSONData.QueryHistory.HomeTab,
|
||||
|
||||
@@ -71,6 +71,10 @@ func (s *Service) GetWithDefaults(ctx context.Context, query *pref.GetPreference
|
||||
res.JSONData.QueryHistory.HomeTab = p.JSONData.QueryHistory.HomeTab
|
||||
}
|
||||
|
||||
if p.JSONData.Navbar.SavedItemIds != nil {
|
||||
res.JSONData.Navbar.SavedItemIds = p.JSONData.Navbar.SavedItemIds
|
||||
}
|
||||
|
||||
if p.JSONData.CookiePreferences != nil {
|
||||
res.JSONData.CookiePreferences = p.JSONData.CookiePreferences
|
||||
}
|
||||
@@ -170,6 +174,13 @@ func (s *Service) Patch(ctx context.Context, cmd *pref.PatchPreferenceCommand) e
|
||||
preference.JSONData.Language = *cmd.Language
|
||||
}
|
||||
|
||||
if cmd.Navbar != nil && cmd.Navbar.SavedItemIds != nil {
|
||||
if preference.JSONData == nil {
|
||||
preference.JSONData = &pref.PreferenceJSONData{}
|
||||
}
|
||||
preference.JSONData.Navbar.SavedItemIds = cmd.Navbar.SavedItemIds
|
||||
}
|
||||
|
||||
if cmd.QueryHistory != nil {
|
||||
if preference.JSONData == nil {
|
||||
preference.JSONData = &pref.PreferenceJSONData{}
|
||||
@@ -257,6 +268,9 @@ func preferenceData(cmd *pref.SavePreferenceCommand) (*pref.PreferenceJSONData,
|
||||
Language: cmd.Language,
|
||||
}
|
||||
|
||||
if cmd.Navbar != nil {
|
||||
jsonData.Navbar = *cmd.Navbar
|
||||
}
|
||||
if cmd.QueryHistory != nil {
|
||||
jsonData.QueryHistory = *cmd.QueryHistory
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user