Panics · P28 Messaging: an open chat or selected member that left marks none
This commit is contained in:
1 parent
c9b4a04a4f
commit
bb8732ac64
4 files changed
+45
-3
No files matched your search
@@ -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());
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
Reference in new issue
Block a user