diff --git a/libs/hbb_common/src/config.rs b/libs/hbb_common/src/config.rs index 2cb0072c5..c0f14cbf6 100644 --- a/libs/hbb_common/src/config.rs +++ b/libs/hbb_common/src/config.rs @@ -214,7 +214,7 @@ pub struct Resolution { pub h: i32, } -#[derive(Debug, Default, Serialize, Deserialize, Clone, PartialEq)] +#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)] pub struct PeerConfig { #[serde(default, deserialize_with = "deserialize_vec_u8")] pub password: Vec, @@ -296,6 +296,38 @@ pub struct PeerConfig { pub transfer: TransferSerde, } +impl Default for PeerConfig { + fn default() -> Self { + Self { + password: Default::default(), + size: Default::default(), + size_ft: Default::default(), + size_pf: Default::default(), + view_style: Self::default_view_style(), + scroll_style: Self::default_scroll_style(), + image_quality: Self::default_image_quality(), + custom_image_quality: Self::default_custom_image_quality(), + show_remote_cursor: Default::default(), + lock_after_session_end: Default::default(), + privacy_mode: Default::default(), + allow_swap_key: Default::default(), + port_forwards: Default::default(), + direct_failures: Default::default(), + disable_audio: Default::default(), + disable_clipboard: Default::default(), + enable_file_transfer: Default::default(), + show_quality_monitor: Default::default(), + keyboard_mode: Default::default(), + view_only: Default::default(), + custom_resolutions: Default::default(), + options: Self::default_options(), + ui_flutter: Default::default(), + info: Default::default(), + transfer: Default::default(), + } + } +} + #[derive(Debug, PartialEq, Default, Serialize, Deserialize, Clone)] pub struct PeerInfoSerde { #[serde(default, deserialize_with = "deserialize_string")] @@ -1124,6 +1156,17 @@ impl PeerConfig { D: de::Deserializer<'de>, { let mut mp: HashMap = de::Deserialize::deserialize(deserializer)?; + Self::insert_default_options(&mut mp); + Ok(mp) + } + + fn default_options() -> HashMap { + let mut mp: HashMap = Default::default(); + Self::insert_default_options(&mut mp); + return mp; + } + + fn insert_default_options(mp: &mut HashMap) { let mut key = "codec-preference"; if !mp.contains_key(key) { mp.insert(key.to_owned(), UserDefaultConfig::read().get(key)); @@ -1136,7 +1179,6 @@ impl PeerConfig { if !mp.contains_key(key) { mp.insert(key.to_owned(), UserDefaultConfig::read().get(key)); } - Ok(mp) } }