aboutsummaryrefslogtreecommitdiffstats
path: root/teleterm-web/src/views/page.rs
blob: 677a2c984f83e832a7cd41fe12b76bc696712891 (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
use crate::prelude::*;

pub(crate) fn render(model: &crate::model::Model) -> Vec<Node<crate::Msg>> {
    let mut view = vec![seed::h1!["teleterm"]];

    if let Some(username) = model.username() {
        view.push(seed::p!["logged in as ", username]);
        view.push(seed::button![
            simple_ev(Ev::Click, crate::Msg::Logout),
            "logout"
        ]);
    } else {
        view.push(seed::p!["not logged in"]);
    }

    if model.logging_in() {
        if model.username().is_some() {
            view.push(seed::p!["loading..."]);
        } else {
            view.extend(super::login::render(model))
        }
    } else if model.choosing() {
        view.extend(super::list::render(model))
    } else if model.watching() {
        view.extend(super::watch::render(model))
    } else {
        unreachable!()
    }

    view
}