Now formatted correctly with eslint
This commit is contained in:
@@ -1,36 +1,39 @@
|
||||
/**
|
||||
* WebRTCService — thin Angular service that composes specialised managers.
|
||||
* WebRTCService - thin Angular service that composes specialised managers.
|
||||
*
|
||||
* Each concern lives in its own file under `./webrtc/`:
|
||||
* • SignalingManager – WebSocket lifecycle & reconnection
|
||||
* • PeerConnectionManager – RTCPeerConnection, offers/answers, ICE, data channels
|
||||
* • MediaManager – mic voice, mute, deafen, bitrate
|
||||
* • ScreenShareManager – screen capture & mixed audio
|
||||
* • WebRTCLogger – debug / diagnostic logging
|
||||
* • SignalingManager - WebSocket lifecycle & reconnection
|
||||
* • PeerConnectionManager - RTCPeerConnection, offers/answers, ICE, data channels
|
||||
* • MediaManager - mic voice, mute, deafen, bitrate
|
||||
* • ScreenShareManager - screen capture & mixed audio
|
||||
* • WebRTCLogger - debug / diagnostic logging
|
||||
*
|
||||
* This file wires them together and exposes a public API that is
|
||||
* identical to the old monolithic service so consumers don't change.
|
||||
*/
|
||||
/* eslint-disable @typescript-eslint/member-ordering, @typescript-eslint/no-non-null-assertion, @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any */
|
||||
import { Injectable, signal, computed, inject, OnDestroy } from '@angular/core';
|
||||
import {
|
||||
Injectable,
|
||||
signal,
|
||||
computed,
|
||||
inject,
|
||||
OnDestroy
|
||||
} from '@angular/core';
|
||||
import { Observable, Subject } from 'rxjs';
|
||||
import { v4 as uuidv4 } from 'uuid';
|
||||
import { SignalingMessage, ChatEvent } from '../models';
|
||||
import { TimeSyncService } from './time-sync.service';
|
||||
|
||||
import {
|
||||
// Managers
|
||||
SignalingManager,
|
||||
PeerConnectionManager,
|
||||
MediaManager,
|
||||
ScreenShareManager,
|
||||
WebRTCLogger,
|
||||
// Types
|
||||
IdentifyCredentials,
|
||||
JoinedServerInfo,
|
||||
VoiceStateSnapshot,
|
||||
LatencyProfile,
|
||||
// Constants
|
||||
SIGNALING_TYPE_IDENTIFY,
|
||||
SIGNALING_TYPE_JOIN_SERVER,
|
||||
SIGNALING_TYPE_VIEW_SERVER,
|
||||
@@ -255,6 +258,7 @@ export class WebRTCService implements OnDestroy {
|
||||
oderId: user.oderId,
|
||||
serverId: message.serverId
|
||||
});
|
||||
|
||||
this.peerManager.createPeerConnection(user.oderId, true);
|
||||
this.peerManager.createAndSendOffer(user.oderId);
|
||||
|
||||
@@ -273,6 +277,7 @@ export class WebRTCService implements OnDestroy {
|
||||
displayName: message.displayName,
|
||||
oderId: message.oderId
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case SIGNALING_TYPE_USER_LEFT:
|
||||
@@ -337,7 +342,9 @@ export class WebRTCService implements OnDestroy {
|
||||
});
|
||||
|
||||
for (const peerId of peersToClose) {
|
||||
this.logger.info('Closing peer from different server', { peerId, currentServer: serverId });
|
||||
this.logger.info('Closing peer from different server', { peerId,
|
||||
currentServer: serverId });
|
||||
|
||||
this.peerManager.removePeer(peerId);
|
||||
this.peerServerMap.delete(peerId);
|
||||
}
|
||||
@@ -355,7 +362,7 @@ export class WebRTCService implements OnDestroy {
|
||||
}
|
||||
|
||||
// ═══════════════════════════════════════════════════════════════════
|
||||
// PUBLIC API – matches the old monolithic service's interface
|
||||
// PUBLIC API - matches the old monolithic service's interface
|
||||
// ═══════════════════════════════════════════════════════════════════
|
||||
|
||||
/**
|
||||
@@ -414,8 +421,12 @@ export class WebRTCService implements OnDestroy {
|
||||
* @param displayName - The user's display name.
|
||||
*/
|
||||
identify(oderId: string, displayName: string): void {
|
||||
this.lastIdentifyCredentials = { oderId, displayName };
|
||||
this.sendRawMessage({ type: SIGNALING_TYPE_IDENTIFY, oderId, displayName });
|
||||
this.lastIdentifyCredentials = { oderId,
|
||||
displayName };
|
||||
|
||||
this.sendRawMessage({ type: SIGNALING_TYPE_IDENTIFY,
|
||||
oderId,
|
||||
displayName });
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -425,9 +436,12 @@ export class WebRTCService implements OnDestroy {
|
||||
* @param userId - The local user ID.
|
||||
*/
|
||||
joinRoom(roomId: string, userId: string): void {
|
||||
this.lastJoinedServer = { serverId: roomId, userId };
|
||||
this.lastJoinedServer = { serverId: roomId,
|
||||
userId };
|
||||
|
||||
this.memberServerIds.add(roomId);
|
||||
this.sendRawMessage({ type: SIGNALING_TYPE_JOIN_SERVER, serverId: roomId });
|
||||
this.sendRawMessage({ type: SIGNALING_TYPE_JOIN_SERVER,
|
||||
serverId: roomId });
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -438,10 +452,13 @@ export class WebRTCService implements OnDestroy {
|
||||
* @param userId - The local user ID.
|
||||
*/
|
||||
switchServer(serverId: string, userId: string): void {
|
||||
this.lastJoinedServer = { serverId, userId };
|
||||
this.lastJoinedServer = { serverId,
|
||||
userId };
|
||||
|
||||
if (this.memberServerIds.has(serverId)) {
|
||||
this.sendRawMessage({ type: SIGNALING_TYPE_VIEW_SERVER, serverId });
|
||||
this.sendRawMessage({ type: SIGNALING_TYPE_VIEW_SERVER,
|
||||
serverId });
|
||||
|
||||
this.logger.info('Viewed server (already joined)', {
|
||||
serverId,
|
||||
userId,
|
||||
@@ -449,7 +466,9 @@ export class WebRTCService implements OnDestroy {
|
||||
});
|
||||
} else {
|
||||
this.memberServerIds.add(serverId);
|
||||
this.sendRawMessage({ type: SIGNALING_TYPE_JOIN_SERVER, serverId });
|
||||
this.sendRawMessage({ type: SIGNALING_TYPE_JOIN_SERVER,
|
||||
serverId });
|
||||
|
||||
this.logger.info('Joined new server via switch', {
|
||||
serverId,
|
||||
userId,
|
||||
@@ -469,7 +488,9 @@ export class WebRTCService implements OnDestroy {
|
||||
leaveRoom(serverId?: string): void {
|
||||
if (serverId) {
|
||||
this.memberServerIds.delete(serverId);
|
||||
this.sendRawMessage({ type: SIGNALING_TYPE_LEAVE_SERVER, serverId });
|
||||
this.sendRawMessage({ type: SIGNALING_TYPE_LEAVE_SERVER,
|
||||
serverId });
|
||||
|
||||
this.logger.info('Left server', { serverId });
|
||||
|
||||
if (this.memberServerIds.size === 0) {
|
||||
@@ -480,8 +501,10 @@ export class WebRTCService implements OnDestroy {
|
||||
}
|
||||
|
||||
this.memberServerIds.forEach((sid) => {
|
||||
this.sendRawMessage({ type: SIGNALING_TYPE_LEAVE_SERVER, serverId: sid });
|
||||
this.sendRawMessage({ type: SIGNALING_TYPE_LEAVE_SERVER,
|
||||
serverId: sid });
|
||||
});
|
||||
|
||||
this.memberServerIds.clear();
|
||||
this.fullCleanup();
|
||||
}
|
||||
@@ -619,7 +642,7 @@ export class WebRTCService implements OnDestroy {
|
||||
/**
|
||||
* Set the output volume for remote audio playback.
|
||||
*
|
||||
* @param volume - Normalised volume (0–1).
|
||||
* @param volume - Normalised volume (0-1).
|
||||
*/
|
||||
setOutputVolume(volume: number): void {
|
||||
this.mediaManager.setOutputVolume(volume);
|
||||
|
||||
Reference in New Issue
Block a user