diff --git a/crates/workspace/src/sidebar/mod.rs b/crates/workspace/src/sidebar/mod.rs index 81139445..ea57c43f 100644 --- a/crates/workspace/src/sidebar/mod.rs +++ b/crates/workspace/src/sidebar/mod.rs @@ -344,6 +344,14 @@ impl Sidebar { ), ), }) + .child( + div() + .px_4() + .text_xs() + .font_semibold() + .text_color(cx.theme().text_placeholder) + .child(active_tab.list_title()), + ) .child( div() .min_h_0() @@ -510,44 +518,21 @@ impl Sidebar { match tab { SidebarTab::Inbox => { let chat = ChatRegistry::global(cx); - let rooms = chat.read(cx).rooms(&RoomKind::Ongoing, cx); - - let mut rows = vec![SidebarRow::Section { - label: "Chats".into(), - }]; - - if rooms.is_empty() { - rows.push(SidebarRow::Hint { - text: "No conversations yet".into(), - }); - } else { - rows.extend(rooms.into_iter().map(|room| SidebarRow::Room { room })); - } - - rows + chat.read(cx) + .rooms(&RoomKind::Ongoing, cx) + .into_iter() + .map(|room| SidebarRow::Room { room }) + .collect() } SidebarTab::Communities => { let registry = CommunityRegistry::global(cx); - let communities = registry.read(cx).communities(); - - let mut rows = vec![SidebarRow::Section { - label: "Communities".into(), - }]; - - if communities.is_empty() { - rows.push(SidebarRow::Hint { - text: "No communities yet".into(), - }); - } else { - rows.extend( - communities - .iter() - .cloned() - .map(|community| SidebarRow::Community { community }), - ); - } - - rows + registry + .read(cx) + .communities() + .iter() + .cloned() + .map(|community| SidebarRow::Community { community }) + .collect() } } } @@ -566,12 +551,6 @@ impl Sidebar { let index = range.start + offset; match row { - SidebarRow::Section { label } => TreeRow::new( - ElementId::NamedInteger("tree-row".into(), index as u64), - TreeRowKind::Section, - label.clone(), - ) - .into_any_element(), SidebarRow::Room { room } => { let name = room.read(cx).display_name(cx); let picture = room.read(cx).display_image(cx); @@ -634,12 +613,6 @@ impl Sidebar { }) .into_any_element() } - SidebarRow::Hint { text } => TreeRow::new( - ElementId::NamedInteger("tree-row".into(), index as u64), - TreeRowKind::Hint, - text.clone(), - ) - .into_any_element(), } }) .collect() diff --git a/crates/workspace/src/sidebar/tab.rs b/crates/workspace/src/sidebar/tab.rs index 1fccd595..5698be6a 100644 --- a/crates/workspace/src/sidebar/tab.rs +++ b/crates/workspace/src/sidebar/tab.rs @@ -14,6 +14,14 @@ impl SidebarTab { } } + /// Heading for the tab's list of items. + pub fn list_title(self) -> &'static str { + match self { + Self::Inbox => "Direct Messages", + Self::Communities => "Communities", + } + } + pub fn list_id(self) -> &'static str { match self { Self::Inbox => "sidebar-inbox", diff --git a/crates/workspace/src/sidebar/tree.rs b/crates/workspace/src/sidebar/tree.rs index 0910b4d3..79c0760b 100644 --- a/crates/workspace/src/sidebar/tree.rs +++ b/crates/workspace/src/sidebar/tree.rs @@ -14,10 +14,8 @@ use ui::avatar::{Avatar, PixelAvatar}; use ui::{Icon, IconName, Selectable, Sizable, StyledExt, h_flex}; pub enum SidebarRow { - Section { label: SharedString }, Room { room: Entity }, Community { community: Entity }, - Hint { text: SharedString }, } /// A collapsible group of rows in the sidebar's community view. @@ -48,7 +46,6 @@ pub enum TreeRowKind { Section, Room, Community, - Hint, } #[derive(IntoElement)] @@ -134,7 +131,6 @@ impl RenderOnce for TreeRow { let is_section = self.kind == TreeRowKind::Section; let is_room = self.kind == TreeRowKind::Room; let is_community = self.kind == TreeRowKind::Community; - let is_hint = self.kind == TreeRowKind::Hint; let is_selected = self.selected; let avatar = if hide_avatar { @@ -173,6 +169,7 @@ impl RenderOnce for TreeRow { h_flex() .id(self.id) .w_full() + .h_10() .px_2() .gap_2() .rounded(cx.theme().radius) @@ -181,13 +178,7 @@ impl RenderOnce for TreeRow { .text_color(cx.theme().text_placeholder) .font_semibold() }) - .when(is_room || is_community, |this| this.text_sm().h_10()) - .h_8() - .when(is_hint, |this| { - this.text_xs() - .font_normal() - .text_color(cx.theme().text_placeholder) - }) + .when(is_room || is_community, |this| this.text_sm()) .when_some(avatar, |this, avatar| this.child(avatar)) .child( h_flex()