blob: 112f9306e30f2b45196e2255dc2ba39272e6373a (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
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<UpdateMessage>)>);
view! {
{move || match &*app.read() {
AppState::LoggedOut => view! { <LoginPage set_app set_client /> }.into_any(),
AppState::LoggedIn => {
if let Some((client, updates)) = set_client.write_untracked().take() {
view! { <Macaw client updates set_app /> }.into_any()
} else {
set_app.set(AppState::LoggedOut);
view! { <LoginPage set_app set_client /> }.into_any()
}
}
}}
}
}
|