2022-01-25 12:02:50 +01:00
|
|
|
import { Component, Input, OnInit } from '@angular/core';
|
2022-01-24 11:18:23 +01:00
|
|
|
|
|
|
|
export interface SessionConfig {
|
|
|
|
sessionName: string;
|
|
|
|
userName: string;
|
|
|
|
tokens: { webcam: string; screen: string };
|
|
|
|
}
|
|
|
|
|
|
|
|
@Component({
|
2022-01-25 12:02:50 +01:00
|
|
|
template: `<ov-videoconference
|
2022-01-24 11:18:23 +01:00
|
|
|
*ngIf="successParams"
|
2022-01-25 12:02:50 +01:00
|
|
|
[sessionName]="_sessionConfig.sessionName"
|
|
|
|
[userName]="_sessionConfig.userName"
|
2022-01-24 11:18:23 +01:00
|
|
|
[openviduServerUrl]="openviduServerUrl"
|
|
|
|
[openviduSecret]="openviduSecret"
|
2022-01-25 12:02:50 +01:00
|
|
|
[tokens]="_sessionConfig.tokens"
|
|
|
|
></ov-videoconference>`
|
2022-01-24 11:18:23 +01:00
|
|
|
})
|
|
|
|
export class OpenviduWebComponentComponent implements OnInit {
|
|
|
|
@Input() openviduServerUrl: string;
|
|
|
|
@Input() openviduSecret: string;
|
2022-01-25 12:02:50 +01:00
|
|
|
_sessionConfig: SessionConfig;
|
2022-01-24 11:18:23 +01:00
|
|
|
|
|
|
|
successParams: boolean = false;
|
|
|
|
|
|
|
|
constructor() {}
|
|
|
|
|
|
|
|
ngOnInit(): void {}
|
|
|
|
|
2022-01-25 12:02:50 +01:00
|
|
|
@Input('sessionConfig')
|
2022-01-24 11:18:23 +01:00
|
|
|
set sessionConfig(config: SessionConfig | string) {
|
2022-01-25 12:02:50 +01:00
|
|
|
console.log('Webcomponent sessionConfig: ', config);
|
|
|
|
if (typeof config === 'string') {
|
2022-01-24 11:18:23 +01:00
|
|
|
try {
|
2022-01-25 12:02:50 +01:00
|
|
|
console.log('STRING')
|
2022-01-24 11:18:23 +01:00
|
|
|
config = JSON.parse(config);
|
|
|
|
} catch (error) {
|
2022-01-25 12:02:50 +01:00
|
|
|
console.error('Unexpected JSON', error);
|
|
|
|
throw 'Unexpected JSON';
|
2022-01-24 11:18:23 +01:00
|
|
|
}
|
2022-01-25 12:02:50 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
if (this.isEmpty(<SessionConfig>config)) {
|
|
|
|
// Leaving session when sessionConfig is empty
|
2022-01-24 11:18:23 +01:00
|
|
|
} else {
|
2022-01-25 12:02:50 +01:00
|
|
|
console.log("URL",this.openviduServerUrl);
|
|
|
|
console.log('SECRET',this.openviduSecret);
|
|
|
|
this.successParams = this.isCorrectParams(<SessionConfig>config);
|
|
|
|
this._sessionConfig = <SessionConfig>config;
|
|
|
|
if (!this.successParams) {
|
|
|
|
console.error('Parameters received are incorrect: ', config);
|
|
|
|
console.error('Session cannot start');
|
2022-01-24 11:18:23 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
private isCorrectParams(config: SessionConfig): boolean {
|
2022-01-25 12:02:50 +01:00
|
|
|
|
|
|
|
console.log(config)
|
|
|
|
const canGenerateToken = !!config.sessionName && !!config.userName && !!this.openviduServerUrl && !!this.openviduSecret;
|
|
|
|
const hasToken = !!config.tokens?.webcam && !!config.tokens?.screen && !!config.userName;
|
2022-01-24 11:18:23 +01:00
|
|
|
|
|
|
|
return canGenerateToken || hasToken;
|
|
|
|
}
|
|
|
|
|
|
|
|
private isEmpty(config: SessionConfig): boolean {
|
|
|
|
return Object.keys(config).length === 0;
|
|
|
|
}
|
|
|
|
}
|