mirror of https://github.com/OpenVidu/openvidu.git
openvidu-browser: force filter operations for moderators
parent
86f50bdeaf
commit
b9f51ab40a
|
@ -137,7 +137,7 @@ export class Filter {
|
||||||
console.info('Adding filter event listener to event ' + eventType + ' to stream ' + this.stream.streamId);
|
console.info('Adding filter event listener to event ' + eventType + ' to stream ' + this.stream.streamId);
|
||||||
this.stream.session.openvidu.sendRequest(
|
this.stream.session.openvidu.sendRequest(
|
||||||
'addFilterEventListener',
|
'addFilterEventListener',
|
||||||
{ streamId: this.stream.streamId, type: eventType },
|
{ streamId: this.stream.streamId, eventType },
|
||||||
(error, response) => {
|
(error, response) => {
|
||||||
if (error) {
|
if (error) {
|
||||||
console.error('Error adding filter event listener to event ' + eventType + 'for Stream ' + this.stream.streamId, error);
|
console.error('Error adding filter event listener to event ' + eventType + 'for Stream ' + this.stream.streamId, error);
|
||||||
|
@ -169,7 +169,7 @@ export class Filter {
|
||||||
console.info('Removing filter event listener to event ' + eventType + ' to stream ' + this.stream.streamId);
|
console.info('Removing filter event listener to event ' + eventType + ' to stream ' + this.stream.streamId);
|
||||||
this.stream.session.openvidu.sendRequest(
|
this.stream.session.openvidu.sendRequest(
|
||||||
'removeFilterEventListener',
|
'removeFilterEventListener',
|
||||||
{ streamId: this.stream.streamId, type: eventType },
|
{ streamId: this.stream.streamId, eventType },
|
||||||
(error, response) => {
|
(error, response) => {
|
||||||
if (error) {
|
if (error) {
|
||||||
console.error('Error removing filter event listener to event ' + eventType + 'for Stream ' + this.stream.streamId, error);
|
console.error('Error removing filter event listener to event ' + eventType + 'for Stream ' + this.stream.streamId, error);
|
||||||
|
|
|
@ -771,54 +771,62 @@ export class Session implements EventDispatcher {
|
||||||
* @hidden
|
* @hidden
|
||||||
*/
|
*/
|
||||||
onStreamPropertyChanged(msg): void {
|
onStreamPropertyChanged(msg): void {
|
||||||
this.getRemoteConnection(msg.connectionId, 'Remote connection ' + msg.connectionId + " unknown when 'onStreamPropertyChanged'. " +
|
|
||||||
'Existing remote connections: ' + JSON.stringify(Object.keys(this.remoteConnections)))
|
|
||||||
|
|
||||||
.then(connection => {
|
const callback = (connection: Connection) => {
|
||||||
if (!!connection.stream && connection.stream.streamId === msg.streamId) {
|
if (!!connection.stream && connection.stream.streamId === msg.streamId) {
|
||||||
const stream = connection.stream;
|
const stream = connection.stream;
|
||||||
let oldValue;
|
let oldValue;
|
||||||
switch (msg.property) {
|
switch (msg.property) {
|
||||||
case 'audioActive':
|
case 'audioActive':
|
||||||
oldValue = stream.audioActive;
|
oldValue = stream.audioActive;
|
||||||
msg.newValue = msg.newValue === 'true';
|
msg.newValue = msg.newValue === 'true';
|
||||||
stream.audioActive = msg.newValue;
|
stream.audioActive = msg.newValue;
|
||||||
break;
|
break;
|
||||||
case 'videoActive':
|
case 'videoActive':
|
||||||
oldValue = stream.videoActive;
|
oldValue = stream.videoActive;
|
||||||
msg.newValue = msg.newValue === 'true';
|
msg.newValue = msg.newValue === 'true';
|
||||||
stream.videoActive = msg.newValue;
|
stream.videoActive = msg.newValue;
|
||||||
break;
|
break;
|
||||||
case 'videoDimensions':
|
case 'videoDimensions':
|
||||||
oldValue = stream.videoDimensions;
|
oldValue = stream.videoDimensions;
|
||||||
msg.newValue = JSON.parse(JSON.parse(msg.newValue));
|
msg.newValue = JSON.parse(JSON.parse(msg.newValue));
|
||||||
stream.videoDimensions = msg.newValue;
|
stream.videoDimensions = msg.newValue;
|
||||||
break;
|
break;
|
||||||
case 'filter':
|
case 'filter':
|
||||||
oldValue = stream.filter;
|
oldValue = stream.filter;
|
||||||
msg.newValue = (Object.keys(msg.newValue).length > 0) ? msg.newValue : undefined;
|
msg.newValue = (Object.keys(msg.newValue).length > 0) ? msg.newValue : undefined;
|
||||||
if (msg.newValue !== undefined) {
|
if (msg.newValue !== undefined) {
|
||||||
stream.filter = new Filter(msg.newValue.type, msg.newValue.options);
|
stream.filter = new Filter(msg.newValue.type, msg.newValue.options);
|
||||||
stream.filter.stream = stream;
|
stream.filter.stream = stream;
|
||||||
if (msg.newValue.lastExecMethod) {
|
if (msg.newValue.lastExecMethod) {
|
||||||
stream.filter.lastExecMethod = msg.newValue.lastExecMethod;
|
stream.filter.lastExecMethod = msg.newValue.lastExecMethod;
|
||||||
}
|
|
||||||
} else {
|
|
||||||
delete stream.filter;
|
|
||||||
}
|
}
|
||||||
msg.newValue = stream.filter;
|
} else {
|
||||||
break;
|
delete stream.filter;
|
||||||
}
|
}
|
||||||
|
msg.newValue = stream.filter;
|
||||||
this.ee.emitEvent('streamPropertyChanged', [new StreamPropertyChangedEvent(this, stream, msg.property, msg.newValue, oldValue, msg.reason)]);
|
break;
|
||||||
stream.streamManager.emitEvent('streamPropertyChanged', [new StreamPropertyChangedEvent(stream.streamManager, stream, msg.property, msg.newValue, oldValue, msg.reason)]);
|
|
||||||
} else {
|
|
||||||
console.error("No stream with streamId '" + msg.streamId + "' found for connection '" + msg.connectionId + "' on 'streamPropertyChanged' event");
|
|
||||||
}
|
}
|
||||||
})
|
this.ee.emitEvent('streamPropertyChanged', [new StreamPropertyChangedEvent(this, stream, msg.property, msg.newValue, oldValue, msg.reason)]);
|
||||||
.catch(openViduError => {
|
stream.streamManager.emitEvent('streamPropertyChanged', [new StreamPropertyChangedEvent(stream.streamManager, stream, msg.property, msg.newValue, oldValue, msg.reason)]);
|
||||||
console.error(openViduError);
|
} else {
|
||||||
});
|
console.error("No stream with streamId '" + msg.streamId + "' found for connection '" + msg.connectionId + "' on 'streamPropertyChanged' event");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
if (msg.connectionId === this.connection.connectionId) {
|
||||||
|
// Your stream has been forcedly changed (filter feature)
|
||||||
|
callback(this.connection);
|
||||||
|
} else {
|
||||||
|
this.getRemoteConnection(msg.connectionId, 'Remote connection ' + msg.connectionId + " unknown when 'onStreamPropertyChanged'. " +
|
||||||
|
'Existing remote connections: ' + JSON.stringify(Object.keys(this.remoteConnections)))
|
||||||
|
.then(connection => {
|
||||||
|
callback(connection);
|
||||||
|
})
|
||||||
|
.catch(openViduError => {
|
||||||
|
console.error(openViduError);
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue