import { Component, Input, OnInit } from '@angular/core'; export interface SessionConfig { sessionName: string; userName: string; tokens: { webcam: string; screen: string }; } @Component({ template: `` }) export class OpenviduWebComponentComponent implements OnInit { @Input() openviduServerUrl: string; @Input() openviduSecret: string; _sessionConfig: SessionConfig; successParams: boolean = false; constructor() {} ngOnInit(): void {} @Input('sessionConfig') set sessionConfig(config: SessionConfig | string) { console.log('Webcomponent sessionConfig: ', config); if (typeof config === 'string') { try { console.log('STRING') config = JSON.parse(config); } catch (error) { console.error('Unexpected JSON', error); throw 'Unexpected JSON'; } } if (this.isEmpty(config)) { // Leaving session when sessionConfig is empty } else { console.log("URL",this.openviduServerUrl); console.log('SECRET',this.openviduSecret); this.successParams = this.isCorrectParams(config); this._sessionConfig = config; if (!this.successParams) { console.error('Parameters received are incorrect: ', config); console.error('Session cannot start'); } } } private isCorrectParams(config: SessionConfig): boolean { 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; } }