aboutsummaryrefslogtreecommitdiffstats
path: root/teleterm-web
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2019-11-23 02:04:27 -0500
committerJesse Luehrs <doy@tozt.net>2019-11-23 02:05:41 -0500
commit22e720c27736cec08133df05123c7f384e510fa3 (patch)
tree79e566720c64913e37292c9c1fd3c122ce677ec8 /teleterm-web
parent7ec31cd46f8fa08747ef27d4a143881b662259c0 (diff)
downloadteleterm-22e720c27736cec08133df05123c7f384e510fa3.tar.gz
teleterm-22e720c27736cec08133df05123c7f384e510fa3.zip
move some things around
Diffstat (limited to 'teleterm-web')
-rw-r--r--teleterm-web/src/lib.rs55
-rw-r--r--teleterm-web/src/model.rs59
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> {