close notification handler proper on accept/decline

Piotr Osiewicz and Conrad created

Co-authored-by: Conrad <conrad@zed.dev>

Change summary

crates/collab_ui2/src/notifications/incoming_call_notification.rs | 4 
crates/gpui2/src/app.rs                                           | 6 
2 files changed, 6 insertions(+), 4 deletions(-)

Detailed changes

crates/collab_ui2/src/notifications/incoming_call_notification.rs 🔗

@@ -18,9 +18,9 @@ pub fn init(app_state: &Arc<AppState>, cx: &mut AppContext) {
         while let Some(incoming_call) = incoming_call.next().await {
             for window in notification_windows.drain(..) {
                 window
-                    .update(&mut cx, |_, _| {
+                    .update(&mut cx, |_, cx| {
                         // todo!()
-                        //cx.remove_window();
+                        cx.remove_window();
                     })
                     .log_err();
             }

crates/gpui2/src/app.rs 🔗

@@ -580,7 +580,7 @@ impl AppContext {
             .windows
             .iter()
             .filter_map(|(_, window)| {
-                let window = window.as_ref().unwrap();
+                let window = window.as_ref()?;
                 if window.dirty {
                     Some(window.handle.clone())
                 } else {
@@ -1049,7 +1049,9 @@ impl Context for AppContext {
             let root_view = window.root_view.clone().unwrap();
             let result = update(root_view, &mut WindowContext::new(cx, &mut window));
 
-            if !window.removed {
+            if window.removed {
+                cx.windows.remove(handle.id);
+            } else {
                 cx.windows
                     .get_mut(handle.id)
                     .ok_or_else(|| anyhow!("window not found"))?