[mirotalksfu] - Fix presenter on disconnect

هذا الالتزام موجود في:
Miroslav Pejic
2023-11-22 18:11:51 +01:00
الأصل 4a0b818712
التزام f60bd110bf

عرض الملف

@@ -1310,38 +1310,42 @@ function startServer() {
}); });
async function isPeerPresenter(room_id, peer_id, peer_name, peer_uuid) { async function isPeerPresenter(room_id, peer_id, peer_name, peer_uuid) {
let isPresenter = false;
try { try {
if ( if (!presenters[room_id] || !presenters[room_id][peer_id]) {
typeof presenters[room_id] === 'undefined' || // Presenter not in the presenters config list, disconnected, or peer_id changed...
typeof presenters[room_id][peer_id] === 'undefined' || for (const [existingPeerID, presenter] of Object.entries(presenters[room_id] || {})) {
presenters[room_id] === null || if (presenter.peer_name === peer_name) {
presenters[room_id][peer_id] === null log.info('Presenter found', {
) { room: room_id,
peer_id: existingPeerID,
peer_name: peer_name,
});
return true;
}
}
return false; return false;
} }
isPresenter = const isPresenter =
(typeof presenters[room_id] === 'object' && (typeof presenters[room_id] === 'object' &&
Object.keys(presenters[room_id][peer_id]).length > 1 && Object.keys(presenters[room_id][peer_id]).length > 1 &&
presenters[room_id][peer_id]['peer_name'] === peer_name && presenters[room_id][peer_id]['peer_name'] === peer_name &&
presenters[room_id][peer_id]['peer_uuid'] === peer_uuid) || presenters[room_id][peer_id]['peer_uuid'] === peer_uuid) ||
(config.presenters && config.presenters.includes(peer_name)); (config.presenters && config.presenters.includes(peer_name));
log.debug('isPeerPresenter', {
room_id: room_id,
peer_id: peer_id,
peer_name: peer_name,
peer_uuid: peer_uuid,
isPresenter: isPresenter,
});
return isPresenter;
} catch (err) { } catch (err) {
log.error('isPeerPresenter', err); log.error('isPeerPresenter', err);
return false; return false;
} }
log.debug('isPeerPresenter', {
room_id: room_id,
peer_id: peer_id,
peer_name: peer_name,
peer_uuid: peer_uuid,
isPresenter: isPresenter,
});
return isPresenter;
} }
async function getPeerGeoLocation(ip) { async function getPeerGeoLocation(ip) {