use std::rc::Rc;
use crate::components::common::dt_button::*;
use crate::components::common::main_layout::*;
use crate::components::common::titled_panel::*;
use crate::{AppSiteConnection, MainRoute};
use bounce::use_atom_setter;
use yew::prelude::*;
use yew_router::prelude::*;
struct LogoutFormState {
pub history: AnyHistory,
pub sc_atom: Rc<dyn Fn(AppSiteConnection)>,
}
#[function_component(Logout)]
pub fn logout() -> Html {
let form_state = Rc::new(LogoutFormState {
history: use_history().unwrap(),
sc_atom: use_atom_setter::<AppSiteConnection>(),
});
let on_button_click = {
Callback::from(move |_| {
let form_state = Rc::clone(&form_state);
AppSiteConnection::reset();
let app_site_connection = AppSiteConnection::default();
(form_state.sc_atom)(app_site_connection);
form_state.history.push(MainRoute::Home);
})
};
let h = html! {
<MainLayout>
<div class="centered_form_page">
<TitledPanel title="Logout">
<form class="one_column_form" onsubmit={Callback::from(|e: FocusEvent| e.prevent_default())}>
<DtButton text="Logout" disabled=false on_click={on_button_click.clone()} id="logout_button" in_progress=false/>
</form>
</TitledPanel>
</div>
</MainLayout>
};
h
}