2022-01-19 17:24:11 +01:00
|
|
|
import { Inject, Injectable } from '@angular/core';
|
2022-03-07 15:50:27 +01:00
|
|
|
import { BehaviorSubject, Observable } from 'rxjs';
|
2022-02-15 16:24:01 +01:00
|
|
|
import { OpenViduAngularConfig, ParticipantFactoryFunction } from '../../config/openvidu-angular.config';
|
2022-01-19 17:24:11 +01:00
|
|
|
|
|
|
|
// import { version } from '../../../../package.json';
|
|
|
|
|
2022-03-07 15:50:27 +01:00
|
|
|
|
2022-01-19 17:24:11 +01:00
|
|
|
@Injectable()
|
2022-02-15 16:24:01 +01:00
|
|
|
export class OpenViduAngularConfigService {
|
|
|
|
private configuration: OpenViduAngularConfig;
|
2022-01-19 17:24:11 +01:00
|
|
|
|
2022-03-07 15:50:27 +01:00
|
|
|
minimal = <BehaviorSubject<boolean>>new BehaviorSubject(false);
|
|
|
|
minimalObs: Observable<boolean>;
|
|
|
|
videoMuted = <BehaviorSubject<boolean>>new BehaviorSubject(false);
|
|
|
|
videoMutedObs: Observable<boolean>;
|
|
|
|
audioMuted = <BehaviorSubject<boolean>>new BehaviorSubject(false);
|
|
|
|
audioMutedObs: Observable<boolean>;
|
|
|
|
screenshareButton = <BehaviorSubject<boolean>>new BehaviorSubject(true);
|
|
|
|
screenshareButtonObs: Observable<boolean>;
|
|
|
|
|
|
|
|
fullscreenButton = <BehaviorSubject<boolean>>new BehaviorSubject(true);
|
|
|
|
fullscreenButtonObs: Observable<boolean>;
|
|
|
|
|
|
|
|
leaveButton = <BehaviorSubject<boolean>>new BehaviorSubject(true);
|
|
|
|
leaveButtonObs: Observable<boolean>;
|
|
|
|
|
|
|
|
participantsPanelButton = <BehaviorSubject<boolean>>new BehaviorSubject(true);
|
|
|
|
participantsPanelButtonObs: Observable<boolean>;
|
|
|
|
|
|
|
|
chatPanelButton = <BehaviorSubject<boolean>>new BehaviorSubject(true);
|
|
|
|
chatPanelButtonObs: Observable<boolean>;
|
|
|
|
|
|
|
|
displaySessionName = <BehaviorSubject<boolean>>new BehaviorSubject(true);
|
|
|
|
displaySessionNameObs: Observable<boolean>;
|
|
|
|
|
|
|
|
displayLogo = <BehaviorSubject<boolean>>new BehaviorSubject(true);
|
|
|
|
displayLogoObs: Observable<boolean>;
|
|
|
|
displayParticipantName = <BehaviorSubject<boolean>>new BehaviorSubject(true);
|
|
|
|
displayParticipantNameObs: Observable<boolean>;
|
|
|
|
displayAudioDetection = <BehaviorSubject<boolean>>new BehaviorSubject(true);
|
|
|
|
displayAudioDetectionObs: Observable<boolean>;
|
|
|
|
settingsButton = <BehaviorSubject<boolean>>new BehaviorSubject(true);
|
|
|
|
settingsButtonObs: Observable<boolean>;
|
|
|
|
|
2022-02-15 16:24:01 +01:00
|
|
|
constructor(@Inject('OPENVIDU_ANGULAR_CONFIG') config: OpenViduAngularConfig) {
|
2022-01-19 17:24:11 +01:00
|
|
|
this.configuration = config;
|
|
|
|
console.log(this.configuration);
|
2022-02-14 14:12:58 +01:00
|
|
|
if(this.isProduction()) console.log('OpenVidu Angular Production Mode');
|
2022-03-07 15:50:27 +01:00
|
|
|
this.minimalObs = this.minimal.asObservable();
|
|
|
|
this.videoMutedObs = this.videoMuted.asObservable();
|
|
|
|
this.audioMutedObs = this.audioMuted.asObservable();
|
|
|
|
//Toolbar observables
|
|
|
|
this.screenshareButtonObs = this.screenshareButton.asObservable();
|
|
|
|
this.fullscreenButtonObs = this.fullscreenButton.asObservable();
|
|
|
|
this.leaveButtonObs = this.leaveButton.asObservable();
|
|
|
|
this.participantsPanelButtonObs = this.participantsPanelButton.asObservable();
|
|
|
|
this.chatPanelButtonObs = this.chatPanelButton.asObservable();
|
|
|
|
this.displaySessionNameObs = this.displaySessionName.asObservable();
|
|
|
|
this.displayLogoObs = this.displayLogo.asObservable();
|
|
|
|
//Stream observables
|
|
|
|
this.displayParticipantNameObs = this.displayParticipantName.asObservable();
|
|
|
|
this.displayAudioDetectionObs = this.displayAudioDetection.asObservable();
|
|
|
|
this.settingsButtonObs = this.settingsButton.asObservable();
|
2022-01-19 17:24:11 +01:00
|
|
|
}
|
|
|
|
|
2022-02-15 16:24:01 +01:00
|
|
|
getConfig(): OpenViduAngularConfig {
|
2022-01-19 17:24:11 +01:00
|
|
|
return this.configuration;
|
|
|
|
}
|
|
|
|
isProduction(): boolean {
|
2022-02-14 14:12:58 +01:00
|
|
|
return this.configuration?.production;
|
2022-01-19 17:24:11 +01:00
|
|
|
}
|
|
|
|
|
2022-02-14 14:12:58 +01:00
|
|
|
hasParticipantFactory(): boolean {
|
|
|
|
return typeof this.getConfig().participantFactory === "function";
|
|
|
|
}
|
|
|
|
|
|
|
|
getParticipantFactory(): ParticipantFactoryFunction {
|
|
|
|
return this.getConfig().participantFactory;
|
2022-01-19 17:24:11 +01:00
|
|
|
}
|
|
|
|
}
|