From 984dbf033a09ddf9c6f5956458c3890219bd5b0f Mon Sep 17 00:00:00 2001 From: Rikdekker Date: Thu, 25 Jun 2026 10:40:53 +0200 Subject: [PATCH] feat(call): keep call running while browsing other conversations (minimized call bar) Navigating to another conversation while in a call used to end the call, forcing users to leave the call to read other chats. Now the call keeps running and is shown as a minimized in-call bar (conversation name, timer, mute, return-to-call, leave), while the other conversation opens as chat-only. Talk shares a single signaling connection that can only be in one room at a time, so the browsed conversation is opened without joining its signaling room: its chat works over REST + polling (no typing/presence push, indicated by a subtle hint). The call's conversation keeps the signaling room and the active session, so audio/video/screenshare keep flowing. Starting a call in another conversation while one is already running asks for confirmation first (leave the current call and join here), matching the behavior of Teams/Zoom/Meet. Works on web and the desktop client; the in-call bar adapts to a full-width top bar on mobile-web. Co-Authored-By: Claude Opus 4.8 (1M context) Signed-off-by: Rikdekker --- src/App.vue | 101 +++++++++- src/components/CallView/MinimizedCallBar.vue | 197 +++++++++++++++++++ src/components/ChatView.vue | 21 ++ src/components/NewMessage/NewMessage.vue | 20 +- src/components/TopBar/CallButton.vue | 17 +- src/composables/useActiveSession.js | 20 +- src/composables/useIsInCall.js | 38 ++++ src/composables/useJoinCall.ts | 51 +++++ src/store/participantsStore.js | 69 ++++++- src/store/participantsStore.spec.js | 6 + src/stores/__tests__/callView.spec.js | 8 + src/stores/callView.ts | 19 ++ 12 files changed, 546 insertions(+), 21 deletions(-) create mode 100644 src/components/CallView/MinimizedCallBar.vue diff --git a/src/App.vue b/src/App.vue index 22a12e082fb..bc55333154c 100644 --- a/src/App.vue +++ b/src/App.vue @@ -5,8 +5,9 @@