dialtone_yew 0.1.0

Dialtone Yew Webapp
use crate::app_types::AppPublicSiteInfo;
use crate::components::common::main_layout::*;
use crate::components::common::titled_panel::*;
use crate::MainRoute;
use bounce::use_atom_value;
use dialtone_common::rest::sites::site_data::RegistrationMethod;
use yew::prelude::*;
use yew_router::prelude::*;

use super::RegisterRoute;

#[function_component(Register)]
pub fn register() -> Html {
    let public_site_info = use_atom_value::<AppPublicSiteInfo>();

    if let Some(ref site_info) = public_site_info.0 {
        if site_info.registration_methods.is_empty() {
            html! {
                <MainLayout>
                    <div class="centered_form_page">
                        <TitledPanel title="Registration Closed">
                            <form class="one_column_form">
                                <span>{"Registration of new accounts is closed."}</span>
                                <span><Link<MainRoute> classes={classes!("in_page_action")} to={MainRoute::Login}>{"Login to Existing Account"}</Link<MainRoute>></span>
                            </form>
                        </TitledPanel>
                    </div>
                </MainLayout>
            }
        } else if site_info
            .registration_methods
            .contains(&RegistrationMethod::SimpleCode)
        {
            html! {<Redirect<RegisterRoute> to={RegisterRoute::SimpleCode}/>}
        } else {
            html! {<Redirect<RegisterRoute> to={RegisterRoute::Open}/>}
        }
    } else {
        html! {
            <>
                <div class="centered_form_page">
                    <TitledPanel title="Register Account">
                        <span>{"System Is Broken!"}</span>
                    </TitledPanel>
                </div>
            </>
        }
    }
}

#[function_component(RegisterSuccess)]
pub fn register_success() -> Html {
    html! {
        <MainLayout>
            <div class="centered_form_page">
                <TitledPanel title="Registration Success">
                    <div class="one_column_form">
                        <span>{"Account registration was successful."}</span>
                        <span><Link<MainRoute> classes={classes!("in_page_action")} to={MainRoute::Login}>{"Login to Account"}</Link<MainRoute>></span>
                    </div>
                </TitledPanel>
            </div>
        </MainLayout>
    }
}

#[function_component(RegisterApprovalNeeded)]
pub fn register_approval_needed() -> Html {
    html! {
        <MainLayout>
            <div class="centered_form_page">
                <TitledPanel title="Registration Success">
                    <div class="one_column_form">
                        <span>{"Account registration was successful but requires approval."}</span>
                        <span>{"Check back later."}</span>
                    </div>
                </TitledPanel>
            </div>
        </MainLayout>
    }
}