diff options
-rw-r--r-- | src/cmd/watch.rs | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/cmd/watch.rs b/src/cmd/watch.rs index ecdf04f..94891e6 100644 --- a/src/cmd/watch.rs +++ b/src/cmd/watch.rs @@ -242,6 +242,12 @@ impl WatchSession { )?; self.needs_redraw = true; } + crate::protocol::Message::Disconnected => { + self.reconnect(true)?; + } + crate::protocol::Message::Error { msg } => { + return Err(Error::Server { message: msg }); + } msg => { return Err(crate::error::Error::UnexpectedMessage { message: msg, @@ -631,7 +637,10 @@ impl futures::future::Future for WatchSession { ); } let res = crate::component_future::poll_future(self, Self::POLL_FNS); - if self.needs_redraw { + if res.is_err() { + self.state = State::Temporary; // drop alternate screen + self.raw_screen = None; + } else if self.needs_redraw { self.redraw()?; self.needs_redraw = false; } |