fix(federation): address code review findings for FED-009

- Resolve homeUserId from DB in sendFederatedCallStart/End (not raw userId)
- Clear existing timeout in createFederatedCall before overwriting
- Clear federatedCallToken/Url in leaveVoice and handleForceDisconnect
- Remove unnecessary `as any` cast in relay processor
This commit is contained in:
Jannis Braun
2026-03-31 23:58:27 +02:00
parent 274b6a0b2f
commit 626fbfdba8
4 changed files with 16 additions and 3 deletions
+9 -2
View File
@@ -1765,7 +1765,7 @@ async function sendFederatedCallStart(
livekitUrl,
tokens,
caller: {
homeUserId: callerId,
homeUserId: members.find(m => m.userId === callerId)?.homeUserId || callerId,
homeInstance: ourOrigin,
displayName: callerName,
},
@@ -1852,6 +1852,13 @@ async function sendFederatedCallEnd(dmChannelId: string, endedByUserId: string):
}
if (targets.size === 0) return;
// Resolve actual homeUserId from DB
const endUser = db.select({ homeUserId: schema.users.homeUserId })
.from(schema.users)
.where(eq(schema.users.id, endedByUserId))
.get();
const resolvedHomeUserId = endUser?.homeUserId || endedByUserId;
const event = {
eventType: 'dm_call_end' as const,
messageId: generateSnowflake(),
@@ -1859,7 +1866,7 @@ async function sendFederatedCallEnd(dmChannelId: string, endedByUserId: string):
timestamp: Date.now(),
federatedId: channel.federatedId,
call: {
endedBy: { homeUserId: endedByUserId, homeInstance: ourOrigin },
endedBy: { homeUserId: resolvedHomeUserId, homeInstance: ourOrigin },
},
};