use leptos::prelude::*; use leptos::task::spawn_local; use crate::api; #[component] pub fn Login() -> impl IntoView { let username = signal(String::new()); let password = signal(String::new()); let remember_me = signal(false); let error = signal(Option::::None); let loading = signal(false); let handle_login = move |ev: web_sys::SubmitEvent| { ev.prevent_default(); loading.1.set(true); error.1.set(None); let user = username.0.get(); let pass = password.0.get(); let rem = remember_me.0.get(); log::info!("Attempting login for user: {}", user); spawn_local(async move { match api::auth::login(&user, &pass, rem).await { Ok(_) => { log::info!("Login successful, redirecting..."); let window = web_sys::window().expect("window should exist"); let _ = window.location().set_href("/"); } Err(e) => { log::error!("Login failed: {:?}", e); error.1.set(Some("Geçersiz kullanıcı adı veya şifre".to_string())); loading.1.set(false); } } }); }; view! {

"VibeTorrent"

"Hesabınıza giriş yapın"

{move || error.0.get().unwrap_or_default()}
} }