Skip to content
This repository has been archived by the owner on Sep 11, 2024. It is now read-only.

Commit

Permalink
Fix CallView in left panel
Browse files Browse the repository at this point in the history
Make CallView cope with not being passed a room. Fixes
element-hq/element-web#1049, introduced in
7a20fda, which made vector crash when you switched to another room with an
active call.
  • Loading branch information
richvdh committed Feb 29, 2016
1 parent db1e1c7 commit 30abf81
Showing 1 changed file with 21 additions and 13 deletions.
34 changes: 21 additions & 13 deletions src/components/views/voip/CallView.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,9 @@ module.exports = React.createClass({
displayName: 'CallView',

propTypes: {
// js-sdk room object
room: React.PropTypes.object.isRequired,
// js-sdk room object. If set, we will only show calls for the given
// room; if not, we will show any active call.
room: React.PropTypes.object,

// A Conference Handler implementation
// Must have a function signature:
Expand All @@ -44,7 +45,7 @@ module.exports = React.createClass({

componentDidMount: function() {
this.dispatcherRef = dis.register(this.onAction);
this.showCall(this.props.room.roomId);
this.showCall();
},

componentWillUnmount: function() {
Expand All @@ -54,20 +55,27 @@ module.exports = React.createClass({
onAction: function(payload) {
// don't filter out payloads for room IDs other than props.room because
// we may be interested in the conf 1:1 room
if (payload.action !== 'call_state' || !payload.room_id) {
if (payload.action !== 'call_state') {
return;
}
this.showCall(payload.room_id);
this.showCall();
},

showCall: function(roomId) {
var call = (
CallHandler.getCallForRoom(roomId) ||
(this.props.ConferenceHandler ?
this.props.ConferenceHandler.getConferenceCallForRoom(roomId) :
null
)
);
showCall: function() {
var call;

if (this.props.room) {
var roomId = this.props.room.roomId;
call = CallHandler.getCallForRoom(roomId) ||
(this.props.ConferenceHandler ?
this.props.ConferenceHandler.getConferenceCallForRoom(roomId) :
null
);
}
else {
call = CallHandler.getAnyActiveCall();
}

if (call) {
call.setLocalVideoElement(this.getVideoView().getLocalVideoElement());
call.setRemoteVideoElement(this.getVideoView().getRemoteVideoElement());
Expand Down

0 comments on commit 30abf81

Please sign in to comment.