- *
INFO:
- * You also can use the default components adsada dasda d asd
+ * constructor(private restService: RestService) {}
+ *
+ * async onJoinButtonClicked() {
+ * this.tokens = {
+ * webcam: await this.restService.getToken(this.sessionId, this.OPENVIDU_URL, this.OPENVIDU_SECRET),
+ * screen: await this.restService.getToken(this.sessionId, this.OPENVIDU_URL, this.OPENVIDU_SECRET)
+ * };
+ * }
+ * }
+ * ```
+ *
+ *

*
*
*/
diff --git a/openvidu-components-angular/projects/openvidu-angular/src/lib/pipes/participant.pipe.ts b/openvidu-components-angular/projects/openvidu-angular/src/lib/pipes/participant.pipe.ts
index a6f4817a..12ede04a 100644
--- a/openvidu-components-angular/projects/openvidu-angular/src/lib/pipes/participant.pipe.ts
+++ b/openvidu-components-angular/projects/openvidu-angular/src/lib/pipes/participant.pipe.ts
@@ -1,9 +1,6 @@
import { Pipe, PipeTransform } from '@angular/core';
import { StreamModel, ParticipantAbstractModel } from '../models/participant.model';
-/**
- * @internal
- */
@Pipe({ name: 'streams' })
export class ParticipantStreamsPipe implements PipeTransform {
constructor() {}
diff --git a/openvidu-components-angular/projects/openvidu-angular/src/lib/services/openvidu/openvidu.service.ts b/openvidu-components-angular/projects/openvidu-angular/src/lib/services/openvidu/openvidu.service.ts
index 4f9ca494..3e68f17f 100644
--- a/openvidu-components-angular/projects/openvidu-angular/src/lib/services/openvidu/openvidu.service.ts
+++ b/openvidu-components-angular/projects/openvidu-angular/src/lib/services/openvidu/openvidu.service.ts
@@ -212,7 +212,7 @@ export class OpenViduService {
private unpublish(publisher: Publisher): void {
if (!!publisher) {
if (publisher === this.participantService.getMyCameraPublisher()) {
- this.publishAudioAux(this.participantService.getMyScreenPublisher(), this.participantService.hasCameraAudioActive());
+ this.publishAudioAux(this.participantService.getMyScreenPublisher(), this.participantService.isMyAudioActive());
this.webcamSession.unpublish(publisher);
} else if (publisher === this.participantService.getMyScreenPublisher()) {
this.screenSession.unpublish(publisher);
@@ -221,8 +221,7 @@ export class OpenViduService {
}
async publishVideo(publish: boolean): Promise
{
- const publishAudio = this.participantService.hasCameraAudioActive();
- // const publishVideo = !this.participantService.hasCameraVideoActive();
+ const publishAudio = this.participantService.isMyAudioActive();
// Disabling webcam
if (this.participantService.haveICameraAndScreenActive()) {
@@ -279,8 +278,8 @@ export class OpenViduService {
} else if (this.participantService.isOnlyMyCameraActive()) {
// I only have the camera published
const hasAudioDevicesAvailable = this.deviceService.hasAudioDeviceAvailable();
- const willWebcamBePresent = this.participantService.isMyCameraActive() && this.participantService.hasCameraVideoActive();
- const hasAudio = willWebcamBePresent ? false : hasAudioDevicesAvailable && this.participantService.hasCameraAudioActive();
+ const willWebcamBePresent = this.participantService.isMyCameraActive() && this.participantService.isMyVideoActive();
+ const hasAudio = willWebcamBePresent ? false : hasAudioDevicesAvailable && this.participantService.isMyAudioActive();
console.warn('will be audio active', hasAudio);
const properties: PublisherProperties = {
@@ -309,7 +308,7 @@ export class OpenViduService {
await this.connectSession(this.getScreenSession(), this.tokenService.getScreenToken());
}
await this.publish(this.participantService.getMyScreenPublisher());
- if (!this.participantService.hasCameraVideoActive()) {
+ if (!this.participantService.isMyVideoActive()) {
// Disabling webcam
this.participantService.disableWebcamStream();
this.unpublish(this.participantService.getMyCameraPublisher());
@@ -367,8 +366,8 @@ export class OpenViduService {
const properties: PublisherProperties = {
videoSource: this.videoSource,
audioSource: this.audioSource,
- publishVideo: this.participantService.hasCameraVideoActive(),
- publishAudio: this.participantService.hasCameraAudioActive(),
+ publishVideo: this.participantService.isMyVideoActive(),
+ publishAudio: this.participantService.isMyAudioActive(),
mirror
};
@@ -392,7 +391,7 @@ export class OpenViduService {
sendSignal(type: Signal, connections?: Connection[], data?: any): void {
const signalOptions: SignalOptions = {
data: JSON.stringify(data),
- type: type,
+ type,
to: connections && connections.length > 0 ? connections : undefined
};
this.webcamSession.signal(signalOptions);
diff --git a/openvidu-components-angular/projects/openvidu-angular/src/lib/services/participant/participant.service.ts b/openvidu-components-angular/projects/openvidu-angular/src/lib/services/participant/participant.service.ts
index 64614bb2..76479430 100644
--- a/openvidu-components-angular/projects/openvidu-angular/src/lib/services/participant/participant.service.ts
+++ b/openvidu-components-angular/projects/openvidu-angular/src/lib/services/participant/participant.service.ts
@@ -11,17 +11,9 @@ import { LoggerService } from '../logger/logger.service';
providedIn: 'root'
})
export class ParticipantService {
- /**
- * @internal
- * Local participants observables
- */
localParticipantObs: Observable;
protected _localParticipant = >new BehaviorSubject(null);
- /**
- * @internal
- * Remote participants observables
- */
remoteParticipantsObs: Observable;
protected _remoteParticipants = >new BehaviorSubject([]);
@@ -189,6 +181,14 @@ export class ParticipantService {
return this.localParticipant.isCameraActive();
}
+ isMyVideoActive(): boolean {
+ return this.localParticipant.isCameraVideoActive();
+ }
+
+ isMyAudioActive(): boolean {
+ return this.localParticipant?.isCameraAudioActive() || this.localParticipant?.isScreenAudioActive();
+ }
+
/**
* @internal
*/
@@ -217,19 +217,6 @@ export class ParticipantService {
return this.isMyCameraActive() && this.isMyScreenActive();
}
- /**
- * @internal
- */
- hasCameraVideoActive(): boolean {
- return this.localParticipant.isCameraVideoActive();
- }
-
- /**
- * @internal
- */
- hasCameraAudioActive(): boolean {
- return this.localParticipant?.isCameraAudioActive();
- }
/**
* @internal
@@ -383,6 +370,9 @@ export class ParticipantService {
}
}
+ /**
+ * @internal
+ */
setRemoteMutedForcibly(id: string, value: boolean) {
const participant = this.getRemoteParticipantById(id);
if (participant) {
diff --git a/openvidu-components-angular/projects/openvidu-angular/src/public-api.ts b/openvidu-components-angular/projects/openvidu-angular/src/public-api.ts
index cf54962e..17f2ef45 100644
--- a/openvidu-components-angular/projects/openvidu-angular/src/public-api.ts
+++ b/openvidu-components-angular/projects/openvidu-angular/src/public-api.ts
@@ -42,6 +42,7 @@ export * from './lib/models/logger.model';
export * from './lib/models/video-type.model';
export * from './lib/models/notification-options.model';
export * from './lib/models/token.model';
+export * from './lib/models/signal.model';
// Pipes
export * from './lib/pipes/participant.pipe';
diff --git a/openvidu-components-angular/src/assets/doc/chatPanelDirective-example.png b/openvidu-components-angular/src/assets/doc/chatPanelDirective-example.png
new file mode 100644
index 00000000..74c589ce
Binary files /dev/null and b/openvidu-components-angular/src/assets/doc/chatPanelDirective-example.png differ
diff --git a/openvidu-components-angular/src/assets/doc/layoutDirective-example.png b/openvidu-components-angular/src/assets/doc/layoutDirective-example.png
new file mode 100644
index 00000000..147f1ab0
Binary files /dev/null and b/openvidu-components-angular/src/assets/doc/layoutDirective-example.png differ
diff --git a/openvidu-components-angular/src/assets/doc/participantsPanelDirective-example.png b/openvidu-components-angular/src/assets/doc/participantsPanelDirective-example.png
new file mode 100644
index 00000000..9f1af8a3
Binary files /dev/null and b/openvidu-components-angular/src/assets/doc/participantsPanelDirective-example.png differ
diff --git a/openvidu-components-angular/src/assets/doc/streamDirective-example.png b/openvidu-components-angular/src/assets/doc/streamDirective-example.png
new file mode 100644
index 00000000..9bb2a21a
Binary files /dev/null and b/openvidu-components-angular/src/assets/doc/streamDirective-example.png differ
diff --git a/openvidu-components-angular/src/assets/doc/toolbarAdditionalButtonsDirective-example.png b/openvidu-components-angular/src/assets/doc/toolbarAdditionalButtonsDirective-example.png
new file mode 100644
index 00000000..07b0abed
Binary files /dev/null and b/openvidu-components-angular/src/assets/doc/toolbarAdditionalButtonsDirective-example.png differ
diff --git a/openvidu-components-angular/src/assets/doc/toolbardirective-example.png b/openvidu-components-angular/src/assets/doc/toolbardirective-example.png
new file mode 100644
index 00000000..c6c60ce3
Binary files /dev/null and b/openvidu-components-angular/src/assets/doc/toolbardirective-example.png differ
diff --git a/openvidu-components-angular/src/doc/.compodocrc.json b/openvidu-components-angular/src/doc/.compodocrc.json
index cb307775..37b631fa 100644
--- a/openvidu-components-angular/src/doc/.compodocrc.json
+++ b/openvidu-components-angular/src/doc/.compodocrc.json
@@ -16,5 +16,5 @@
"theme": "gitbook",
"customFavicon": "src/favicon.ico",
"extTheme": "src/doc/",
- "assetsFolder": "src/assets/images/app.gif"
+ "assetsFolder": "src/assets/doc"
}
diff --git a/openvidu-components-angular/src/doc/tsconfig.doc.json b/openvidu-components-angular/src/doc/tsconfig.doc.json
index 7dbbc46a..a95801dc 100644
--- a/openvidu-components-angular/src/doc/tsconfig.doc.json
+++ b/openvidu-components-angular/src/doc/tsconfig.doc.json
@@ -4,6 +4,7 @@
"../../projects/openvidu-angular/src/lib/directives/**/*.ts",
"../../projects/openvidu-angular/src/lib/services/**/*.ts",
"../../projects/openvidu-angular/src/lib/models/**/*.ts",
+ "../../projects/openvidu-angular/src/lib/pipes/**/*.ts",
"../app/openvidu-webcomponent/**/*.ts"
],
"exclude": [