use filamento::UpdateMessage; use leptos::prelude::*; use login_page::LoginPage; use macaw::Macaw; use tokio::sync::mpsc::Receiver; use crate::client::Client; pub mod login_page; pub mod macaw; pub enum AppState { LoggedOut, LoggedIn, } #[component] pub fn App() -> impl IntoView { let (app, set_app) = signal(AppState::LoggedOut); let (client, set_client) = signal(None::<(Client, Receiver)>); view! { {move || match &*app.read() { AppState::LoggedOut => view! { }.into_any(), AppState::LoggedIn => { if let Some((client, updates)) = set_client.write_untracked().take() { view! { }.into_any() } else { set_app.set(AppState::LoggedOut); view! { }.into_any() } } }} } }