From 097f97b90ef5af2f2c75bbcce87d9c15a9a97c46 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Mon, 25 Nov 2019 13:54:17 -0500 Subject: move value extraction logic into the view since it depends more on the structure of the rendered page --- teleterm-web/src/lib.rs | 2 +- teleterm-web/src/model.rs | 6 +----- teleterm-web/src/views/login.rs | 10 ++++++++-- 3 files changed, 10 insertions(+), 8 deletions(-) (limited to 'teleterm-web') 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), Refresh, List(seed::fetch::ResponseDataResult>), 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, ) { 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> { 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> { 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) + }), ]] } -- cgit v1.2.3-54-g00ecf