diff --git a/flutter/lib/common.dart b/flutter/lib/common.dart index 799894f7e..328dd4e7a 100644 --- a/flutter/lib/common.dart +++ b/flutter/lib/common.dart @@ -1436,7 +1436,7 @@ Future _saveSessionWindowPosition( windowId, kWindowEventGetRemoteList, null); if (remoteList != null) { for (final peerId in remoteList.split(',')) { - bind.sessionSetFlutterConfigByPeerId( + bind.mainSetPeerFlutterConfigSync( id: peerId, k: kWindowPrefix + windowType.name, v: pos.toString()); } } diff --git a/src/client.rs b/src/client.rs index e9d319685..b71668a33 100644 --- a/src/client.rs +++ b/src/client.rs @@ -1214,7 +1214,11 @@ impl LoginConfigHandler { /// * `v` - value of option pub fn save_ui_flutter(&mut self, k: String, v: String) { let mut config = self.load_config(); - config.ui_flutter.insert(k, v); + if v.is_empty() { + config.ui_flutter.remove(&k); + } else { + config.ui_flutter.insert(k, v); + } self.save_config(config); } diff --git a/src/flutter_ffi.rs b/src/flutter_ffi.rs index ef4c9e2ba..8e0eda98b 100644 --- a/src/flutter_ffi.rs +++ b/src/flutter_ffi.rs @@ -219,17 +219,6 @@ pub fn session_get_flutter_config_by_peer_id(id: String, k: String) -> Option<St } } -pub fn session_set_flutter_config_by_peer_id(id: String, k: String, v: String) { - if let Some((_, session)) = SESSIONS - .write() - .unwrap() - .iter_mut() - .find(|(_, s)| s.id == id) - { - session.save_flutter_config(k, v); - } -} - pub fn get_next_texture_key() -> SyncReturn<i32> { let k = TEXTURE_RENDER_KEY.fetch_add(1, Ordering::SeqCst) + 1; SyncReturn(k) @@ -812,6 +801,11 @@ pub fn main_get_peer_flutter_config_sync(id: String, k: String) -> SyncReturn<St SyncReturn(get_peer_flutter_config(id, k)) } +pub fn main_set_peer_flutter_config_sync(id: String, k: String, v: String) -> SyncReturn<()> { + set_peer_flutter_config(id, k, v); + SyncReturn(()) +} + pub fn main_set_peer_option(id: String, key: String, value: String) { set_peer_option(id, key, value) } diff --git a/src/ui_interface.rs b/src/ui_interface.rs index b5f0cdb18..019cb2d5e 100644 --- a/src/ui_interface.rs +++ b/src/ui_interface.rs @@ -215,6 +215,18 @@ pub fn get_peer_flutter_config(id: String, name: String) -> String { c.ui_flutter.get(&name).unwrap_or(&"".to_owned()).to_owned() } +#[inline] +#[cfg(feature = "flutter")] +pub fn set_peer_flutter_config(id: String, name: String, value: String) { + let mut c = PeerConfig::load(&id); + if value.is_empty() { + c.ui_flutter.remove(&name); + } else { + c.ui_flutter.insert(name, value); + } + c.store(&id); +} + #[inline] pub fn set_peer_option(id: String, name: String, value: String) { let mut c = PeerConfig::load(&id);