notedeck

One damus client to rule them all
git clone git://jb55.com/notedeck
Log | Files | Refs | README | LICENSE

commit a44667ef1a36f58c0874cca3289780b7014cdad2
parent f452a9010b8ec03bcd045781b46d76f59856a87f
Author: kernelkind <kernelkind@gmail.com>
Date:   Thu, 22 May 2025 19:43:36 -0400

nav: move process nav response to own method

Signed-off-by: kernelkind <kernelkind@gmail.com>

Diffstat:
Mcrates/notedeck_columns/src/nav.rs | 79++++++++++++++++++++++++++++++++++++++++++++-----------------------------------
1 file changed, 44 insertions(+), 35 deletions(-)

diff --git a/crates/notedeck_columns/src/nav.rs b/crates/notedeck_columns/src/nav.rs @@ -142,51 +142,60 @@ impl RenderNavResponse { ctx: &mut AppContext<'_>, ui: &mut egui::Ui, ) -> bool { - let mut switching_occured: bool = false; - let col = self.column; + process_nav_resp(app, ctx, ui, self.response, self.column) + } +} - if let Some(action) = self.response.response.or(self.response.title_response) { - // start returning when we're finished posting +fn process_nav_resp( + app: &mut Damus, + ctx: &mut AppContext<'_>, + ui: &mut egui::Ui, + response: NavResponse<Option<RenderNavAction>>, + col: usize, +) -> bool { + let mut switching_occured: bool = false; - switching_occured = process_render_nav_action(app, ctx, ui, col, action); - } + if let Some(action) = response.response.or(response.title_response) { + // start returning when we're finished posting - if let Some(action) = self.response.action { - match action { - NavAction::Returned => { - let r = app - .columns_mut(ctx.accounts) - .column_mut(col) - .router_mut() - .pop(); - - if let Some(Route::Timeline(kind)) = &r { - if let Err(err) = app.timeline_cache.pop(kind, ctx.ndb, ctx.pool) { - error!("popping timeline had an error: {err} for {:?}", kind); - } - }; + switching_occured = process_render_nav_action(app, ctx, ui, col, action); + } - switching_occured = true; - } + if let Some(action) = response.action { + match action { + NavAction::Returned => { + let r = app + .columns_mut(ctx.accounts) + .column_mut(col) + .router_mut() + .pop(); - NavAction::Navigated => { - let cur_router = app.columns_mut(ctx.accounts).column_mut(col).router_mut(); - cur_router.navigating = false; - if cur_router.is_replacing() { - cur_router.remove_previous_routes(); + if let Some(Route::Timeline(kind)) = &r { + if let Err(err) = app.timeline_cache.pop(kind, ctx.ndb, ctx.pool) { + error!("popping timeline had an error: {err} for {:?}", kind); } - switching_occured = true; - } + }; - NavAction::Dragging => {} - NavAction::Returning => {} - NavAction::Resetting => {} - NavAction::Navigating => {} + switching_occured = true; } - } - switching_occured + NavAction::Navigated => { + let cur_router = app.columns_mut(ctx.accounts).column_mut(col).router_mut(); + cur_router.navigating = false; + if cur_router.is_replacing() { + cur_router.remove_previous_routes(); + } + switching_occured = true; + } + + NavAction::Dragging => {} + NavAction::Returning => {} + NavAction::Resetting => {} + NavAction::Navigating => {} + } } + + switching_occured } fn process_render_nav_action(