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

160 lines
4.3 KiB
TypeScript
Raw Normal View History

2022-03-10 15:41:51 +01:00
import { Component, OnInit } from '@angular/core';
2023-02-22 13:08:22 +01:00
import { BroadcastingService, BroadcastingStatus, RecordingInfo, RecordingService, RecordingStatus, 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;
broadcastingError: any;
2023-02-22 13:08:22 +01:00
constructor(
private restService: RestService,
private recordingService: RecordingService,
private broadcastingService: BroadcastingService
) {}
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 onStartBroadcastingClicked(broadcastUrl: string) {
console.log('START STREAMING', broadcastUrl);
try {
this.broadcastingError = null;
const resp = await this.restService.startBroadcasting(broadcastUrl);
console.log('Broadcasting response ', resp);
} catch (error) {
console.error(error);
this.broadcastingError = error.error;
}
}
async onStopBroadcastingClicked() {
console.log('STOP STREAMING');
try {
this.broadcastingError = null;
const resp = await this.restService.stopBroadcasting();
console.log('Broadcasting response ', resp);
} catch (error) {
console.error(error);
this.broadcastingError = 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) {
console.log(await this.restService.getRecordings())
2022-06-22 12:42:02 +02:00
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;
}
}
async onForceRecordingUpdate() {
console.warn('FORCE RECORDING UPDATE');
this.recordingList = await this.restService.getRecordings();
}
private async requestForTokens() {
2023-02-22 13:08:22 +01:00
const { broadcastingEnabled, recordingEnabled, recordings, cameraToken, screenToken, isRecordingActive, isBroadcastingActive } =
await this.restService.getTokensFromBackend(this.sessionId);
this.recordingList = recordings;
this.tokens = {
2023-02-22 13:08:22 +01:00
webcam: cameraToken,
screen: screenToken
};
2023-02-22 13:08:22 +01:00
if (isRecordingActive) this.recordingService.updateStatus(RecordingStatus.STARTED);
if (isBroadcastingActive) this.broadcastingService.updateStatus(BroadcastingStatus.STARTED);
console.log('Token requested: ', this.tokens);
}
}