From 8e658044e344258f4674c6dc05af6cea7fa29765 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sat, 23 Nov 2019 02:13:41 -0500 Subject: restrict the api a bit more --- teleterm-web/src/lib.rs | 5 ++-- teleterm-web/src/model.rs | 54 ++++++++++++++++++-------------------------- teleterm-web/src/prelude.rs | 4 ++-- teleterm-web/src/protocol.rs | 6 ++--- teleterm-web/src/views.rs | 8 +++---- 5 files changed, 33 insertions(+), 44 deletions(-) (limited to 'teleterm-web') diff --git a/teleterm-web/src/lib.rs b/teleterm-web/src/lib.rs index 8913e3e..1b8fdde 100644 --- a/teleterm-web/src/lib.rs +++ b/teleterm-web/src/lib.rs @@ -18,9 +18,8 @@ enum Msg { fn init(_: Url, orders: &mut impl Orders) -> Init { log::trace!("init"); - let model = crate::model::Model::default(); - orders.perform_cmd(model.list()); - Init::new(model) + orders.send_msg(Msg::Refresh); + Init::new(crate::model::Model::default()) } fn update( diff --git a/teleterm-web/src/model.rs b/teleterm-web/src/model.rs index dd95af3..362b4bd 100644 --- a/teleterm-web/src/model.rs +++ b/teleterm-web/src/model.rs @@ -15,7 +15,7 @@ impl Drop for WatchConn { } #[derive(Default)] -pub struct Model { +pub(crate) struct Model { sessions: Vec, watch_conn: Option, } @@ -38,7 +38,10 @@ impl Model { }, crate::Msg::Refresh => { log::debug!("refreshing"); - orders.perform_cmd(self.list()); + orders.perform_cmd( + seed::Request::new(LIST_URL) + .fetch_json_data(crate::Msg::List), + ); } crate::Msg::StartWatching(id) => { log::debug!("watching {}", id); @@ -62,7 +65,7 @@ impl Model { } crate::protocol::Message::Disconnected => { self.disconnect_watch(); - orders.perform_cmd(self.list()); + orders.send_msg(crate::Msg::Refresh); } crate::protocol::Message::Resize { size } => { self.set_size(size.rows, size.cols); @@ -75,22 +78,24 @@ impl Model { }, crate::Msg::StopWatching => { self.disconnect_watch(); - orders.perform_cmd(self.list()); + orders.send_msg(crate::Msg::Refresh); } } } - pub(crate) fn list( - &self, - ) -> impl futures::Future { - seed::Request::new(LIST_URL).fetch_json_data(crate::Msg::List) + pub(crate) fn screen(&self) -> Option<&vt100::Screen> { + self.watch_conn.as_ref().map(|conn| conn.term.screen()) } - pub(crate) fn watch( - &mut self, - id: &str, - orders: &mut impl Orders, - ) { + pub(crate) fn sessions(&self) -> &[crate::protocol::Session] { + &self.sessions + } + + pub(crate) fn watching(&self) -> bool { + self.watch_conn.is_some() + } + + fn watch(&mut self, id: &str, orders: &mut impl Orders) { let ws = crate::ws::connect( &format!("{}?id={}", WATCH_URL, id), id, @@ -101,38 +106,23 @@ impl Model { self.watch_conn = Some(WatchConn { ws, term }) } - pub fn sessions(&self) -> &[crate::protocol::Session] { - &self.sessions - } - - pub fn update_sessions( - &mut self, - sessions: Vec, - ) { + fn update_sessions(&mut self, sessions: Vec) { self.sessions = sessions; } - pub fn watching(&self) -> bool { - self.watch_conn.is_some() - } - - pub fn disconnect_watch(&mut self) { + fn disconnect_watch(&mut self) { self.watch_conn = None; } - pub fn process(&mut self, bytes: &[u8]) { + fn process(&mut self, bytes: &[u8]) { if let Some(conn) = &mut self.watch_conn { conn.term.process(bytes); } } - pub fn set_size(&mut self, rows: u16, cols: u16) { + fn set_size(&mut self, rows: u16, cols: u16) { if let Some(conn) = &mut self.watch_conn { conn.term.set_size(rows, cols); } } - - pub fn screen(&self) -> Option<&vt100::Screen> { - self.watch_conn.as_ref().map(|conn| conn.term.screen()) - } } diff --git a/teleterm-web/src/prelude.rs b/teleterm-web/src/prelude.rs index afab8ab..68b810d 100644 --- a/teleterm-web/src/prelude.rs +++ b/teleterm-web/src/prelude.rs @@ -1,2 +1,2 @@ -pub use seed::prelude::*; -pub use web_sys::{ErrorEvent, MessageEvent, WebSocket}; +pub(crate) use seed::prelude::*; +pub(crate) use web_sys::{ErrorEvent, MessageEvent, WebSocket}; diff --git a/teleterm-web/src/protocol.rs b/teleterm-web/src/protocol.rs index 9c0c144..4cbedf2 100644 --- a/teleterm-web/src/protocol.rs +++ b/teleterm-web/src/protocol.rs @@ -2,14 +2,14 @@ // crate or something? but ideally in a way that doesn't require pulling in // tokio #[derive(Clone, Debug, serde::Deserialize)] -pub enum Message { +pub(crate) enum Message { TerminalOutput { data: Vec }, Disconnected, Resize { size: Size }, } #[derive(Clone, Debug, serde::Deserialize)] -pub struct Session { +pub(crate) struct Session { pub id: String, pub username: String, pub term_type: String, @@ -20,7 +20,7 @@ pub struct Session { } #[derive(Clone, Debug, serde::Deserialize)] -pub struct Size { +pub(crate) struct Size { pub rows: u16, pub cols: u16, } diff --git a/teleterm-web/src/views.rs b/teleterm-web/src/views.rs index dfcfa59..738dad7 100644 --- a/teleterm-web/src/views.rs +++ b/teleterm-web/src/views.rs @@ -1,4 +1,4 @@ -pub mod list; -pub mod page; -pub mod terminal; -pub mod watch; +pub(crate) mod list; +pub(crate) mod page; +pub(crate) mod terminal; +pub(crate) mod watch; -- cgit v1.2.3-54-g00ecf