Files
mattermost/webapp/stores/webrtc_store.jsx
enahum 781ff323db Webrtc client side (#4026)
* WebRTC Server side

* WebRTC client side

* Bug fixes and improvements

* Pushing UI improvements for webrtc (#3728)

* Pushing UI improvements for webrtc

* Updating webrtc css

* PLT-3943 WebRTC P1: bug fixes and improvements

* Video resolution set to std, reduce volume of ringtone and flip video horizontally

* Fix calling a user B while WebRTC RHS is still opened

* Leave RHS opened when call ends, Fix isBusy on popover and channel_header

* Fix pre-release feature, RHS & System Console

* PLT-3945 - Updating UI for webrtc (#3908)

* PLT-3943 Webrtc p1

* Add ongoing call indicator when RHS is opened

* UI updates to to webrtc notifcation (#3959)
2016-09-16 15:35:13 -03:00

110 lines
2.6 KiB
JavaScript

// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
import AppDispatcher from 'dispatcher/app_dispatcher.jsx';
import EventEmitter from 'events';
import {WebrtcActionTypes} from 'utils/constants.jsx';
class WebrtcStoreClass extends EventEmitter {
constructor() {
super();
this.video_call_with = null;
}
setVideoCallWith(userId) {
this.video_call_with = userId;
this.emitBusy(userId !== null);
}
getVideoCallWith() {
return this.video_call_with;
}
isBusy() {
return this.video_call_with !== null;
}
emitInit(userId, isCaller) {
this.emit(WebrtcActionTypes.INITIALIZE, userId, isCaller);
}
addInitListener(callback) {
this.on(WebrtcActionTypes.INITIALIZE, callback);
}
removeInitListener(callback) {
this.removeListener(WebrtcActionTypes.INITIALIZE, callback);
}
emitBusy(isBusy) {
this.emit(WebrtcActionTypes.BUSY, isBusy);
}
addBusyListener(callback) {
this.on(WebrtcActionTypes.BUSY, callback);
}
removeBusyListener(callback) {
this.removeListener(WebrtcActionTypes.BUSY, callback);
}
emitNotify(message) {
this.emit(WebrtcActionTypes.NOTIFY, message);
}
addNotifyListener(callback) {
this.on(WebrtcActionTypes.NOTIFY, callback);
}
removeNotifyListener(callback) {
this.removeListener(WebrtcActionTypes.NOTIFY, callback);
}
emitChanged(message) {
this.emit(WebrtcActionTypes.CHANGED, message);
}
addChangedListener(callback) {
this.on(WebrtcActionTypes.CHANGED, callback);
}
removeChangedListener(callback) {
this.removeListener(WebrtcActionTypes.CHANGED, callback);
}
emitRhsChanged(isOpen) {
this.emit(WebrtcActionTypes.RHS, isOpen);
}
addRhsChangedListener(callback) {
this.on(WebrtcActionTypes.RHS, callback);
}
removeRhsChangedListener(callback) {
this.removeListener(WebrtcActionTypes.RHS, callback);
}
}
var WebrtcStore = new WebrtcStoreClass();
WebrtcStore.setMaxListeners(0);
WebrtcStore.dispatchToken = AppDispatcher.register((payload) => {
var action = payload.action;
switch (action.type) {
case WebrtcActionTypes.INITIALIZE:
WebrtcStore.emitInit(action.user_id, action.is_calling);
break;
case WebrtcActionTypes.NOTIFY:
WebrtcStore.emitNotify(action.message);
break;
default:
if (action.message) {
WebrtcStore.emitChanged(action.message);
}
break;
}
});
export default WebrtcStore;