feat(voice): jump to the call from the voice panel

The channel name under 'Voice Connected' was a plain div. Making it navigate
needed more than an onClick: voiceStore never recorded which space the call
was in, and spaceStore.channels only holds the space currently being viewed —
so after navigating away the call's channel was unresolvable, which is also
why the label degraded to a generic 'Voice Channel'.

Capture space and channel name at join time (the only moment they are
reliable) and use them for both the label and the jump. Covers space calls
and DM calls.
This commit is contained in:
2026-08-31 11:40:45 -03:00
parent 08db5374cb
commit c70b0095a9
3 changed files with 59 additions and 7 deletions
+9 -1
View File
@@ -152,7 +152,15 @@ export function joinVoiceChannel(
if (myOldId) removeVoiceUser(currentVoiceChannelId, myOldId);
}
setCurrentVoiceChannel(channelId);
// Capture the space and name now: a voice channel can only be joined from
// within its own space, but the user may navigate away afterwards — at which
// point spaceStore.channels no longer resolves this channel.
const spaceStore = useSpaceStore.getState();
setCurrentVoiceChannel(
channelId,
spaceStore.currentSpaceId ?? null,
spaceStore.channels.find((c) => c.id === channelId)?.name ?? null,
);
// Optimistic: immediately show self in new channel (using origin-aware ID)
const myNewId = getMyUserIdForOrigin(getChannelOrigin(channelId));
if (myNewId) addVoiceUser(channelId, myNewId);