Fix CallView in left panel
Make CallView cope with not being passed a room. Fixes
https://github.com/vector-im/vector-web/issues/1049, introduced in
7a20fda7
, which made vector crash when you switched to another room with an
active call.
This commit is contained in:
parent
db1e1c7df0
commit
30abf81ed4
1 changed files with 21 additions and 13 deletions
|
@ -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:
|
||||
|
@ -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() {
|
||||
|
@ -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) ||
|
||||
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());
|
||||
|
|
Loading…
Reference in a new issue