use leptos::*; use crate::api; #[component] pub fn Setup() -> impl IntoView { let (username, set_username) = create_signal(String::new()); let (password, set_password) = create_signal(String::new()); let (confirm_password, set_confirm_password) = create_signal(String::new()); let (error, set_error) = create_signal(Option::::None); let (loading, set_loading) = create_signal(false); let handle_setup = move |ev: web_sys::SubmitEvent| { ev.prevent_default(); set_loading.set(true); set_error.set(None); let pass = password.get(); let confirm = confirm_password.get(); if pass != confirm { set_error.set(Some("Şifreler eşleşmiyor".to_string())); set_loading.set(false); return; } if pass.len() < 6 { set_error.set(Some("Şifre en az 6 karakter olmalıdır".to_string())); set_loading.set(false); return; } let username = username.get(); let password = pass; spawn_local(async move { match api::setup::setup(&username, &password).await { Ok(_) => { logging::log!("Setup completed successfully, redirecting..."); let _ = window().location().set_href("/"); } Err(e) => { logging::error!("Setup failed: {:?}", e); set_error.set(Some("Kurulum başarısız oldu".to_string())); } } set_loading.set(false); }); }; view! {

"VibeTorrent Kurulumu"

"Yönetici hesabınızı oluşturun"

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