feat(federation): client voice store handles federated call data (FED-009)

This commit is contained in:
Jannis Braun
2026-03-31 23:40:11 +02:00
parent 09916917f1
commit 24571edc34
3 changed files with 36 additions and 10 deletions
+12
View File
@@ -67,6 +67,10 @@ interface VoiceState {
setIncomingCall: (call: { dmChannelId: string; callerId: string; callerName: string } | null) => void;
setOutgoingCall: (call: { dmChannelId: string } | null) => void;
setActiveDmCall: (call: { dmChannelId: string } | null) => void;
federatedCallToken: string | null;
federatedCallUrl: string | null;
setFederatedCallData: (token: string, url: string) => void;
clearFederatedCallData: () => void;
setVoiceUsers: (channelId: string, userIds: string[]) => void;
addVoiceUser: (channelId: string, userId: string) => void;
removeVoiceUser: (channelId: string, userId: string) => void;
@@ -240,10 +244,14 @@ export const useVoiceStore = create<VoiceState>()(
incomingCall: null,
outgoingCall: null,
activeDmCall: null,
federatedCallToken: null,
federatedCallUrl: null,
setIncomingCall: (call) => set({ incomingCall: call }),
setOutgoingCall: (call) => set({ outgoingCall: call }),
setActiveDmCall: (call) => set({ activeDmCall: call }),
setFederatedCallData: (token, url) => set({ federatedCallToken: token, federatedCallUrl: url }),
clearFederatedCallData: () => set({ federatedCallToken: null, federatedCallUrl: null }),
setVoiceUsers: (channelId, userIds) => {
set((state) => {
@@ -416,6 +424,8 @@ export const useVoiceStore = create<VoiceState>()(
incomingCall: null,
outgoingCall: null,
activeDmCall: null,
federatedCallToken: null,
federatedCallUrl: null,
// Per-session media state
isCameraOn: false,
isScreenSharing: false,
@@ -539,6 +549,8 @@ export const useVoiceStore = create<VoiceState>()(
incomingCall: null,
outgoingCall: null,
activeDmCall: null,
federatedCallToken: null,
federatedCallUrl: null,
deafenedUserIds: new Set(),
voiceUserStates: new Map(),
streamVolumes: new Map(),