服务器录屏1
This commit is contained in:
@@ -326,6 +326,37 @@ function getActiveRecordingSession(connectionId: string) {
|
||||
return null;
|
||||
}
|
||||
|
||||
function roomMemberToRecordingPerson(member: any, fallbackRole: string): RecordingPerson | undefined {
|
||||
if (!member || typeof member !== 'object') {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
return sanitizeRecordingPerson({
|
||||
participantId: member.participantId,
|
||||
userId: member.userId || member.id,
|
||||
id: member.id || member.userId,
|
||||
name: member.name,
|
||||
avatar: member.avatar,
|
||||
role: member.role || fallbackRole,
|
||||
status: member.status,
|
||||
mediaState: member.mediaState
|
||||
}, fallbackRole);
|
||||
}
|
||||
|
||||
function getRecordingRoomPeople(connectionId: string): { host?: RecordingPerson; participants: RecordingPerson[] } {
|
||||
const room = getWebSocketRooms(connectionId)[0];
|
||||
const members = Array.isArray(room?.members) ? room.members : [];
|
||||
const hostMember = members.find((member: any) => member.role === 'host')
|
||||
|| members.find((member: any) => member.socketId && member.socketId === room?.hostSocketId);
|
||||
const host = roomMemberToRecordingPerson(hostMember, 'host');
|
||||
const participants = members
|
||||
.filter((member: any) => member !== hostMember && member.role === 'participant')
|
||||
.map((member: any) => roomMemberToRecordingPerson(member, 'participant'))
|
||||
.filter((member: RecordingPerson | undefined) => Boolean(member)) as RecordingPerson[];
|
||||
|
||||
return { host, participants };
|
||||
}
|
||||
|
||||
export const createServer = (config: Options): express.Express => {
|
||||
const app: express.Express = express();
|
||||
resetHandler(config.mode);
|
||||
@@ -561,12 +592,15 @@ export const createServer = (config: Options): express.Express => {
|
||||
}
|
||||
|
||||
const shouldCompose = req.query.compose !== 'false';
|
||||
const roomPeople = getRecordingRoomPeople(session.connectionId);
|
||||
const compositionJob = shouldCompose
|
||||
? startRecordingCompositionJob({
|
||||
meetingId: session.connectionId,
|
||||
recordingId: session.id,
|
||||
layout: session.layout,
|
||||
format: session.format
|
||||
format: session.format,
|
||||
host: roomPeople.host,
|
||||
participants: roomPeople.participants
|
||||
})
|
||||
: null;
|
||||
res.json({ success: true, session, agent, notified, compositionJob });
|
||||
@@ -602,7 +636,8 @@ export const createServer = (config: Options): express.Express => {
|
||||
meetingId,
|
||||
recordingId,
|
||||
layout: req.body.layout,
|
||||
format: req.body.format
|
||||
format: req.body.format,
|
||||
...getRecordingRoomPeople(meetingId)
|
||||
});
|
||||
res.status(202).json({ success: true, job });
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user