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',
|
displayName: 'CallView',
|
||||||
|
|
||||||
propTypes: {
|
propTypes: {
|
||||||
// js-sdk room object
|
// js-sdk room object. If set, we will only show calls for the given
|
||||||
room: React.PropTypes.object.isRequired,
|
// room; if not, we will show any active call.
|
||||||
|
room: React.PropTypes.object,
|
||||||
|
|
||||||
// A Conference Handler implementation
|
// A Conference Handler implementation
|
||||||
// Must have a function signature:
|
// Must have a function signature:
|
||||||
|
@ -44,7 +45,7 @@ module.exports = React.createClass({
|
||||||
|
|
||||||
componentDidMount: function() {
|
componentDidMount: function() {
|
||||||
this.dispatcherRef = dis.register(this.onAction);
|
this.dispatcherRef = dis.register(this.onAction);
|
||||||
this.showCall(this.props.room.roomId);
|
this.showCall();
|
||||||
},
|
},
|
||||||
|
|
||||||
componentWillUnmount: function() {
|
componentWillUnmount: function() {
|
||||||
|
@ -54,20 +55,27 @@ module.exports = React.createClass({
|
||||||
onAction: function(payload) {
|
onAction: function(payload) {
|
||||||
// don't filter out payloads for room IDs other than props.room because
|
// don't filter out payloads for room IDs other than props.room because
|
||||||
// we may be interested in the conf 1:1 room
|
// we may be interested in the conf 1:1 room
|
||||||
if (payload.action !== 'call_state' || !payload.room_id) {
|
if (payload.action !== 'call_state') {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.showCall(payload.room_id);
|
this.showCall();
|
||||||
},
|
},
|
||||||
|
|
||||||
showCall: function(roomId) {
|
showCall: function() {
|
||||||
var call = (
|
var call;
|
||||||
CallHandler.getCallForRoom(roomId) ||
|
|
||||||
(this.props.ConferenceHandler ?
|
if (this.props.room) {
|
||||||
this.props.ConferenceHandler.getConferenceCallForRoom(roomId) :
|
var roomId = this.props.room.roomId;
|
||||||
null
|
call = CallHandler.getCallForRoom(roomId) ||
|
||||||
)
|
(this.props.ConferenceHandler ?
|
||||||
);
|
this.props.ConferenceHandler.getConferenceCallForRoom(roomId) :
|
||||||
|
null
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
call = CallHandler.getAnyActiveCall();
|
||||||
|
}
|
||||||
|
|
||||||
if (call) {
|
if (call) {
|
||||||
call.setLocalVideoElement(this.getVideoView().getLocalVideoElement());
|
call.setLocalVideoElement(this.getVideoView().getLocalVideoElement());
|
||||||
call.setRemoteVideoElement(this.getVideoView().getRemoteVideoElement());
|
call.setRemoteVideoElement(this.getVideoView().getRemoteVideoElement());
|
||||||
|
|
Loading…
Reference in a new issue