Merge pull request #5377 from dignow/fix/handle_peer_info_cached
Fix, check if is cached peer info when handle_peer_info
This commit is contained in:
commit
5112398ad3
@ -2366,7 +2366,7 @@ pub trait Interface: Send + Clone + 'static + Sized {
|
|||||||
fn send(&self, data: Data);
|
fn send(&self, data: Data);
|
||||||
fn msgbox(&self, msgtype: &str, title: &str, text: &str, link: &str);
|
fn msgbox(&self, msgtype: &str, title: &str, text: &str, link: &str);
|
||||||
fn handle_login_error(&mut self, err: &str) -> bool;
|
fn handle_login_error(&mut self, err: &str) -> bool;
|
||||||
fn handle_peer_info(&mut self, pi: PeerInfo);
|
fn handle_peer_info(&mut self, pi: PeerInfo, is_cached_pi: bool);
|
||||||
fn on_error(&self, err: &str) {
|
fn on_error(&self, err: &str) {
|
||||||
self.msgbox("error", "Error", err, "");
|
self.msgbox("error", "Error", err, "");
|
||||||
}
|
}
|
||||||
|
@ -1026,7 +1026,7 @@ impl<T: InvokeUiSession> Remote<T> {
|
|||||||
{
|
{
|
||||||
self.handler.cache_flutter.write().unwrap().pi = pi.clone();
|
self.handler.cache_flutter.write().unwrap().pi = pi.clone();
|
||||||
}
|
}
|
||||||
self.handler.handle_peer_info(pi);
|
self.handler.handle_peer_info(pi, false);
|
||||||
#[cfg(not(feature = "flutter"))]
|
#[cfg(not(feature = "flutter"))]
|
||||||
self.check_clipboard_file_context();
|
self.check_clipboard_file_context();
|
||||||
if !(self.handler.is_file_transfer() || self.handler.is_port_forward()) {
|
if !(self.handler.is_file_transfer() || self.handler.is_port_forward()) {
|
||||||
@ -1506,6 +1506,12 @@ impl<T: InvokeUiSession> Remote<T> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
Some(message::Union::PeerInfo(pi)) => {
|
Some(message::Union::PeerInfo(pi)) => {
|
||||||
|
#[cfg(feature = "flutter")]
|
||||||
|
#[cfg(not(any(target_os = "android", target_os = "ios")))]
|
||||||
|
{
|
||||||
|
self.handler.cache_flutter.write().unwrap().pi.displays =
|
||||||
|
pi.displays.clone();
|
||||||
|
}
|
||||||
self.handler.set_displays(&pi.displays);
|
self.handler.set_displays(&pi.displays);
|
||||||
}
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
|
@ -146,7 +146,7 @@ async fn connect_and_login(
|
|||||||
return Ok(None);
|
return Ok(None);
|
||||||
}
|
}
|
||||||
Some(login_response::Union::PeerInfo(pi)) => {
|
Some(login_response::Union::PeerInfo(pi)) => {
|
||||||
interface.handle_peer_info(pi);
|
interface.handle_peer_info(pi, false);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
|
@ -1095,7 +1095,7 @@ impl<T: InvokeUiSession> Interface for Session<T> {
|
|||||||
handle_login_error(self.lc.clone(), err, self)
|
handle_login_error(self.lc.clone(), err, self)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn handle_peer_info(&mut self, mut pi: PeerInfo) {
|
fn handle_peer_info(&mut self, mut pi: PeerInfo, is_cached_pi: bool) {
|
||||||
log::debug!("handle_peer_info :{:?}", pi);
|
log::debug!("handle_peer_info :{:?}", pi);
|
||||||
pi.username = self.lc.read().unwrap().get_username(&pi);
|
pi.username = self.lc.read().unwrap().get_username(&pi);
|
||||||
if pi.current_display as usize >= pi.displays.len() {
|
if pi.current_display as usize >= pi.displays.len() {
|
||||||
@ -1116,11 +1116,13 @@ impl<T: InvokeUiSession> Interface for Session<T> {
|
|||||||
self.msgbox("error", "Remote Error", "No Display", "");
|
self.msgbox("error", "Remote Error", "No Display", "");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if !is_cached_pi {
|
||||||
self.try_change_init_resolution(pi.current_display);
|
self.try_change_init_resolution(pi.current_display);
|
||||||
let p = self.lc.read().unwrap().should_auto_login();
|
let p = self.lc.read().unwrap().should_auto_login();
|
||||||
if !p.is_empty() {
|
if !p.is_empty() {
|
||||||
input_os_password(p, true, self.clone());
|
input_os_password(p, true, self.clone());
|
||||||
}
|
}
|
||||||
|
}
|
||||||
let current = &pi.displays[pi.current_display as usize];
|
let current = &pi.displays[pi.current_display as usize];
|
||||||
self.set_display(
|
self.set_display(
|
||||||
current.x,
|
current.x,
|
||||||
@ -1228,7 +1230,7 @@ impl<T: InvokeUiSession> Session<T> {
|
|||||||
self.set_connection_type(is_secured, direct);
|
self.set_connection_type(is_secured, direct);
|
||||||
}
|
}
|
||||||
let pi = self.cache_flutter.read().unwrap().pi.clone();
|
let pi = self.cache_flutter.read().unwrap().pi.clone();
|
||||||
self.handle_peer_info(pi);
|
self.handle_peer_info(pi, true);
|
||||||
if let Some(sp) = self.cache_flutter.read().unwrap().sp.as_ref() {
|
if let Some(sp) = self.cache_flutter.read().unwrap().sp.as_ref() {
|
||||||
self.handle_peer_switch_display(sp);
|
self.handle_peer_switch_display(sp);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user