From: Simon Tatham Date: Sun, 21 Jan 2024 13:26:52 +0000 (+0000) Subject: Rethink utility status of some activities. X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=commitdiff_plain;h=8c00efa089fd3051423dc2ce651b3aeddbf2c591;p=mastodonochrome.git Rethink utility status of some activities. ComposeToplevel and ComposeReply are very similar in this environment, so I think it's wrong that one should be a utility activity and the other not. The current status mimics real Monochrome, with ComposeToplevel and ComposeReply corresponding to adding to a file and sending a message to a user respectively; but in real Mono, those two activities are much more different from each other than they are here, so I don't think the same rule should apply. Conversely, I'm promoting ThreadFile to a _non_-utility activity, on the basis that all activities involving viewing a file of actual toots ought to have the same status, or else it's confusing. In particular, it's annoying to try to examine a user seen in someone's thread, and then find you can't easily come back to the place you were at in the thread itself. --- diff --git a/src/activity_stack.rs b/src/activity_stack.rs index 552ed9e..0478528 100644 --- a/src/activity_stack.rs +++ b/src/activity_stack.rs @@ -9,8 +9,7 @@ pub enum NonUtilityActivity { LocalTimelineFile, HashtagTimeline(String), UserPosts(String, Boosts, Replies), - ComposeToplevel, - PostComposeMenu, + ThreadFile(String, bool), LoginMenu, } @@ -28,9 +27,10 @@ pub enum UtilityActivity { InfoStatus(String), ListStatusFavouriters(String), ListStatusBoosters(String), + ComposeToplevel, + PostComposeMenu, ComposeReply(String), PostReplyMenu(String), - ThreadFile(String, bool), UserOptions(String), InstanceRules, } @@ -83,8 +83,8 @@ impl Activity { // gets reinitialised, because that's the simplest way to jump // you down to the new message. match self { - Activity::NonUtil(NonUtilityActivity::ComposeToplevel) - | Activity::NonUtil(NonUtilityActivity::PostComposeMenu) + Activity::Util(UtilityActivity::ComposeToplevel) + | Activity::Util(UtilityActivity::PostComposeMenu) | Activity::Util(UtilityActivity::ComposeReply(..)) | Activity::Util(UtilityActivity::PostReplyMenu(..)) => false, _ => true, diff --git a/src/file.rs b/src/file.rs index f294fd7..b30eb14 100644 --- a/src/file.rs +++ b/src/file.rs @@ -1043,7 +1043,7 @@ impl File { UtilityActivity::ComposeReply(id).into(), ), SelectionPurpose::Thread => LogicalAction::Goto( - UtilityActivity::ThreadFile(id, alt).into(), + NonUtilityActivity::ThreadFile(id, alt).into(), ), SelectionPurpose::Vote => { match client.vote_in_poll( diff --git a/src/menu.rs b/src/menu.rs index 6cffae6..ceb2453 100644 --- a/src/menu.rs +++ b/src/menu.rs @@ -247,7 +247,7 @@ pub fn main_menu(client: &Client) -> Box { menu.add_action( Pr('C'), "Compose a post", - LogicalAction::Goto(NonUtilityActivity::ComposeToplevel.into()), + LogicalAction::Goto(UtilityActivity::ComposeToplevel.into()), ); menu.add_blank_line(); diff --git a/src/tui.rs b/src/tui.rs index 39e75c7..f302a3f 100644 --- a/src/tui.rs +++ b/src/tui.rs @@ -778,9 +778,9 @@ impl TuiLogicalState { LogicalAction::Error(_) => break PhysicalAction::Beep, // FIXME: Error Log LogicalAction::PostComposed(post) => { let newact = match self.activity_stack.top() { - Activity::NonUtil( - NonUtilityActivity::ComposeToplevel, - ) => NonUtilityActivity::PostComposeMenu.into(), + Activity::Util(UtilityActivity::ComposeToplevel) => { + UtilityActivity::PostComposeMenu.into() + } Activity::Util(UtilityActivity::ComposeReply(id)) => { UtilityActivity::PostReplyMenu(id).into() } @@ -792,9 +792,9 @@ impl TuiLogicalState { } LogicalAction::PostReEdit(post) => { let newact = match self.activity_stack.top() { - Activity::NonUtil( - NonUtilityActivity::PostComposeMenu, - ) => NonUtilityActivity::ComposeToplevel.into(), + Activity::Util(UtilityActivity::PostComposeMenu) => { + UtilityActivity::ComposeToplevel.into() + } Activity::Util(UtilityActivity::PostReplyMenu(id)) => { UtilityActivity::ComposeReply(id).into() } @@ -1004,7 +1004,7 @@ impl TuiLogicalState { Activity::Util(UtilityActivity::InfoStatus(ref id)) => { view_single_post(self.unfolded_posts.clone(), client, id) } - Activity::NonUtil(NonUtilityActivity::ComposeToplevel) => (|| { + Activity::Util(UtilityActivity::ComposeToplevel) => (|| { let post = match post { Some(post) => post, None => Post::new(client)?, @@ -1012,9 +1012,9 @@ impl TuiLogicalState { compose_post(client, post) })( ), - Activity::NonUtil(NonUtilityActivity::PostComposeMenu) => Ok( - post_menu(post.expect("how did we get here without a Post?")), - ), + Activity::Util(UtilityActivity::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), @@ -1028,9 +1028,10 @@ impl TuiLogicalState { 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(self.unfolded_posts.clone(), client, id, full) - } + Activity::NonUtil(NonUtilityActivity::ThreadFile( + ref id, + full, + )) => view_thread(self.unfolded_posts.clone(), client, id, full), Activity::Util(UtilityActivity::ListStatusFavouriters(ref id)) => { list_status_favouriters(client, id) }