openvidu/openvidu-components-angular/src/app/openvidu-webcomponent/openvidu-webcomponent.compo...

70 lines
1.9 KiB
TypeScript
Raw Normal View History

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