aboutsummaryrefslogtreecommitdiffstats
path: root/teleterm-web
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2019-11-25 13:54:17 -0500
committerJesse Luehrs <doy@tozt.net>2019-11-25 13:54:17 -0500
commit097f97b90ef5af2f2c75bbcce87d9c15a9a97c46 (patch)
treea7bdebccdc0035295aadd9b14ce410357c337f7e /teleterm-web
parent64134b9e72d6d3aff19354f77d211c046bd9086b (diff)
downloadteleterm-097f97b90ef5af2f2c75bbcce87d9c15a9a97c46.tar.gz
teleterm-097f97b90ef5af2f2c75bbcce87d9c15a9a97c46.zip
move value extraction logic into the view
since it depends more on the structure of the rendered page
Diffstat (limited to 'teleterm-web')
-rw-r--r--teleterm-web/src/lib.rs2
-rw-r--r--teleterm-web/src/model.rs6
-rw-r--r--teleterm-web/src/views/login.rs10
3 files changed, 10 insertions, 8 deletions
diff --git a/teleterm-web/src/lib.rs b/teleterm-web/src/lib.rs
index 37c7d0d..1e44d98 100644
--- a/teleterm-web/src/lib.rs
+++ b/teleterm-web/src/lib.rs
@@ -10,7 +10,7 @@ use crate::prelude::*;
#[allow(clippy::large_enum_variant)]
#[derive(Clone)]
enum Msg {
- Login,
+ Login(String),
LoggedIn(seed::fetch::ResponseDataResult<crate::protocol::LoginResponse>),
Refresh,
List(seed::fetch::ResponseDataResult<Vec<crate::protocol::Session>>),
diff --git a/teleterm-web/src/model.rs b/teleterm-web/src/model.rs
index 67cd984..7234df3 100644
--- a/teleterm-web/src/model.rs
+++ b/teleterm-web/src/model.rs
@@ -56,11 +56,7 @@ impl Model {
orders: &mut impl Orders<crate::Msg>,
) {
match msg {
- crate::Msg::Login => {
- let username = seed::to_input(
- &seed::document().get_element_by_id("username").unwrap(),
- )
- .value();
+ crate::Msg::Login(username) => {
log::debug!("login for username {}", username);
self.login(&username, orders);
}
diff --git a/teleterm-web/src/views/login.rs b/teleterm-web/src/views/login.rs
index bf2ae9a..a7d50c8 100644
--- a/teleterm-web/src/views/login.rs
+++ b/teleterm-web/src/views/login.rs
@@ -2,7 +2,6 @@ use crate::prelude::*;
pub(crate) fn render(_: &crate::model::Model) -> Vec<Node<crate::Msg>> {
vec![seed::form![
- seed::attrs! { At::Action => "#" },
seed::label![seed::attrs! { At::For => "username" }, "username"],
seed::input![seed::attrs! {
At::Id => "username",
@@ -12,6 +11,13 @@ pub(crate) fn render(_: &crate::model::Model) -> Vec<Node<crate::Msg>> {
seed::input![
seed::attrs! { At::Type => "submit", At::Value => "login" }
],
- simple_ev(Ev::Submit, crate::Msg::Login),
+ raw_ev(Ev::Submit, |event| {
+ event.prevent_default();
+ let username = seed::to_input(
+ &seed::document().get_element_by_id("username").unwrap(),
+ )
+ .value();
+ crate::Msg::Login(username)
+ }),
]]
}