From 08a720b860f36396a1e721e960fe2c9d7823e004 Mon Sep 17 00:00:00 2001 From: kernelkind Date: Thu, 22 May 2025 18:51:10 -0400 Subject: [PATCH] add `SingletonRouter` used for popup Signed-off-by: kernelkind --- crates/notedeck_columns/src/route.rs | 37 ++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/crates/notedeck_columns/src/route.rs b/crates/notedeck_columns/src/route.rs index ca0c782e..41d20714 100644 --- a/crates/notedeck_columns/src/route.rs +++ b/crates/notedeck_columns/src/route.rs @@ -361,3 +361,40 @@ impl fmt::Display for Route { } } } + +#[derive(Clone, Debug)] +pub struct SingletonRouter { + route: Option, + pub returning: bool, + pub navigating: bool, +} + +impl SingletonRouter { + pub fn route_to(&mut self, route: R) { + self.navigating = true; + self.route = Some(route); + } + + pub fn go_back(&mut self) { + self.returning = true; + } + + pub fn clear(&mut self) { + self.route = None; + self.returning = false; + } + + pub fn route(&self) -> &Option { + &self.route + } +} + +impl Default for SingletonRouter { + fn default() -> Self { + Self { + route: None, + returning: false, + navigating: false, + } + } +}