aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/cmd/watch.rs11
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;
}