diff options
Diffstat (limited to 'teleterm-web')
-rw-r--r-- | teleterm-web/src/lib.rs | 4 | ||||
-rw-r--r-- | teleterm-web/src/model.rs | 4 | ||||
-rw-r--r-- | teleterm-web/src/protocol.rs | 1 |
3 files changed, 9 insertions, 0 deletions
diff --git a/teleterm-web/src/lib.rs b/teleterm-web/src/lib.rs index 118ab2f..2ff1514 100644 --- a/teleterm-web/src/lib.rs +++ b/teleterm-web/src/lib.rs @@ -62,6 +62,10 @@ fn update( crate::protocol::Message::TerminalOutput { data } => { model.process(&data); } + crate::protocol::Message::Disconnected => { + model.disconnect_watch(); + orders.perform_cmd(model.list()); + } } } ws::WebSocketEvent::Error(e) => { diff --git a/teleterm-web/src/model.rs b/teleterm-web/src/model.rs index f83036b..dfaccc8 100644 --- a/teleterm-web/src/model.rs +++ b/teleterm-web/src/model.rs @@ -60,6 +60,10 @@ impl Model { self.watch_conn.is_some() } + pub fn disconnect_watch(&mut self) { + self.watch_conn = None; + } + pub fn process(&mut self, bytes: &[u8]) { if let Some(conn) = &mut self.watch_conn { conn.term.process(bytes); diff --git a/teleterm-web/src/protocol.rs b/teleterm-web/src/protocol.rs index d9f3a8e..af40891 100644 --- a/teleterm-web/src/protocol.rs +++ b/teleterm-web/src/protocol.rs @@ -4,4 +4,5 @@ #[derive(Debug, Clone, PartialEq, Eq, serde::Deserialize)] pub enum Message { TerminalOutput { data: Vec<u8> }, + Disconnected, } |