diff --git a/openvidu-testapp/src/app/components/openvidu-instance/openvidu-instance.component.html b/openvidu-testapp/src/app/components/openvidu-instance/openvidu-instance.component.html index 9652e74c..a4b86fc9 100644 --- a/openvidu-testapp/src/app/components/openvidu-instance/openvidu-instance.component.html +++ b/openvidu-testapp/src/app/components/openvidu-instance/openvidu-instance.component.html @@ -16,8 +16,8 @@
- Subscribe - Publish + Subscribe + Publish
@@ -26,30 +26,29 @@

Send

- Audio - Video + Audio + Video

Enter active

- Audio - Video + Audio + Video
- +
- Video + Video
- Screen + Screen
-
diff --git a/openvidu-testapp/src/app/components/openvidu-instance/openvidu-instance.component.ts b/openvidu-testapp/src/app/components/openvidu-instance/openvidu-instance.component.ts index 0fcc0214..b7a37a89 100644 --- a/openvidu-testapp/src/app/components/openvidu-instance/openvidu-instance.component.ts +++ b/openvidu-testapp/src/app/components/openvidu-instance/openvidu-instance.component.ts @@ -16,25 +16,44 @@ export class OpenviduInstanceComponent implements OnInit, OnDestroy { @Input() openviduSecret: string; + // Session join data + clientData: string; + sessionName: string; + + // Session options subscribeTo = true; publishTo = true; sendAudio = true; sendVideo = true; activeAudio = true; activeVideo = true; - optionVideo = 'video'; sendVideoRadio = true; subscribeToRemote = false; + optionsVideo = 'video'; - // Join form - clientData: string; - sessionName: string; + // Form 'check' and 'disable' attributes + checkSubscribeTo = true; + checkPublishTo = true; + checkSendAudio = true; + checkSendVideo = true; + checkActiveAudio = true; + checkActiveVideo = true; + checkRadioVideo = true; + checkRadioScreen = false; + disableSubscribeTo = false; + disablePublishTo = false; + disableSendAudio = false; + disableSendVideo = false; + disableActiveAudio = false; + disableActiveVideo = false; + disableRadioButtons = false; // OpenVidu objects OV: OpenVidu; session: Session; publisher: Publisher; + // Session audio and video status audioMuted = false; videoMuted = false; audioIcon = 'mic'; @@ -108,8 +127,10 @@ export class OpenviduInstanceComponent implements OnInit, OnDestroy { this.updateVideoIcon(); this.publisher = OV.initPublisher('local-vid-' + this.session.connection.connectionId, { - audio: this.activeAudio, - video: this.activeVideo, + audio: this.sendAudio, + video: this.sendVideo, + activeAudio: this.activeAudio, + activeVideo: this.activeVideo, quality: 'MEDIUM' }); @@ -173,10 +194,82 @@ export class OpenviduInstanceComponent implements OnInit, OnDestroy { $('#remote-vid-' + this.session.connection.connectionId).find('#data-' + connection.connectionId).remove(); } - private toggleRadio(): void { - if (this.publishTo && this.sendVideo) { - this.optionVideo = 'video'; + toggleSubscribeTo(): void { + this.subscribeTo = !this.subscribeTo; + } + + togglePublishTo(): void { + this.publishTo = !this.publishTo; + + this.sendAudio = this.publishTo; + this.sendVideo = this.publishTo; + this.activeAudio = this.publishTo; + this.activeVideo = this.publishTo; + + this.checkPublishTo = this.publishTo; + this.checkSendAudio = this.publishTo; + this.checkSendVideo = this.publishTo; + this.checkActiveAudio = this.publishTo; + this.checkActiveVideo = this.publishTo; + + if (this.publishTo) { + this.checkRadioVideo = true; + this.optionsVideo = 'video'; + } else { + this.checkRadioVideo = false; + this.optionsVideo = ''; + } + + this.disableSendAudio = !this.publishTo; + this.disableSendVideo = !this.publishTo; + this.disableActiveAudio = !this.publishTo; + this.disableActiveVideo = !this.publishTo; + this.disableRadioButtons = !this.publishTo; + + this.subscribeToRemote = false; + } + + toggleSendAudio(): void { + this.sendAudio = !this.sendAudio; + + this.activeAudio = this.sendAudio; + this.checkActiveAudio = this.sendAudio; + this.disableActiveAudio = !this.sendAudio; + + if (!this.sendAudio && !this.sendVideo && this.publishTo) { + this.togglePublishTo(); } } + toggleSendVideo(): void { + this.sendVideo = !this.sendVideo; + + this.activeVideo = this.sendVideo; + + this.checkActiveVideo = this.sendVideo; + this.checkRadioScreen = false; + if (this.sendVideo) { + this.checkRadioVideo = true; + this.optionsVideo = 'video'; + } else { + this.checkRadioVideo = false; + this.optionsVideo = ''; + } + + this.disableActiveVideo = !this.sendVideo; + this.disableRadioButtons = !this.sendVideo; + + if (!this.sendAudio && !this.sendVideo && this.publishTo) { + this.togglePublishTo(); + } + } + + toggleActiveAudio(): void { + this.activeAudio = !this.activeAudio; + } + + toggleActiveVideo(): void { + this.activeVideo = !this.activeVideo; + } + }