use std::rc::Rc; use yew::prelude::*; use yew_router::prelude::*; use yewdux::prelude::*; use crate::{routes, stores}; pub enum Msg { UpdateUser(Rc), BurgerClicked, Logout, } pub struct Navbar { user: Rc, user_dispatch: Dispatch, burger_active: bool, } impl Component for Navbar { type Message = Msg; type Properties = (); fn create(ctx: &Context) -> Self { let user_dispatch = Dispatch::subscribe(ctx.link().callback(Msg::UpdateUser)); Self { user: user_dispatch.get(), user_dispatch, burger_active: false, } } fn update(&mut self, _ctx: &Context, msg: Self::Message) -> bool { match msg { Msg::UpdateUser(x) => { self.user = x; true } Msg::BurgerClicked => { self.burger_active = !self.burger_active; true } Msg::Logout => { self.user_dispatch.set(stores::User(None)); true } } } fn view(&self, ctx: &Context) -> Html { html! {
} } }