diff --git a/ui/src/components/mail/listing/compact.rs b/ui/src/components/mail/listing/compact.rs index fe1c9c50..5ae67d67 100644 --- a/ui/src/components/mail/listing/compact.rs +++ b/ui/src/components/mail/listing/compact.rs @@ -830,8 +830,8 @@ impl CompactListing { ) { let account = &mut context.accounts[self.cursor_pos.0]; let mut envs_to_set: StackVec = StackVec::new(); + let folder_hash = account[self.cursor_pos.1].unwrap().folder.hash(); { - let folder_hash = account[self.cursor_pos.1].unwrap().folder.hash(); let mut stack = StackVec::new(); stack.push(thread_hash); while let Some(thread_iter) = stack.pop() { @@ -858,8 +858,7 @@ impl CompactListing { } } for env_hash in envs_to_set { - let hash = account.collection.get_env(env_hash).hash(); - let op = account.operation(hash); + let op = account.operation(env_hash); let mut envelope: EnvelopeRefMut = account.collection.get_env_mut(env_hash); match a { ListingAction::SetSeen => { @@ -884,6 +883,72 @@ impl CompactListing { _ => unreachable!(), } self.row_updates.push(thread_hash); + let has_attachments = envelope.has_attachments(); + drop(envelope); + let threads = &account.collection.threads[&folder_hash]; + let fg_color = if threads[&thread_hash].has_unseen() { + Color::Byte(0) + } else { + Color::Default + }; + let idx = self.order[&thread_hash]; + let bg_color = if context.settings.terminal.theme == "light" { + if threads[&thread_hash].has_unseen() { + Color::Byte(251) + } else if idx % 2 == 0 { + Color::Byte(252) + } else { + Color::Default + } + } else { + if threads[&thread_hash].has_unseen() { + Color::Byte(253) + } else if idx % 2 == 0 { + Color::Byte(236) + } else { + Color::Default + } + }; + let min_width = ( + self.data_columns.columns[0].size().0, + self.data_columns.columns[1].size().0, + self.data_columns.columns[2].size().0, + self.data_columns.columns[3].size().0, + self.data_columns.columns[4].size().0, + ); + for x in 0..min_width.0 { + self.data_columns.columns[0][(x, idx)].set_fg(fg_color); + self.data_columns.columns[0][(x, idx)].set_bg(bg_color); + } + for x in 0..min_width.1 { + self.data_columns.columns[1][(x, idx)].set_fg(fg_color); + self.data_columns.columns[1][(x, idx)].set_bg(bg_color); + } + for x in 0..min_width.2 { + self.data_columns.columns[2][(x, idx)].set_fg(fg_color); + self.data_columns.columns[2][(x, idx)].set_bg(bg_color); + } + for x in 0..min_width.3 { + self.data_columns.columns[3][(x, idx)].set_fg(fg_color); + self.data_columns.columns[3][(x, idx)].set_bg(bg_color); + } + for x in 0..min_width.4 { + self.data_columns.columns[4][(x, idx)].set_fg(fg_color); + self.data_columns.columns[4][(x, idx)].set_bg(bg_color); + } + match (threads.is_snoozed(thread_hash), has_attachments) { + (true, true) => { + self.data_columns.columns[3][(0, idx)].set_fg(Color::Byte(103)); + self.data_columns.columns[3][(2, idx)].set_fg(Color::Red); + } + (true, false) => { + self.data_columns.columns[3][(0, idx)].set_fg(Color::Red); + } + (false, true) => { + self.data_columns.columns[3][(0, idx)].set_fg(Color::Byte(103)); + } + (false, false) => {} + } } } }