Panics · P28 Messaging: an open chat or selected member that left marks none

This commit is contained in:
ZacharyZhang-NY committed 2026-10-07 03:22:11 -04:00
1 parent c9b4a04a4f
commit bb8732ac64
4 files changed
+45 -3

No files matched your search

+3 -1
View File
@@ -245,7 +245,9 @@ impl RenderOnce for ChannelList {
.iter()
.flat_map(|(_, rows)| rows)
.any(|(key, _)| key == open);
assert!(listed, "no chat {open}");
if !listed {
log::error!("channel list: no chat {open}; none open");
}
}
let open: OnValue = {
let (id, on_open) = (self.id.clone(), self.on_open.clone());
+3 -1
View File
@@ -124,7 +124,9 @@ impl RenderOnce for MemberList {
fn render(self, _: &mut Window, cx: &mut App) -> impl IntoElement {
if let Some(selected) = &self.selected {
let listed = self.members.iter().any(|member| member.key == *selected);
assert!(listed, "no member {selected}");
if !listed {
log::error!("member list: no member {selected}; none selected");
}
}
let theme = cx.theme();
let colors = &theme.colors;
+37
View File
@@ -225,3 +225,40 @@ fn an_emoji_is_searched_and_picked_and_focus_comes_back(cx: &mut TestAppContext)
"the words follow the emoji field in Tab order"
);
}
/// A chat list and a member list whose open chat and selected member left.
struct Departed;
impl Render for Departed {
fn render(&mut self, _: &mut Window, _: &mut Context<Self>) -> impl IntoElement {
div()
.w(px(320.0))
.child(
crate::messaging::ChannelList::new("chats")
.section(
"Channels",
[(
"general",
crate::messaging::ChannelItem::new("general", "general"),
)],
)
.open("gone"),
)
.child(
MemberList::new(
"members",
[Member::new("ana", "Ana Lima", Presence::Online)],
)
.selected("gone"),
)
}
}
#[gpui::test]
fn a_chat_or_member_that_left_marks_none(cx: &mut TestAppContext) {
setup(cx);
let (_, cx) = cx.add_window_view(|_, _| Departed);
settle(cx);
assert!(cx.debug_bounds("item-selected-general").is_none());
assert!(cx.debug_bounds("item-selected-Ana Lima").is_none());
}