aboutsummaryrefslogtreecommitdiffstats
path: root/teleterm-web
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2019-11-23 02:13:41 -0500
committerJesse Luehrs <doy@tozt.net>2019-11-23 02:13:41 -0500
commit8e658044e344258f4674c6dc05af6cea7fa29765 (patch)
tree0aa9e5f17eb6847dd3762c8733f9ef1a024fd2f5 /teleterm-web
parent22e720c27736cec08133df05123c7f384e510fa3 (diff)
downloadteleterm-8e658044e344258f4674c6dc05af6cea7fa29765.tar.gz
teleterm-8e658044e344258f4674c6dc05af6cea7fa29765.zip
restrict the api a bit more
Diffstat (limited to 'teleterm-web')
-rw-r--r--teleterm-web/src/lib.rs5
-rw-r--r--teleterm-web/src/model.rs54
-rw-r--r--teleterm-web/src/prelude.rs4
-rw-r--r--teleterm-web/src/protocol.rs6
-rw-r--r--teleterm-web/src/views.rs8
5 files changed, 33 insertions, 44 deletions
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<Msg>) -> Init<crate::model::Model> {
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<crate::protocol::Session>,
watch_conn: Option<WatchConn>,
}
@@ -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<Item = crate::Msg, Error = crate::Msg> {
- 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<crate::Msg>,
- ) {
+ 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<crate::Msg>) {
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<crate::protocol::Session>,
- ) {
+ fn update_sessions(&mut self, sessions: Vec<crate::protocol::Session>) {
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<u8> },
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;