import { Component, OnInit } from '@angular/core'; import { RecordingInfo, TokenModel } from 'openvidu-angular'; import { RestService } from '../services/rest.service'; @Component({ selector: 'app-call', templateUrl: './call.component.html', styleUrls: ['./call.component.scss'] }) export class CallComponent implements OnInit { sessionId = 'daily-call'; tokens: TokenModel; joinSessionClicked: boolean = false; closeClicked: boolean = false; isSessionAlive: boolean = false; recordingList: RecordingInfo[] = []; recordingError: any; streamingError: any; streamingInfo: any; constructor(private restService: RestService) {} async ngOnInit() { await this.requestForTokens(); } async onNodeCrashed() { // Request the tokens again for reconnect to the session await this.requestForTokens(); } onJoinClicked() { console.warn('VC JOIN BUTTON CLICKED'); } onToolbarCameraButtonClicked() { console.warn('VC camera CLICKED'); } onToolbarMicrophoneButtonClicked() { console.warn('VC microphone CLICKED'); } onToolbarScreenshareButtonClicked() { console.warn('VC screenshare CLICKED'); } onToolbarFullscreenButtonClicked() { console.warn('VC fullscreen CLICKED'); } onToolbarParticipantsPanelButtonClicked() { console.warn('VC participants CLICKED'); } onToolbarChatPanelButtonClicked() { console.warn('VC chat CLICKED'); } onToolbarLeaveButtonClicked() { this.isSessionAlive = false; console.log('VC LEAVE BUTTON CLICKED'); } onCameraButtonClicked() { console.warn('TOOLBAR camera CLICKED'); } onMicrophoneButtonClicked() { console.warn('TOOLBAR microphone CLICKED'); } onScreenshareButtonClicked() { console.warn('TOOLBAR screenshare CLICKED'); } onFullscreenButtonClicked() { console.warn('TOOLBAR fullscreen CLICKED'); } onParticipantsPanelButtonClicked() { console.warn('TOOLBAR participants CLICKED'); } onChatPanelButtonClicked() { console.warn('TOOLBAR chat CLICKED'); } onLeaveButtonClicked() { this.isSessionAlive = false; console.log('TOOLBAR LEAVE CLICKED'); } async onStartStreamingClicked(rtmpUrl: string) { console.log('START STREAMING', rtmpUrl); try { this.streamingError = null; this.streamingInfo = await this.restService.startStreaming(rtmpUrl); console.log('Streaming response ', this.streamingInfo); } catch (error) { console.error(error); this.streamingError = error.error; } } async onStopStreamingClicked() { console.log('STOP STREAMING'); try { this.streamingError = null; this.streamingInfo = await this.restService.stopStreaming(); console.log('Streaming response ', this.streamingInfo); } catch (error) { console.error(error); this.streamingError = error.message || error; } } async onStartRecordingClicked() { console.warn('START RECORDING CLICKED'); try { await this.restService.startRecording(this.sessionId); } catch (error) { this.recordingError = error; } } async onStopRecordingClicked() { console.warn('STOP RECORDING CLICKED'); try { this.recordingList = await this.restService.stopRecording(this.sessionId); console.log('RECORDING LIST ', this.recordingList); } catch (error) { this.recordingError = error; } } async onDeleteRecordingClicked(recordingId: string) { console.warn('DELETE RECORDING CLICKED'); try { this.recordingList = await this.restService.deleteRecording(recordingId); } catch (error) { this.recordingError = error; } } private async requestForTokens() { const response = await this.restService.getTokensFromBackend(this.sessionId); this.recordingList = response.recordings; this.tokens = { webcam: response.cameraToken, screen: response.screenToken }; console.log('Token requested: ', this.tokens); } }