diff --git a/src/app.rs b/src/app.rs index 2c5c3af..1e92dc2 100644 --- a/src/app.rs +++ b/src/app.rs @@ -973,7 +973,9 @@ fn timelines_view(ui: &mut egui::Ui, sizes: Size, app: &mut Damus, columns: usiz columns[0].router_mut() }; - DesktopSidePanel::perform_action(router, side_panel.action); + if side_panel.response.clicked() { + DesktopSidePanel::perform_action(router, side_panel.action); + } // vertical sidebar line ui.painter().vline( diff --git a/src/route.rs b/src/route.rs index 2f2f33b..99e0ac8 100644 --- a/src/route.rs +++ b/src/route.rs @@ -27,6 +27,10 @@ impl Route { } } + pub fn relays() -> Self { + Route::Relays + } + pub fn thread(thread_root: NoteId) -> Self { Route::Timeline(TimelineRoute::Thread(thread_root)) } diff --git a/src/ui/side_panel.rs b/src/ui/side_panel.rs index 8d3a02d..5ed12f1 100644 --- a/src/ui/side_panel.rs +++ b/src/ui/side_panel.rs @@ -101,7 +101,18 @@ impl<'a> DesktopSidePanel<'a> { router.route_to(Route::accounts()); } } - SidePanelAction::Settings => {} // TODO + SidePanelAction::Settings => { + if router + .routes() + .iter() + .any(|&r| r == Route::Relays) + { + // return if we are already routing to accounts + router.go_back(); + } else { + router.route_to(Route::relays()); + } + } SidePanelAction::Columns => (), // TODO } }