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