diff options
author | Jesse Luehrs <doy@tozt.net> | 2019-11-23 02:04:27 -0500 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2019-11-23 02:05:41 -0500 |
commit | 22e720c27736cec08133df05123c7f384e510fa3 (patch) | |
tree | 79e566720c64913e37292c9c1fd3c122ce677ec8 /teleterm-web | |
parent | 7ec31cd46f8fa08747ef27d4a143881b662259c0 (diff) | |
download | teleterm-22e720c27736cec08133df05123c7f384e510fa3.tar.gz teleterm-22e720c27736cec08133df05123c7f384e510fa3.zip |
move some things around
Diffstat (limited to 'teleterm-web')
-rw-r--r-- | teleterm-web/src/lib.rs | 55 | ||||
-rw-r--r-- | teleterm-web/src/model.rs | 59 |
2 files changed, 61 insertions, 53 deletions
diff --git a/teleterm-web/src/lib.rs b/teleterm-web/src/lib.rs index 5d59f24..8913e3e 100644 --- a/teleterm-web/src/lib.rs +++ b/teleterm-web/src/lib.rs @@ -12,7 +12,7 @@ enum Msg { List(seed::fetch::ResponseDataResult<Vec<crate::protocol::Session>>), Refresh, StartWatching(String), - Watch(String, ws::WebSocketEvent), + Watch(String, crate::ws::WebSocketEvent), StopWatching, } @@ -29,58 +29,7 @@ fn update( orders: &mut impl Orders<Msg>, ) { log::trace!("update"); - match msg { - Msg::List(sessions) => match sessions { - Ok(sessions) => { - log::debug!("got sessions"); - model.update_sessions(sessions); - } - Err(e) => { - log::error!("error getting sessions: {:?}", e); - } - }, - Msg::Refresh => { - log::debug!("refreshing"); - orders.perform_cmd(model.list()); - } - Msg::StartWatching(id) => { - log::debug!("watching {}", id); - model.watch(&id, orders); - } - Msg::Watch(id, event) => match event { - ws::WebSocketEvent::Connected(_) => { - log::info!("{}: connected", id); - } - ws::WebSocketEvent::Disconnected(_) => { - log::info!("{}: disconnected", id); - } - ws::WebSocketEvent::Message(msg) => { - log::info!("{}: message: {:?}", id, msg); - let json = msg.data().as_string().unwrap(); - let msg: crate::protocol::Message = - serde_json::from_str(&json).unwrap(); - match msg { - crate::protocol::Message::TerminalOutput { data } => { - model.process(&data); - } - crate::protocol::Message::Disconnected => { - model.disconnect_watch(); - orders.perform_cmd(model.list()); - } - crate::protocol::Message::Resize { size } => { - model.set_size(size.rows, size.cols); - } - } - } - ws::WebSocketEvent::Error(e) => { - log::error!("{}: error: {:?}", id, e); - } - }, - Msg::StopWatching => { - model.disconnect_watch(); - orders.perform_cmd(model.list()); - } - } + model.update(msg, orders); } fn view(model: &crate::model::Model) -> impl View<Msg> { diff --git a/teleterm-web/src/model.rs b/teleterm-web/src/model.rs index ba707eb..dd95af3 100644 --- a/teleterm-web/src/model.rs +++ b/teleterm-web/src/model.rs @@ -21,6 +21,65 @@ pub struct Model { } impl Model { + pub(crate) fn update( + &mut self, + msg: crate::Msg, + orders: &mut impl Orders<crate::Msg>, + ) { + match msg { + crate::Msg::List(sessions) => match sessions { + Ok(sessions) => { + log::debug!("got sessions"); + self.update_sessions(sessions); + } + Err(e) => { + log::error!("error getting sessions: {:?}", e); + } + }, + crate::Msg::Refresh => { + log::debug!("refreshing"); + orders.perform_cmd(self.list()); + } + crate::Msg::StartWatching(id) => { + log::debug!("watching {}", id); + self.watch(&id, orders); + } + crate::Msg::Watch(id, event) => match event { + crate::ws::WebSocketEvent::Connected(_) => { + log::info!("{}: connected", id); + } + crate::ws::WebSocketEvent::Disconnected(_) => { + log::info!("{}: disconnected", id); + } + crate::ws::WebSocketEvent::Message(msg) => { + log::info!("{}: message: {:?}", id, msg); + let json = msg.data().as_string().unwrap(); + let msg: crate::protocol::Message = + serde_json::from_str(&json).unwrap(); + match msg { + crate::protocol::Message::TerminalOutput { data } => { + self.process(&data); + } + crate::protocol::Message::Disconnected => { + self.disconnect_watch(); + orders.perform_cmd(self.list()); + } + crate::protocol::Message::Resize { size } => { + self.set_size(size.rows, size.cols); + } + } + } + crate::ws::WebSocketEvent::Error(e) => { + log::error!("{}: error: {:?}", id, e); + } + }, + crate::Msg::StopWatching => { + self.disconnect_watch(); + orders.perform_cmd(self.list()); + } + } + } + pub(crate) fn list( &self, ) -> impl futures::Future<Item = crate::Msg, Error = crate::Msg> { |