From e82320cde8822c2d20fe5920a34d348b39ed911a Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Fri, 7 Oct 2022 12:00:23 +0200 Subject: [PATCH] Never set a room on active call if it is offline --- crates/call/src/call.rs | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/crates/call/src/call.rs b/crates/call/src/call.rs index 2cfb155d111eea384d30e9d579d904dcdfd4485f..7015173ce73523d94dd1414741c2f0578a1ab9a5 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; }