diff options
Diffstat (limited to 'src/client/shell/preferences.rs')
| -rw-r--r-- | src/client/shell/preferences.rs | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/client/shell/preferences.rs b/src/client/shell/preferences.rs index f657dfbf..fcfe1440 100644 --- a/src/client/shell/preferences.rs +++ b/src/client/shell/preferences.rs @@ -7,6 +7,13 @@ static NEXT_TEMP_FILE: AtomicU64 = AtomicU64::new(1); use serde::{Deserialize, Serialize}; +#[derive(Clone, Debug, Deserialize, Serialize)] +pub(super) struct ClientRemoteCollapsedGroups { + pub(super) profile_id: String, + #[serde(default, skip_serializing_if = "Vec::is_empty")] + pub(super) collapsed_groups: Vec<String>, +} + #[derive(Clone, Debug, Default, Deserialize, Serialize)] pub(super) struct ClientChromePreferences { #[serde(default, skip_serializing_if = "Option::is_none")] @@ -19,6 +26,8 @@ pub(super) struct ClientChromePreferences { pub(super) agent_panel_sort: Option<crate::config::AgentPanelSortConfig>, #[serde(default, skip_serializing_if = "Vec::is_empty")] pub(super) collapsed_groups: Vec<String>, + #[serde(default, skip_serializing_if = "Vec::is_empty")] + pub(super) remote_collapsed_groups: Vec<ClientRemoteCollapsedGroups>, } pub(super) fn path_for_local_endpoint(socket_path: &Path) -> PathBuf { @@ -74,6 +83,16 @@ mod tests { } #[test] + fn legacy_preferences_default_remote_collapses() { + let preferences: ClientChromePreferences = + serde_json::from_str(r#"{"collapsed_groups":["/repo"]}"#) + .expect("legacy client chrome preferences"); + + assert_eq!(preferences.collapsed_groups, ["/repo"]); + assert!(preferences.remote_collapsed_groups.is_empty()); + } + + #[test] fn concurrent_stores_leave_complete_preferences() { let path = std::env::temp_dir().join(format!( "herdr-shell-concurrent-preferences-{}.json", |
