Wire up hangup/answer buttons.
This commit is contained in:
parent
37c9c8fbb4
commit
14a4da54f8
2 changed files with 58 additions and 10 deletions
|
@ -30,6 +30,38 @@ module.exports = React.createClass({
|
||||||
var topic = this.props.room.currentState.getStateEvents('m.room.topic', '');
|
var topic = this.props.room.currentState.getStateEvents('m.room.topic', '');
|
||||||
topic = topic ? <div className="mx_RoomHeader_topic">{ topic.getContent().topic }</div> : null;
|
topic = topic ? <div className="mx_RoomHeader_topic">{ topic.getContent().topic }</div> : null;
|
||||||
|
|
||||||
|
var callButtons;
|
||||||
|
if (this.state) {
|
||||||
|
switch (this.state.callState) {
|
||||||
|
case "INBOUND":
|
||||||
|
callButtons = (
|
||||||
|
<div>
|
||||||
|
<div className="mx_RoomHeader_button" onClick={this.onAnswerClick}>
|
||||||
|
YUP
|
||||||
|
</div>
|
||||||
|
<div className="mx_RoomHeader_button" onClick={this.onHangupClick}>
|
||||||
|
NOPE
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
case "OUTBOUND":
|
||||||
|
callButtons = (
|
||||||
|
<div className="mx_RoomHeader_button" onClick={this.onHangupClick}>
|
||||||
|
BYEBYE
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
case "IN_CALL":
|
||||||
|
callButtons = (
|
||||||
|
<div className="mx_RoomHeader_button" onClick={this.onHangupClick}>
|
||||||
|
BYEBYE
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="mx_RoomHeader">
|
<div className="mx_RoomHeader">
|
||||||
<div className="mx_RoomHeader_wrapper">
|
<div className="mx_RoomHeader_wrapper">
|
||||||
|
@ -49,13 +81,7 @@ module.exports = React.createClass({
|
||||||
<div className="mx_RoomHeader_button">
|
<div className="mx_RoomHeader_button">
|
||||||
<img src="img/search.png" width="32" height="32"/>
|
<img src="img/search.png" width="32" height="32"/>
|
||||||
</div>
|
</div>
|
||||||
{
|
{callButtons}
|
||||||
this.state && this.state.inCall ?
|
|
||||||
<div className="mx_RoomHeader_button" onClick={this.onHangupClick}>
|
|
||||||
<img src="img/video.png" width="64" height="32"/>
|
|
||||||
</div>
|
|
||||||
: null
|
|
||||||
}
|
|
||||||
<div className="mx_RoomHeader_button" onClick={this.onVideoClick}>
|
<div className="mx_RoomHeader_button" onClick={this.onVideoClick}>
|
||||||
<img src="img/video.png" width="32" height="32"/>
|
<img src="img/video.png" width="32" height="32"/>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -18,7 +18,7 @@ limitations under the License.
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* State vars:
|
* State vars:
|
||||||
* this.state.inCall = boolean
|
* this.state.callState = OUTBOUND|INBOUND|IN_CALL|NO_CALL
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var dis = require("../../dispatcher");
|
var dis = require("../../dispatcher");
|
||||||
|
@ -28,7 +28,7 @@ module.exports = {
|
||||||
componentDidMount: function() {
|
componentDidMount: function() {
|
||||||
this.dispatcherRef = dis.register(this.onAction);
|
this.dispatcherRef = dis.register(this.onAction);
|
||||||
this.setState({
|
this.setState({
|
||||||
inCall: false
|
callState: "NO_CALL"
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -45,8 +45,24 @@ module.exports = {
|
||||||
if (payload.action !== 'call_state') {
|
if (payload.action !== 'call_state') {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
var call = CallHandler.getCall(payload.room_id);
|
||||||
|
var callState = 'NO_CALL';
|
||||||
|
if (call && call.state !== 'ended') {
|
||||||
|
if (call.state === 'connected') {
|
||||||
|
callState = "IN_CALL";
|
||||||
|
}
|
||||||
|
else if (call.direction === 'outbound') {
|
||||||
|
callState = "OUTBOUND";
|
||||||
|
}
|
||||||
|
else if (call.direction === 'inbound') {
|
||||||
|
callState = "INBOUND";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
console.error("Cannot determine call state.");
|
||||||
|
}
|
||||||
|
}
|
||||||
this.setState({
|
this.setState({
|
||||||
inCall: (CallHandler.getCall(payload.room_id) !== null)
|
callState: callState
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -69,6 +85,12 @@ module.exports = {
|
||||||
action: 'hangup',
|
action: 'hangup',
|
||||||
room_id: this.props.room.roomId
|
room_id: this.props.room.roomId
|
||||||
});
|
});
|
||||||
|
},
|
||||||
|
onAnswerClick: function() {
|
||||||
|
dis.dispatch({
|
||||||
|
action: 'answer',
|
||||||
|
room_id: this.props.room.roomId
|
||||||
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue