feat: add awaitingApprovalPeerOrigins and pendingApprovalCount to ready payload

This commit is contained in:
Jannis Braun
2026-04-20 15:03:29 +02:00
parent 5f50ffc5f2
commit 33c45e3184
2 changed files with 22 additions and 2 deletions
+21 -1
View File
@@ -936,6 +936,8 @@ function buildReadyPayload(userId: string): {
activeCalls: ActiveCallInfo[];
userActivities: Record<string, Activity[]>;
rejectedPeerOrigins: string[];
awaitingApprovalPeerOrigins: string[];
pendingApprovalCount: number;
} {
const db = getDb();
@@ -1472,7 +1474,25 @@ function buildReadyPayload(userId: string): {
.all();
const rejectedPeerOrigins = rejectedPeers.map(p => p.origin);
return { user, spaces, dmChannels, folders, spaceLayout, layoutUpdatedAt, voiceStates, voiceUserStates, spaceVoiceStates, readStates, activeCalls, userActivities, rejectedPeerOrigins };
// Awaiting-approval peer origins for softer unreachable indicators
const awaitingApprovalPeers = db
.select({ origin: schema.federationPeers.origin })
.from(schema.federationPeers)
.where(eq(schema.federationPeers.status, 'awaiting_approval'))
.all();
const awaitingApprovalPeerOrigins = awaitingApprovalPeers.map(p => p.origin);
// Pending approval count for admin notification
let pendingApprovalCount = 0;
if (userRow?.isAdmin === 1) {
const countResult = db
.select({ count: sql<number>`count(*)` })
.from(schema.peerApprovalRequests)
.get();
pendingApprovalCount = countResult?.count ?? 0;
}
return { user, spaces, dmChannels, folders, spaceLayout, layoutUpdatedAt, voiceStates, voiceUserStates, spaceVoiceStates, readStates, activeCalls, userActivities, rejectedPeerOrigins, awaitingApprovalPeerOrigins, pendingApprovalCount };
}
export async function registerWebSocket(app: FastifyInstance): Promise<void> {