From b28008bc97a7fbc9d4e7b6eac2c06d8e91e1fb16 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sat, 23 Nov 2019 16:10:04 -0500 Subject: start working on the login flow --- teleterm-web/src/model.rs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'teleterm-web/src/model.rs') diff --git a/teleterm-web/src/model.rs b/teleterm-web/src/model.rs index e4919e4..9f28b2d 100644 --- a/teleterm-web/src/model.rs +++ b/teleterm-web/src/model.rs @@ -13,6 +13,7 @@ impl Drop for WatchConn { } pub(crate) struct Model { + logged_in: bool, config: crate::config::Config, sessions: Vec, watch_conn: Option, @@ -21,6 +22,7 @@ pub(crate) struct Model { impl Model { pub(crate) fn new(config: crate::config::Config) -> Self { Self { + logged_in: false, config, sessions: vec![], watch_conn: None, @@ -33,6 +35,22 @@ impl Model { orders: &mut impl Orders, ) { match msg { + crate::Msg::Login => { + log::debug!("logging in"); + let url = format!( + "http://{}/login?username=foo", + self.config.public_address + ); + orders.perform_cmd( + seed::Request::new(url) + .fetch_json_data(crate::Msg::LoggedIn), + ); + } + crate::Msg::LoggedIn(..) => { + log::debug!("logged in"); + self.logged_in = true; + orders.send_msg(crate::Msg::Refresh); + } crate::Msg::List(sessions) => match sessions { Ok(sessions) => { log::debug!("got sessions"); @@ -90,6 +108,10 @@ impl Model { } } + pub(crate) fn logged_in(&self) -> bool { + self.logged_in + } + pub(crate) fn title(&self) -> &str { &self.config.title } -- cgit v1.2.3-54-g00ecf