mirror of
https://github.com/element-hq/element-web
synced 2024-11-22 09:15:41 +03:00
Add CallHandler to handle call logic and make VideoViews/WaveformViews.
This commit is contained in:
parent
28cebab9a3
commit
7e30c0f47b
5 changed files with 87 additions and 17 deletions
36
skins/base/views/molecules/voip/CallHandler.js
Normal file
36
skins/base/views/molecules/voip/CallHandler.js
Normal file
|
@ -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 (
|
||||||
|
<div></div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
|
@ -26,7 +26,7 @@ var classNames = require("classnames");
|
||||||
var MessageTile = ComponentBroker.get('molecules/MessageTile');
|
var MessageTile = ComponentBroker.get('molecules/MessageTile');
|
||||||
var RoomHeader = ComponentBroker.get('molecules/RoomHeader');
|
var RoomHeader = ComponentBroker.get('molecules/RoomHeader');
|
||||||
var MessageComposer = ComponentBroker.get('molecules/MessageComposer');
|
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");
|
var RoomViewController = require("../../../../src/controllers/organisms/RoomView");
|
||||||
|
|
||||||
|
@ -69,7 +69,7 @@ module.exports = React.createClass({
|
||||||
<div className="mx_RoomView">
|
<div className="mx_RoomView">
|
||||||
<RoomHeader room={this.state.room} />
|
<RoomHeader room={this.state.room} />
|
||||||
<div className="mx_RoomView_auxPanel">
|
<div className="mx_RoomView_auxPanel">
|
||||||
<VideoView/>
|
<CallHandler room={this.state.room}/>
|
||||||
</div>
|
</div>
|
||||||
<div ref="messageWrapper" className="mx_RoomView_messagePanel" onScroll={this.onMessageListScroll}>
|
<div ref="messageWrapper" className="mx_RoomView_messagePanel" onScroll={this.onMessageListScroll}>
|
||||||
<div className="mx_RoomView_messageListWrapper">
|
<div className="mx_RoomView_messageListWrapper">
|
||||||
|
|
|
@ -96,6 +96,7 @@ require('../skins/base/views/molecules/RoomDropTarget');
|
||||||
require('../skins/base/views/molecules/DirectoryMenu');
|
require('../skins/base/views/molecules/DirectoryMenu');
|
||||||
require('../skins/base/views/atoms/voip/VideoFeed');
|
require('../skins/base/views/atoms/voip/VideoFeed');
|
||||||
require('../skins/base/views/molecules/voip/VideoView');
|
require('../skins/base/views/molecules/voip/VideoView');
|
||||||
|
require('../skins/base/views/molecules/voip/CallHandler');
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
48
src/controllers/molecules/voip/CallHandler.js
Normal file
48
src/controllers/molecules/voip/CallHandler.js
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
|
@ -19,20 +19,5 @@ limitations under the License.
|
||||||
var dis = require("../../../dispatcher");
|
var dis = require("../../../dispatcher");
|
||||||
|
|
||||||
module.exports = {
|
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue