diff --git a/frontend/src/components/login.rs b/frontend/src/components/login.rs index de35299..174823f 100644 --- a/frontend/src/components/login.rs +++ b/frontend/src/components/login.rs @@ -30,17 +30,31 @@ pub fn Login(props: &LoginProps) -> Html { let on_server_url_change = { let server_url = server_url.clone(); + let remember_server = remember_server.clone(); Callback::from(move |e: Event| { let target = e.target_unchecked_into::(); - server_url.set(target.value()); + let new_value = target.value(); + server_url.set(new_value.clone()); + + // Save to localStorage immediately if remember is checked + if *remember_server { + let _ = LocalStorage::set("remembered_server_url", new_value); + } }) }; let on_username_change = { let username = username.clone(); + let remember_username = remember_username.clone(); Callback::from(move |e: Event| { let target = e.target_unchecked_into::(); - username.set(target.value()); + let new_value = target.value(); + username.set(new_value.clone()); + + // Save to localStorage immediately if remember is checked + if *remember_username { + let _ = LocalStorage::set("remembered_username", new_value); + } }) }; @@ -90,6 +104,8 @@ pub fn Login(props: &LoginProps) -> Html { let password = password.clone(); let error_message = error_message.clone(); let is_loading = is_loading.clone(); + let remember_server = remember_server.clone(); + let remember_username = remember_username.clone(); let on_login = props.on_login.clone(); Callback::from(move |e: SubmitEvent| { @@ -100,6 +116,8 @@ pub fn Login(props: &LoginProps) -> Html { let password = (*password).clone(); let error_message = error_message.clone(); let is_loading = is_loading.clone(); + let remember_server_value = *remember_server; + let remember_username_value = *remember_username; let on_login = on_login.clone(); // Basic client-side validation @@ -140,6 +158,14 @@ pub fn Login(props: &LoginProps) -> Html { let _ = LocalStorage::set("user_preferences", &prefs_json); } + // Save server URL and username to LocalStorage if remember checkboxes are checked + if remember_server_value { + let _ = LocalStorage::set("remembered_server_url", server_url.clone()); + } + if remember_username_value { + let _ = LocalStorage::set("remembered_username", username.clone()); + } + is_loading.set(false); on_login.emit(token); }