From 22e720c27736cec08133df05123c7f384e510fa3 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sat, 23 Nov 2019 02:04:27 -0500 Subject: move some things around --- teleterm-web/src/lib.rs | 55 ++----------------------------------------- teleterm-web/src/model.rs | 59 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+), 53 deletions(-) (limited to 'teleterm-web') 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>), Refresh, StartWatching(String), - Watch(String, ws::WebSocketEvent), + Watch(String, crate::ws::WebSocketEvent), StopWatching, } @@ -29,58 +29,7 @@ fn update( orders: &mut impl Orders, ) { 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 { 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, + ) { + 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 { -- cgit v1.2.3-54-g00ecf