Show UDDialog on m.call.invite failure

Requires https://github.com/matrix-org/matrix-js-sdk/pull/378

Also, refactored UDDialog creation into its own dispatch event, because there will be other parts of the code that will want to spawn one.
This commit is contained in:
Luke Barnard 2017-02-21 17:22:22 +00:00
parent 05d242cb5c
commit 878e31eba2
5 changed files with 34 additions and 23 deletions

View file

@ -100,8 +100,16 @@ function pause(audioId) {
function _setCallListeners(call) { function _setCallListeners(call) {
call.on("error", function(err) { call.on("error", function(err) {
console.error("Call error: %s", err); if (err.name === "UnknownDeviceError") {
console.error(err.stack); dis.dispatch({
action: 'unknown_device_error',
err: err,
room: MatrixClientPeg.get().getRoom(call.roomId),
});
} else {
console.error("Call error: %s", err);
console.error(err.stack);
}
call.hangup(); call.hangup();
_setCallState(undefined, call.roomId, "ended"); _setCallState(undefined, call.roomId, "ended");
}); });

View file

@ -21,8 +21,9 @@ var Modal = require('./Modal');
module.exports = { module.exports = {
resend: function(event) { resend: function(event) {
const room = MatrixClientPeg.get().getRoom(event.getRoomId());
MatrixClientPeg.get().resendEvent( MatrixClientPeg.get().resendEvent(
event, MatrixClientPeg.get().getRoom(event.getRoomId()) event, room
).done(function(res) { ).done(function(res) {
dis.dispatch({ dis.dispatch({
action: 'message_sent', action: 'message_sent',
@ -33,16 +34,11 @@ module.exports = {
// https://github.com/vector-im/riot-web/issues/3148 // https://github.com/vector-im/riot-web/issues/3148
console.log('Resend got send failure: ' + err.name + '('+err+')'); console.log('Resend got send failure: ' + err.name + '('+err+')');
if (err.name === "UnknownDeviceError") { if (err.name === "UnknownDeviceError") {
var UnknownDeviceDialog = sdk.getComponent("dialogs.UnknownDeviceDialog"); dis.dispatch({
Modal.createDialog(UnknownDeviceDialog, { action: 'unknown_device_error',
devices: err.devices, err: err,
room: MatrixClientPeg.get().getRoom(event.getRoomId()), room: room,
onFinished: (r) => { });
// XXX: temporary logging to try to diagnose
// https://github.com/vector-im/riot-web/issues/3148
console.log('UnknownDeviceDialog closed with '+r);
},
}, "mx_Dialog_unknownDevice");
} }
dis.dispatch({ dis.dispatch({

View file

@ -518,6 +518,18 @@ module.exports = React.createClass({
case 'set_theme': case 'set_theme':
this._onSetTheme(payload.value); this._onSetTheme(payload.value);
break; break;
case 'unknown_device_error':
var UnknownDeviceDialog = sdk.getComponent("dialogs.UnknownDeviceDialog");
Modal.createDialog(UnknownDeviceDialog, {
devices: payload.err.devices,
room: payload.room,
onFinished: (r) => {
// XXX: temporary logging to try to diagnose
// https://github.com/vector-im/riot-web/issues/3148
console.log('UnknownDeviceDialog closed with '+r);
},
}, "mx_Dialog_unknownDevice");
break;
case 'on_logged_in': case 'on_logged_in':
this._onLoggedIn(); this._onLoggedIn();
break; break;

View file

@ -85,7 +85,7 @@ UnknownDeviceList.propTypes = {
export default React.createClass({ export default React.createClass({
displayName: 'UnknownEventDialog', displayName: 'UnknownDeviceDialog',
propTypes: { propTypes: {
room: React.PropTypes.object.isRequired, room: React.PropTypes.object.isRequired,

View file

@ -34,16 +34,11 @@ export function onSendMessageFailed(err, room) {
// https://github.com/vector-im/riot-web/issues/3148 // https://github.com/vector-im/riot-web/issues/3148
console.log('MessageComposer got send failure: ' + err.name + '('+err+')'); console.log('MessageComposer got send failure: ' + err.name + '('+err+')');
if (err.name === "UnknownDeviceError") { if (err.name === "UnknownDeviceError") {
const UnknownDeviceDialog = sdk.getComponent("dialogs.UnknownDeviceDialog"); dis.dispatch({
Modal.createDialog(UnknownDeviceDialog, { action: 'unknown_device_error',
devices: err.devices, err: err,
room: room, room: room,
onFinished: (r) => { });
// XXX: temporary logging to try to diagnose
// https://github.com/vector-im/riot-web/issues/3148
console.log('UnknownDeviceDialog closed with '+r);
},
}, "mx_Dialog_unknownDevice");
} }
dis.dispatch({ dis.dispatch({
action: 'message_send_failed', action: 'message_send_failed',