openvidu/openvidu-components-angular/src/app/openvidu-call/call.component.ts

147 lines
3.6 KiB
TypeScript
Raw Normal View History

2022-03-10 15:41:51 +01:00
import { Component, OnInit } from '@angular/core';
import { RecordingInfo, TokenModel } from 'openvidu-angular';
import { RestService } from '../services/rest.service';
2022-04-28 13:09:42 +02:00
@Component({
selector: 'app-call',
templateUrl: './call.component.html',
styleUrls: ['./call.component.scss']
})
export class CallComponent implements OnInit {
sessionId = 'daily-call';
2022-04-28 13:09:42 +02:00
tokens: TokenModel;
joinSessionClicked: boolean = false;
closeClicked: boolean = false;
isSessionAlive: boolean = false;
2022-06-22 12:42:02 +02:00
recordingList: RecordingInfo[] = [];
recordingError: any;
streamingError: any;
constructor(private restService: RestService) {}
2022-03-10 15:41:51 +01:00
async ngOnInit() {
await this.requestForTokens();
}
async onNodeCrashed() {
// Request the tokens again for reconnect to the session
await this.requestForTokens();
2022-04-28 13:09:42 +02:00
}
2022-04-28 13:09:42 +02:00
onJoinClicked() {
console.warn('VC JOIN BUTTON CLICKED');
}
2022-03-10 15:41:51 +01:00
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');
}
2022-03-10 15:41:51 +01:00
onToolbarLeaveButtonClicked() {
this.isSessionAlive = false;
console.log('VC LEAVE BUTTON CLICKED');
}
2022-03-10 15:41:51 +01:00
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');
}
2022-03-10 15:41:51 +01:00
onLeaveButtonClicked() {
this.isSessionAlive = false;
2022-03-10 15:41:51 +01:00
console.log('TOOLBAR LEAVE CLICKED');
}
2022-06-22 12:42:02 +02:00
async onStartStreamingClicked(rtmpUrl: string) {
console.log('START STREAMING', rtmpUrl);
try {
this.streamingError = null;
const resp = await this.restService.startStreaming(rtmpUrl);
console.log('Streaming response ', resp);
} catch (error) {
console.error(error);
this.streamingError = error.error;
}
}
async onStopStreamingClicked() {
console.log('STOP STREAMING');
try {
this.streamingError = null;
const resp = await this.restService.stopStreaming();
console.log('Streaming response ', resp);
} catch (error) {
console.error(error);
this.streamingError = error.message || error;
}
}
2022-06-22 12:42:02 +02:00
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);
}
}