From f08b425d27ceb318d43d106b1c29bd51098808de Mon Sep 17 00:00:00 2001 From: Dominic Clifton Date: Tue, 4 Feb 2025 20:37:57 +0100 Subject: [PATCH] Introduce `LoginArgs` instead of passing username and password around in tuples or individually. * where variables are frequently/always used together it indicates a structure should be used to hold them. --- examples/forms-signup.rs | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/examples/forms-signup.rs b/examples/forms-signup.rs index 146dfa3af..22820233f 100644 --- a/examples/forms-signup.rs +++ b/examples/forms-signup.rs @@ -58,11 +58,20 @@ struct SignupFormFields { } impl SignupFormFields { - pub fn result(&self) -> (String, MaskedString) { - (self.username.get(), self.password.get()) + pub fn result(&self) -> LoginArgs { + LoginArgs { + username: self.username.get(), + password: self.password.get(), + } } } +#[derive(Debug)] +struct LoginArgs { + username: String, + password: MaskedString, +} + #[derive(Default)] struct SignupForm { state: Dynamic::, @@ -92,10 +101,9 @@ impl SignupForm { let app_state = app_state.clone(); let api = api.clone(); let api_errors = api_errors.clone(); - move |(username, password)| { + move |login_args: LoginArgs| { handle_login( - username, - password, + login_args, &api, &app_state, &form_state, @@ -283,16 +291,15 @@ fn logged_in(username: &str, app_state: &Dynamic) -> impl MakeWidget { } fn handle_login( - username: String, - password: MaskedString, + login_args: LoginArgs, api: &channel::Sender, app_state: &Dynamic, form_state: &Dynamic, api_errors: &Dynamic>, ) { let request = FakeApiRequestKind::SignUp { - username: username.clone(), - password, + username: login_args.username.clone(), + password: login_args.password, }; let response = request @@ -300,7 +307,7 @@ fn handle_login( match response { FakeApiResponse::SignUpSuccess => { - app_state.set(AppState::LoggedIn { username }); + app_state.set(AppState::LoggedIn { username: login_args.username }); form_state.set(NewUserState::Done); } FakeApiResponse::SignUpFailure(errors) => {