diff --git a/crates/call/src/call.rs b/crates/call/src/call.rs index 2cfb155d11..7015173ce7 100644 --- a/crates/call/src/call.rs +++ b/crates/call/src/call.rs @@ -232,17 +232,21 @@ impl ActiveCall { fn set_room(&mut self, room: Option>, cx: &mut ModelContext) { if room.as_ref() != self.room.as_ref().map(|room| &room.0) { if let Some(room) = room { - let subscriptions = vec![ - cx.observe(&room, |this, room, cx| { - if room.read(cx).status().is_offline() { - this.set_room(None, cx); - } + if room.read(cx).status().is_offline() { + self.room = None; + } else { + let subscriptions = vec![ + cx.observe(&room, |this, room, cx| { + if room.read(cx).status().is_offline() { + this.set_room(None, cx); + } - cx.notify(); - }), - cx.subscribe(&room, |_, _, event, cx| cx.emit(event.clone())), - ]; - self.room = Some((room, subscriptions)); + cx.notify(); + }), + cx.subscribe(&room, |_, _, event, cx| cx.emit(event.clone())), + ]; + self.room = Some((room, subscriptions)); + } } else { self.room = None; }