From 06953749b7894e4cd38d1222b9567a58b8de666b Mon Sep 17 00:00:00 2001 From: Simon Tatham Date: Thu, 4 Jan 2024 12:21:18 +0000 Subject: [PATCH] Make new_activity_state a method of TuiLogicalState. I got away without it having to be for a long time, but now it's going to need to fetch file positions. --- src/tui.rs | 141 +++++++++++++++++++++++++++-------------------------- 1 file changed, 72 insertions(+), 69 deletions(-) diff --git a/src/tui.rs b/src/tui.rs index 626f2b2..fa78235 100644 --- a/src/tui.rs +++ b/src/tui.rs @@ -424,73 +424,6 @@ struct TuiLogicalState { last_area: Option, } -fn new_activity_state(activity: Activity, client: &mut Client, - post: Option) -> Box -{ - let result = match activity { - Activity::NonUtil(NonUtilityActivity::MainMenu) => - Ok(main_menu()), - Activity::Util(UtilityActivity::UtilsMenu) => - Ok(utils_menu(client)), - Activity::Util(UtilityActivity::ExitMenu) => - Ok(exit_menu()), - Activity::Util(UtilityActivity::LogsMenu1) => - Ok(logs_menu_1()), - Activity::Util(UtilityActivity::LogsMenu2) => - Ok(logs_menu_2()), - Activity::NonUtil(NonUtilityActivity::HomeTimelineFile) => - home_timeline(client), - Activity::NonUtil(NonUtilityActivity::PublicTimelineFile) => - public_timeline(client), - Activity::NonUtil(NonUtilityActivity::LocalTimelineFile) => - local_timeline(client), - Activity::NonUtil(NonUtilityActivity::HashtagTimeline(ref id)) => - hashtag_timeline(client, id), - Activity::Util(UtilityActivity::ReadMentions) => - mentions(client), - Activity::Util(UtilityActivity::EgoLog) => - ego_log(client), - Activity::Overlay(OverlayActivity::GetUserToExamine) => - Ok(get_user_to_examine()), - Activity::Overlay(OverlayActivity::GetPostIdToRead) => - Ok(get_post_id_to_read()), - Activity::Overlay(OverlayActivity::GetHashtagToRead) => - Ok(get_hashtag_to_read()), - Activity::Util(UtilityActivity::ExamineUser(ref name)) => - examine_user(client, name), - Activity::Util(UtilityActivity::InfoStatus(ref id)) => - view_single_post(client, id), - Activity::NonUtil(NonUtilityActivity::ComposeToplevel) => - compose_post(client, post.unwrap_or_else(|| Post::new())), - Activity::NonUtil(NonUtilityActivity::PostComposeMenu) => - Ok(post_menu(post.expect("how did we get here without a Post?"))), - Activity::Util(UtilityActivity::ComposeReply(ref id)) => { - let post = match post { - Some(post) => Ok(post), - None => Post::reply_to(id, client), - }; - match post { - Ok(post) => compose_post(client, post), - Err(e) => Err(e), - } - } - Activity::Util(UtilityActivity::PostReplyMenu(_)) => - Ok(post_menu(post.expect("how did we get here without a Post?"))), - Activity::Util(UtilityActivity::ThreadFile(ref id, full)) => - view_thread(client, id, full), - Activity::Util(UtilityActivity::ListStatusFavouriters(ref id)) => - list_status_favouriters(client, id), - Activity::Util(UtilityActivity::ListStatusBoosters(ref id)) => - list_status_boosters(client, id), - Activity::Util(UtilityActivity::ListUserFollowers(ref id)) => - list_user_followers(client, id), - Activity::Util(UtilityActivity::ListUserFollowees(ref id)) => - list_user_followees(client, id), - }; - - result.expect("FIXME: need to implement the Error Log here") -} - impl TuiLogicalState { fn new() -> Self { let activity_stack = ActivityStack::new(); @@ -653,10 +586,11 @@ impl TuiLogicalState { } fn changed_activity(&mut self, client: &mut Client, post: Option) { - self.activity_state = new_activity_state( + self.activity_state = self.new_activity_state( self.activity_stack.top(), client, post); self.overlay_activity_state = match self.activity_stack.overlay() { - Some(activity) => Some(new_activity_state(activity, client, None)), + Some(activity) => + Some(self.new_activity_state(activity, client, None)), None => None, }; if let Some(area) = self.last_area { @@ -672,4 +606,73 @@ impl TuiLogicalState { self.activity_stack.pop_overlay(); self.overlay_activity_state = None; } + +fn new_activity_state(&self, activity: Activity, client: &mut Client, + post: Option) -> Box + { + let result = match activity { + Activity::NonUtil(NonUtilityActivity::MainMenu) => + Ok(main_menu()), + Activity::Util(UtilityActivity::UtilsMenu) => + Ok(utils_menu(client)), + Activity::Util(UtilityActivity::ExitMenu) => + Ok(exit_menu()), + Activity::Util(UtilityActivity::LogsMenu1) => + Ok(logs_menu_1()), + Activity::Util(UtilityActivity::LogsMenu2) => + Ok(logs_menu_2()), + Activity::NonUtil(NonUtilityActivity::HomeTimelineFile) => + home_timeline(client), + Activity::NonUtil(NonUtilityActivity::PublicTimelineFile) => + public_timeline(client), + Activity::NonUtil(NonUtilityActivity::LocalTimelineFile) => + local_timeline(client), + Activity::NonUtil(NonUtilityActivity::HashtagTimeline(ref id)) => + hashtag_timeline(client, id), + Activity::Util(UtilityActivity::ReadMentions) => + mentions(client), + Activity::Util(UtilityActivity::EgoLog) => + ego_log(client), + Activity::Overlay(OverlayActivity::GetUserToExamine) => + Ok(get_user_to_examine()), + Activity::Overlay(OverlayActivity::GetPostIdToRead) => + Ok(get_post_id_to_read()), + Activity::Overlay(OverlayActivity::GetHashtagToRead) => + Ok(get_hashtag_to_read()), + Activity::Util(UtilityActivity::ExamineUser(ref name)) => + examine_user(client, name), + Activity::Util(UtilityActivity::InfoStatus(ref id)) => + view_single_post(client, id), + Activity::NonUtil(NonUtilityActivity::ComposeToplevel) => + compose_post(client, post.unwrap_or_else(|| Post::new())), + Activity::NonUtil(NonUtilityActivity::PostComposeMenu) => + Ok(post_menu(post.expect( + "how did we get here without a Post?"))), + Activity::Util(UtilityActivity::ComposeReply(ref id)) => { + let post = match post { + Some(post) => Ok(post), + None => Post::reply_to(id, client), + }; + match post { + Ok(post) => compose_post(client, post), + Err(e) => Err(e), + } + } + Activity::Util(UtilityActivity::PostReplyMenu(_)) => + Ok(post_menu(post.expect( + "how did we get here without a Post?"))), + Activity::Util(UtilityActivity::ThreadFile(ref id, full)) => + view_thread(client, id, full), + Activity::Util(UtilityActivity::ListStatusFavouriters(ref id)) => + list_status_favouriters(client, id), + Activity::Util(UtilityActivity::ListStatusBoosters(ref id)) => + list_status_boosters(client, id), + Activity::Util(UtilityActivity::ListUserFollowers(ref id)) => + list_user_followers(client, id), + Activity::Util(UtilityActivity::ListUserFollowees(ref id)) => + list_user_followees(client, id), + }; + + result.expect("FIXME: need to implement the Error Log here") + } } -- 2.30.2