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-23 13:48:17 +01:00
|
|
|
/**
|
|
|
|
* @internal
|
|
|
|
*/
|
2022-01-19 17:24:11 +01:00
|
|
|
@Injectable()
|
2022-02-15 16:24:01 +01:00
|
|
|
export class OpenViduAngularConfigService {
|
|
|
|
private configuration: OpenViduAngularConfig;
|
2022-03-07 15:50:27 +01:00
|
|
|
minimal = <BehaviorSubject<boolean>>new BehaviorSubject(false);
|
|
|
|
minimalObs: Observable<boolean>;
|
2022-03-16 14:19:04 +01:00
|
|
|
participantName = <BehaviorSubject<string>>new BehaviorSubject('');
|
|
|
|
participantNameObs: Observable<string>;
|
2022-03-10 14:12:43 +01:00
|
|
|
prejoin = <BehaviorSubject<boolean>>new BehaviorSubject(true);
|
|
|
|
prejoinObs: Observable<boolean>;
|
|
|
|
|
2022-03-07 15:50:27 +01:00
|
|
|
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>;
|
|
|
|
|
2022-04-25 16:17:32 +02:00
|
|
|
activitiesPanelButton = <BehaviorSubject<boolean>>new BehaviorSubject(true);
|
|
|
|
activitiesPanelButtonObs: Observable<boolean>;
|
|
|
|
|
2022-03-07 15:50:27 +01:00
|
|
|
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-03-10 12:55:43 +01:00
|
|
|
participantItemMuteButton = <BehaviorSubject<boolean>>new BehaviorSubject(true);
|
|
|
|
participantItemMuteButtonObs: Observable<boolean>;
|
2022-04-25 16:17:32 +02:00
|
|
|
backgroundEffectsButton = <BehaviorSubject<boolean>>new BehaviorSubject(true);
|
|
|
|
backgroundEffectsButtonObs: Observable<boolean>;
|
2022-03-07 15:50:27 +01:00
|
|
|
|
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-03-23 13:48:17 +01:00
|
|
|
if (this.isProduction()) console.log('OpenVidu Angular Production Mode');
|
2022-03-07 15:50:27 +01:00
|
|
|
this.minimalObs = this.minimal.asObservable();
|
2022-03-16 14:19:04 +01:00
|
|
|
this.participantNameObs = this.participantName.asObservable();
|
2022-03-10 14:12:43 +01:00
|
|
|
this.prejoinObs = this.prejoin.asObservable();
|
2022-03-07 15:50:27 +01:00
|
|
|
this.videoMutedObs = this.videoMuted.asObservable();
|
|
|
|
this.audioMutedObs = this.audioMuted.asObservable();
|
|
|
|
//Toolbar observables
|
|
|
|
this.screenshareButtonObs = this.screenshareButton.asObservable();
|
|
|
|
this.fullscreenButtonObs = this.fullscreenButton.asObservable();
|
2022-04-25 16:17:32 +02:00
|
|
|
this.backgroundEffectsButtonObs = this.backgroundEffectsButton.asObservable();
|
2022-03-07 15:50:27 +01:00
|
|
|
this.leaveButtonObs = this.leaveButton.asObservable();
|
|
|
|
this.participantsPanelButtonObs = this.participantsPanelButton.asObservable();
|
|
|
|
this.chatPanelButtonObs = this.chatPanelButton.asObservable();
|
2022-04-25 16:17:32 +02:00
|
|
|
this.activitiesPanelButtonObs = this.activitiesPanelButton.asObservable();
|
2022-03-07 15:50:27 +01:00
|
|
|
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-03-10 12:55:43 +01:00
|
|
|
// Participant item observables
|
|
|
|
this.participantItemMuteButtonObs = this.participantItemMuteButton.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 {
|
2022-03-23 13:48:17 +01:00
|
|
|
return typeof this.getConfig().participantFactory === 'function';
|
2022-02-14 14:12:58 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
getParticipantFactory(): ParticipantFactoryFunction {
|
|
|
|
return this.getConfig().participantFactory;
|
2022-01-19 17:24:11 +01:00
|
|
|
}
|
|
|
|
}
|