use leptos::prelude::*; use leptos::task::spawn_local; use crate::components::ui::card::{Card, CardHeader, CardContent}; use crate::components::ui::input::{Input, InputType}; #[component] pub fn Setup() -> impl IntoView { let username = RwSignal::new(String::new()); let password = RwSignal::new(String::new()); let confirm_password = RwSignal::new(String::new()); let error = signal(Option::::None); let loading = signal(false); let handle_setup = move |ev: web_sys::SubmitEvent| { ev.prevent_default(); let pass = password.get(); let confirm = confirm_password.get(); if pass != confirm { error.1.set(Some("Şifreler eşleşmiyor".to_string())); return; } if pass.len() < 6 { error.1.set(Some("Şifre en az 6 karakter olmalıdır".to_string())); return; } loading.1.set(true); error.1.set(None); let user = username.get(); spawn_local(async move { match shared::server_fns::auth::setup(user, pass).await { Ok(_) => { log::info!("Setup completed successfully, redirecting..."); let window = web_sys::window().expect("window should exist"); let _ = window.location().set_href("/"); } Err(e) => { log::error!("Setup failed: {:?}", e); error.1.set(Some("Kurulum sırasında bir hata oluştu".to_string())); loading.1.set(false); } } }); }; view! {

"VibeTorrent Kurulumu"

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

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