diff --git a/openvidu-components-angular/projects/openvidu-angular/src/lib/components/session/session.component.spec.ts b/openvidu-components-angular/projects/openvidu-angular/src/lib/components/session/session.component.spec.ts index dfb37238..884c4f91 100644 --- a/openvidu-components-angular/projects/openvidu-angular/src/lib/components/session/session.component.spec.ts +++ b/openvidu-components-angular/projects/openvidu-angular/src/lib/components/session/session.component.spec.ts @@ -7,44 +7,37 @@ import { ChatServiceMock } from '../../services/chat/chat.service.mock'; import { LoggerService } from '../../services/logger/logger.service'; import { LoggerServiceMock } from '../../services/logger/logger.service.mock'; -import { PlatformService } from '../../services/platform/platform.service'; -import { PlatformServiceMock } from '../../services/platform/platform.service.mock'; -import { TokenService } from '../../services/token/token.service'; -import { TokenServiceMock } from '../../services/token/token.service.mock'; -import { WebrtcService } from '../../services/webrtc/webrtc.service'; -import { WebrtcServiceMock } from '../../services/webrtc/webrtc.service.mock'; import { ParticipantService } from '../../services/participant/participant.service'; import { ParticipantServiceMock } from '../../services/participant/participant.service.mock'; +import { PlatformService } from '../../services/platform/platform.service'; +import { PlatformServiceMock } from '../../services/platform/platform.service.mock'; import { SessionComponent } from './session.component'; describe('SessionComponent', () => { - let component: SessionComponent; - let fixture: ComponentFixture; + let component: SessionComponent; + let fixture: ComponentFixture; - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ SessionComponent ], - providers: [ - { provide: LoggerService, useClass: LoggerServiceMock }, + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [SessionComponent], + providers: [ + { provide: LoggerService, useClass: LoggerServiceMock }, { provide: ActionService, useClass: ActionServiceMock }, { provide: ParticipantService, useClass: ParticipantServiceMock }, - { provide: WebrtcService, useClass: WebrtcServiceMock }, { provide: ChatService, useClass: ChatServiceMock }, - { provide: PlatformService, useClass: PlatformServiceMock }, - { provide: TokenService, useClass: TokenServiceMock } - ] - }) - .compileComponents(); - }); + { provide: PlatformService, useClass: PlatformServiceMock } + ] + }).compileComponents(); + }); - beforeEach(() => { - fixture = TestBed.createComponent(SessionComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); + beforeEach(() => { + fixture = TestBed.createComponent(SessionComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); - it('should create', () => { - expect(component).toBeTruthy(); - }); + it('should create', () => { + expect(component).toBeTruthy(); + }); }); diff --git a/openvidu-components-angular/projects/openvidu-angular/src/lib/components/session/session.component.ts b/openvidu-components-angular/projects/openvidu-angular/src/lib/components/session/session.component.ts index 3e53b2f1..fe0ab397 100644 --- a/openvidu-components-angular/projects/openvidu-angular/src/lib/components/session/session.component.ts +++ b/openvidu-components-angular/projects/openvidu-angular/src/lib/components/session/session.component.ts @@ -43,7 +43,6 @@ import { PanelEvent, PanelService } from '../../services/panel/panel.service'; import { ParticipantService } from '../../services/participant/participant.service'; import { PlatformService } from '../../services/platform/platform.service'; import { RecordingService } from '../../services/recording/recording.service'; -import { TokenService } from '../../services/token/token.service'; import { TranslateService } from '../../services/translate/translate.service'; import { VirtualBackgroundService } from '../../services/virtual-background/virtual-background.service'; @@ -94,7 +93,6 @@ export class SessionComponent implements OnInit, OnDestroy { protected participantService: ParticipantService, protected loggerSrv: LoggerService, protected chatService: ChatService, - protected tokenService: TokenService, private libService: OpenViduAngularConfigService, protected layoutService: LayoutService, protected panelService: PanelService, @@ -167,7 +165,7 @@ export class SessionComponent implements OnInit, OnDestroy { async ngOnInit() { if (!this.usedInPrejoinPage) { - if (!this.tokenService.getScreenToken()) { + if (!this.openviduService.getScreenToken()) { // Hide screenshare button if screen token does not exist this.libService.screenshareButton.next(false); } @@ -254,16 +252,19 @@ export class SessionComponent implements OnInit, OnDestroy { private async connectToSession(): Promise { try { + const webcamToken = this.openviduService.getWebcamToken(); + const screenToken = this.openviduService.getScreenToken(); + if (this.participantService.haveICameraAndScreenActive()) { - await this.openviduService.connectSession(this.openviduService.getWebcamSession(), this.tokenService.getWebcamToken()); - await this.openviduService.connectSession(this.openviduService.getScreenSession(), this.tokenService.getScreenToken()); + await this.openviduService.connectSession(this.openviduService.getWebcamSession(), webcamToken); + await this.openviduService.connectSession(this.openviduService.getScreenSession(), screenToken); await this.openviduService.publish(this.participantService.getMyCameraPublisher()); await this.openviduService.publish(this.participantService.getMyScreenPublisher()); } else if (this.participantService.isOnlyMyScreenActive()) { - await this.openviduService.connectSession(this.openviduService.getScreenSession(), this.tokenService.getScreenToken()); + await this.openviduService.connectSession(this.openviduService.getScreenSession(), screenToken); await this.openviduService.publish(this.participantService.getMyScreenPublisher()); } else { - await this.openviduService.connectSession(this.openviduService.getWebcamSession(), this.tokenService.getWebcamToken()); + await this.openviduService.connectSession(this.openviduService.getWebcamSession(), webcamToken); await this.openviduService.publish(this.participantService.getMyCameraPublisher()); } } catch (error) { diff --git a/openvidu-components-angular/projects/openvidu-angular/src/lib/components/toolbar/toolbar.component.ts b/openvidu-components-angular/projects/openvidu-angular/src/lib/components/toolbar/toolbar.component.ts index 76a72bbf..08fd992e 100644 --- a/openvidu-components-angular/projects/openvidu-angular/src/lib/components/toolbar/toolbar.component.ts +++ b/openvidu-components-angular/projects/openvidu-angular/src/lib/components/toolbar/toolbar.component.ts @@ -16,7 +16,6 @@ import { skip, Subscription } from 'rxjs'; import { ChatService } from '../../services/chat/chat.service'; import { DocumentService } from '../../services/document/document.service'; import { PanelEvent, PanelService } from '../../services/panel/panel.service'; -import { TokenService } from '../../services/token/token.service'; import { MediaChange } from '@angular/flex-layout'; import { MatMenuTrigger } from '@angular/material/menu'; @@ -373,7 +372,6 @@ export class ToolbarComponent implements OnInit, OnDestroy, AfterViewInit { protected documentService: DocumentService, protected chatService: ChatService, protected panelService: PanelService, - protected tokenService: TokenService, protected participantService: ParticipantService, protected openviduService: OpenViduService, protected oVDevicesService: DeviceService, diff --git a/openvidu-components-angular/projects/openvidu-angular/src/lib/components/videoconference/videoconference.component.ts b/openvidu-components-angular/projects/openvidu-angular/src/lib/components/videoconference/videoconference.component.ts index 7edafdd5..ae9aa089 100644 --- a/openvidu-components-angular/projects/openvidu-angular/src/lib/components/videoconference/videoconference.component.ts +++ b/openvidu-components-angular/projects/openvidu-angular/src/lib/components/videoconference/videoconference.component.ts @@ -38,7 +38,6 @@ import { LoggerService } from '../../services/logger/logger.service'; import { OpenViduService } from '../../services/openvidu/openvidu.service'; import { ParticipantService } from '../../services/participant/participant.service'; import { StorageService } from '../../services/storage/storage.service'; -import { TokenService } from '../../services/token/token.service'; import { TranslateService } from '../../services/translate/translate.service'; /** @@ -274,7 +273,7 @@ export class VideoconferenceComponent implements OnInit, OnDestroy, AfterViewIni this.log.w('No tokens received'); } else { this.log.w('Tokens received'); - this.tokenService.setWebcamToken(tokens.webcam); + this.openviduService.setWebcamToken(tokens.webcam); const openviduEdition = new URL(tokens.webcam).searchParams.get('edition'); if (!!openviduEdition) { @@ -285,7 +284,7 @@ export class VideoconferenceComponent implements OnInit, OnDestroy, AfterViewIni } if (tokens.screen) { - this.tokenService.setScreenToken(tokens.screen); + this.openviduService.setScreenToken(tokens.screen); } else { this.log.w('No screen token found. Screenshare feature will be disabled'); } @@ -438,7 +437,6 @@ export class VideoconferenceComponent implements OnInit, OnDestroy, AfterViewIni private openviduService: OpenViduService, private actionService: ActionService, private libService: OpenViduAngularConfigService, - private tokenService: TokenService, private translateService: TranslateService ) { this.log = this.loggerSrv.get('VideoconferenceComponent'); diff --git a/openvidu-components-angular/projects/openvidu-angular/src/lib/openvidu-angular.module.ts b/openvidu-components-angular/projects/openvidu-angular/src/lib/openvidu-angular.module.ts index 0331da3d..747477a9 100644 --- a/openvidu-components-angular/projects/openvidu-angular/src/lib/openvidu-angular.module.ts +++ b/openvidu-components-angular/projects/openvidu-angular/src/lib/openvidu-angular.module.ts @@ -35,7 +35,6 @@ import { ParticipantService } from './services/participant/participant.service'; import { PlatformService } from './services/platform/platform.service'; import { RecordingService } from './services/recording/recording.service'; import { StorageService } from './services/storage/storage.service'; -import { TokenService } from './services/token/token.service'; import { AudioWaveComponent } from './components/audio-wave/audio-wave.component'; import { PanelComponent } from './components/panel/panel.component'; @@ -132,7 +131,6 @@ const privateComponents = [ PlatformService, ParticipantService, StorageService, - TokenService, OpenViduService, RecordingService ], diff --git a/openvidu-components-angular/projects/openvidu-angular/src/lib/services/openvidu/openvidu.service.ts b/openvidu-components-angular/projects/openvidu-angular/src/lib/services/openvidu/openvidu.service.ts index 6ed8f07f..637208ca 100644 --- a/openvidu-components-angular/projects/openvidu-angular/src/lib/services/openvidu/openvidu.service.ts +++ b/openvidu-components-angular/projects/openvidu-angular/src/lib/services/openvidu/openvidu.service.ts @@ -1,5 +1,14 @@ import { Injectable } from '@angular/core'; -import { Connection, OpenVidu, OpenViduError, OpenViduErrorName, Publisher, PublisherProperties, Session, SignalOptions } from 'openvidu-browser'; +import { + Connection, + OpenVidu, + OpenViduError, + OpenViduErrorName, + Publisher, + PublisherProperties, + Session, + SignalOptions +} from 'openvidu-browser'; import { LoggerService } from '../logger/logger.service'; @@ -12,13 +21,14 @@ import { OpenViduAngularConfigService } from '../config/openvidu-angular.config. import { DeviceService } from '../device/device.service'; import { ParticipantService } from '../participant/participant.service'; import { PlatformService } from '../platform/platform.service'; -import { TokenService } from '../token/token.service'; @Injectable({ providedIn: 'root' }) export class OpenViduService { private ovEdition: OpenViduEdition; + private webcamToken = ''; + private screenToken = ''; protected OV: OpenVidu; protected OVScreen: OpenVidu; protected webcamSession: Session; @@ -35,8 +45,7 @@ export class OpenViduService { protected platformService: PlatformService, protected loggerSrv: LoggerService, private participantService: ParticipantService, - protected deviceService: DeviceService, - protected tokenService: TokenService + protected deviceService: DeviceService ) { this.log = this.loggerSrv.get('OpenViduService'); } @@ -62,6 +71,34 @@ export class OpenViduService { } } + /** + * @internal + */ + setWebcamToken(token: string) { + this.webcamToken = token; + } + + /** + * @internal + */ + setScreenToken(token: string) { + this.screenToken = token; + } + + /** + * @internal + */ + getWebcamToken(): string { + return this.webcamToken; + } + + /** + * @internal + */ + getScreenToken(): string { + return this.screenToken; + } + /** * @internal */ @@ -268,8 +305,7 @@ export class OpenViduService { // Enabling webcam const hasAudio = this.participantService.hasScreenAudioActive(); if (!this.isWebcamSessionConnected()) { - //TODO: should be the token in the participant? - await this.connectSession(this.getWebcamSession(), this.tokenService.getWebcamToken()); + await this.connectSession(this.getWebcamSession(), this.getWebcamToken()); } await this.publish(this.participantService.getMyCameraPublisher()); await this.publishVideoAux(this.participantService.getMyCameraPublisher(), true); @@ -288,10 +324,10 @@ export class OpenViduService { private async publishVideoAux(publisher: Publisher, publish: boolean): Promise { if (!!publisher) { let resource: boolean | MediaStreamTrack = true; - if(publish){ + if (publish) { // Forcing restoration with a custom media stream (the older one instead the default) const currentDeviceId = this.deviceService.getCameraSelected()?.device; - const mediaStream = await this.createMediaStream({videoSource: currentDeviceId, audioSource: false}); + const mediaStream = await this.createMediaStream({ videoSource: currentDeviceId, audioSource: false }); resource = mediaStream.getVideoTracks()[0]; } @@ -354,7 +390,7 @@ export class OpenViduService { this.participantService.activeMyScreenShare(screenPublisher); if (!this.isScreenSessionConnected()) { - await this.connectSession(this.getScreenSession(), this.tokenService.getScreenToken()); + await this.connectSession(this.getScreenSession(), this.getScreenToken()); } await this.publish(this.participantService.getMyScreenPublisher()); if (!this.participantService.isMyVideoActive()) { @@ -373,7 +409,7 @@ export class OpenViduService { // Enable webcam if (!this.isWebcamSessionConnected()) { - await this.connectSession(this.getWebcamSession(), this.tokenService.getWebcamToken()); + await this.connectSession(this.getWebcamSession(), this.getWebcamToken()); } await this.publish(this.participantService.getMyCameraPublisher()); this.publishAudioAux(this.participantService.getMyCameraPublisher(), hasAudio); diff --git a/openvidu-components-angular/projects/openvidu-angular/src/lib/services/token/token.service.mock.ts b/openvidu-components-angular/projects/openvidu-angular/src/lib/services/token/token.service.mock.ts deleted file mode 100644 index 5c1d85d9..00000000 --- a/openvidu-components-angular/projects/openvidu-angular/src/lib/services/token/token.service.mock.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { Injectable } from '@angular/core'; - -@Injectable() -export class TokenServiceMock { - - constructor() {} - - setWebcamToken(token: string) {} - - setScreenToken(token: string) {} - - getWebcamToken(): string { - return ''; - } - - getScreenToken(): string { - return ''; - } -} diff --git a/openvidu-components-angular/projects/openvidu-angular/src/lib/services/token/token.service.spec.ts b/openvidu-components-angular/projects/openvidu-angular/src/lib/services/token/token.service.spec.ts deleted file mode 100644 index 83da2399..00000000 --- a/openvidu-components-angular/projects/openvidu-angular/src/lib/services/token/token.service.spec.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { TestBed } from '@angular/core/testing'; -import { LoggerService } from '../logger/logger.service'; -import { LoggerServiceMock } from '../logger/logger.service.mock'; - -import { TokenService } from './token.service'; - -describe('TokenService', () => { - let service: TokenService; - - beforeEach(() => { - TestBed.configureTestingModule({ - providers: [ - { provide: LoggerService, useClass: LoggerServiceMock } - ] - }); - service = TestBed.inject(TokenService); - }); - - it('should be created', () => { - expect(service).toBeTruthy(); - }); -}); diff --git a/openvidu-components-angular/projects/openvidu-angular/src/lib/services/token/token.service.ts b/openvidu-components-angular/projects/openvidu-angular/src/lib/services/token/token.service.ts deleted file mode 100644 index c544a944..00000000 --- a/openvidu-components-angular/projects/openvidu-angular/src/lib/services/token/token.service.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { Injectable } from '@angular/core'; - -/** - * @internal - */ -@Injectable({ - providedIn: 'root' -}) -export class TokenService { - private webcamToken = ''; - private screenToken = ''; - - constructor() {} - - setWebcamToken(token: string) { - this.webcamToken = token; - } - - setScreenToken(token: string) { - this.screenToken = token; - } - - getWebcamToken(): string { - return this.webcamToken; - } - - getScreenToken(): string { - return this.screenToken; - } -} diff --git a/openvidu-components-angular/projects/openvidu-angular/src/lib/services/virtual-background/virtual-background.service.ts b/openvidu-components-angular/projects/openvidu-angular/src/lib/services/virtual-background/virtual-background.service.ts index 79cbf5c8..75f63e95 100644 --- a/openvidu-components-angular/projects/openvidu-angular/src/lib/services/virtual-background/virtual-background.service.ts +++ b/openvidu-components-angular/projects/openvidu-angular/src/lib/services/virtual-background/virtual-background.service.ts @@ -1,9 +1,9 @@ import { Injectable } from '@angular/core'; import { BehaviorSubject, Observable } from 'rxjs'; import { BackgroundEffect, EffectType } from '../../models/background-effect.model'; +import { OpenViduService } from '../openvidu/openvidu.service'; import { ParticipantService } from '../participant/participant.service'; import { StorageService } from '../storage/storage.service'; -import { TokenService } from '../token/token.service'; /** * @internal @@ -41,7 +41,7 @@ export class VirtualBackgroundService { constructor( private participantService: ParticipantService, private storageService: StorageService, - private tokenService: TokenService + private openviduService: OpenViduService ) { this.backgroundSelectedObs = this.backgroundSelected.asObservable(); } @@ -69,7 +69,7 @@ export class VirtualBackgroundService { if (bg.id !== this.backgroundSelected.getValue()) { const filter = this.participantService.getMyCameraPublisher().stream.filter; const isBackgroundSelected = !!filter && filter.type.startsWith('VB:'); - let options = { token: this.tokenService.getWebcamToken(), url: '' }; + let options = { token: this.openviduService.getWebcamToken(), url: '' }; if (bg.type === EffectType.IMAGE) { options.url = bg.src; }