use leptos::prelude::*; use leptos::task::spawn_local; use crate::components::ui::card::{Card, CardHeader, CardContent}; use crate::components::ui::input::{Input, InputType}; use crate::components::ui::button::Button; #[component] pub fn Login() -> impl IntoView { let username = RwSignal::new(String::new()); let password = RwSignal::new(String::new()); 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.get(); let pass = password.get(); spawn_local(async move { match shared::server_fns::auth::login(user, pass).await { Ok(_) => { let window = web_sys::window().expect("window should exist"); let _ = window.location().set_href("/"); } Err(_) => { 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()}
} }