From 7e30c0f47b6584c3e0c33a6c83e7b9373e2b80ff Mon Sep 17 00:00:00 2001 From: Kegan Dougal Date: Wed, 15 Jul 2015 14:57:52 +0100 Subject: [PATCH] Add CallHandler to handle call logic and make VideoViews/WaveformViews. --- .../base/views/molecules/voip/CallHandler.js | 36 ++++++++++++++ skins/base/views/organisms/RoomView.js | 4 +- src/ComponentBroker.js | 1 + src/controllers/molecules/voip/CallHandler.js | 48 +++++++++++++++++++ src/controllers/molecules/voip/VideoView.js | 15 ------ 5 files changed, 87 insertions(+), 17 deletions(-) create mode 100644 skins/base/views/molecules/voip/CallHandler.js create mode 100644 src/controllers/molecules/voip/CallHandler.js diff --git a/skins/base/views/molecules/voip/CallHandler.js b/skins/base/views/molecules/voip/CallHandler.js new file mode 100644 index 00000000..8fd8282f --- /dev/null +++ b/skins/base/views/molecules/voip/CallHandler.js @@ -0,0 +1,36 @@ +/* +Copyright 2015 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +'use strict'; + +var React = require('react'); + +var MatrixClientPeg = require("../../../../../src/MatrixClientPeg"); +var ComponentBroker = require('../../../../../src/ComponentBroker'); +var CallHandlerController = require( + "../../../../../src/controllers/molecules/voip/CallHandler" +); +var VideoView = ComponentBroker.get('molecules/voip/VideoView'); + +module.exports = React.createClass({ + displayName: 'CallHandler', + mixins: [CallHandlerController], + render: function(){ + return ( +
+ ); + } +}); \ No newline at end of file diff --git a/skins/base/views/organisms/RoomView.js b/skins/base/views/organisms/RoomView.js index fcafb945..5ff28092 100644 --- a/skins/base/views/organisms/RoomView.js +++ b/skins/base/views/organisms/RoomView.js @@ -26,7 +26,7 @@ var classNames = require("classnames"); var MessageTile = ComponentBroker.get('molecules/MessageTile'); var RoomHeader = ComponentBroker.get('molecules/RoomHeader'); var MessageComposer = ComponentBroker.get('molecules/MessageComposer'); -var VideoView = ComponentBroker.get("molecules/voip/VideoView"); +var CallHandler = ComponentBroker.get("molecules/voip/CallHandler"); var RoomViewController = require("../../../../src/controllers/organisms/RoomView"); @@ -69,7 +69,7 @@ module.exports = React.createClass({
- +
diff --git a/src/ComponentBroker.js b/src/ComponentBroker.js index 7004da15..41beeadf 100644 --- a/src/ComponentBroker.js +++ b/src/ComponentBroker.js @@ -96,6 +96,7 @@ require('../skins/base/views/molecules/RoomDropTarget'); require('../skins/base/views/molecules/DirectoryMenu'); require('../skins/base/views/atoms/voip/VideoFeed'); require('../skins/base/views/molecules/voip/VideoView'); +require('../skins/base/views/molecules/voip/CallHandler'); } diff --git a/src/controllers/molecules/voip/CallHandler.js b/src/controllers/molecules/voip/CallHandler.js new file mode 100644 index 00000000..f5e09338 --- /dev/null +++ b/src/controllers/molecules/voip/CallHandler.js @@ -0,0 +1,48 @@ +/* +Copyright 2015 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +'use strict'; + +var dis = require("../../../dispatcher"); + +module.exports = { + + componentDidMount: function() { + this.dispatcherRef = dis.register(this.onAction); + }, + + componentWillUnmount: function() { + dis.unregister(this.dispatcherRef); + }, + + onAction: function(payload) { + // if we were given a room_id to track, don't handle anything else. + if (payload.room_id && this.props.room && + this.props.room.roomId !== payload.room_id) { + return; + } + + switch (payload.action) { + case 'place_call': + console.log("Place %s call in %s", payload.type, payload.room_id); + break; + case 'incoming_call': + console.log("Incoming call: %s", payload.call); + break; + } + } +}; + diff --git a/src/controllers/molecules/voip/VideoView.js b/src/controllers/molecules/voip/VideoView.js index 83b2328a..b08f6ab1 100644 --- a/src/controllers/molecules/voip/VideoView.js +++ b/src/controllers/molecules/voip/VideoView.js @@ -19,20 +19,5 @@ limitations under the License. var dis = require("../../../dispatcher"); module.exports = { - - componentDidMount: function() { - this.dispatcherRef = dis.register(this.onAction); - }, - - onAction: function(payload) { - switch(payload.action) { - case 'place_call': - console.log("Place %s call in %s", payload.type, payload.room_id); - break; - case 'incoming_call': - console.log("Incoming call: %s", payload.call); - break; - } - } };