mirror of https://github.com/vector-im/riot-web
Merge pull request #1007 from matrix-org/dbkr/propagate_room_join_errors
Propagate room join errors to the UIpull/21833/head
commit
ec0ad93ad7
|
@ -185,7 +185,6 @@ module.exports = React.createClass({
|
||||||
roomLoading: RoomViewStore.isRoomLoading(),
|
roomLoading: RoomViewStore.isRoomLoading(),
|
||||||
roomLoadError: RoomViewStore.getRoomLoadError(),
|
roomLoadError: RoomViewStore.getRoomLoadError(),
|
||||||
joining: RoomViewStore.isJoining(),
|
joining: RoomViewStore.isJoining(),
|
||||||
joinError: RoomViewStore.getJoinError(),
|
|
||||||
}, () => {
|
}, () => {
|
||||||
this._onHaveRoom();
|
this._onHaveRoom();
|
||||||
this.onRoom(MatrixClientPeg.get().getRoom(this.state.roomId));
|
this.onRoom(MatrixClientPeg.get().getRoom(this.state.roomId));
|
||||||
|
|
|
@ -16,6 +16,9 @@ limitations under the License.
|
||||||
import dis from '../dispatcher';
|
import dis from '../dispatcher';
|
||||||
import {Store} from 'flux/utils';
|
import {Store} from 'flux/utils';
|
||||||
import MatrixClientPeg from '../MatrixClientPeg';
|
import MatrixClientPeg from '../MatrixClientPeg';
|
||||||
|
import sdk from '../index';
|
||||||
|
import Modal from '../Modal';
|
||||||
|
import { _t } from '../languageHandler';
|
||||||
|
|
||||||
const INITIAL_STATE = {
|
const INITIAL_STATE = {
|
||||||
// Whether we're joining the currently viewed room
|
// Whether we're joining the currently viewed room
|
||||||
|
@ -76,6 +79,12 @@ class RoomViewStore extends Store {
|
||||||
case 'join_room':
|
case 'join_room':
|
||||||
this._joinRoom(payload);
|
this._joinRoom(payload);
|
||||||
break;
|
break;
|
||||||
|
case 'joined_room':
|
||||||
|
this._joinedRoom(payload);
|
||||||
|
break;
|
||||||
|
case 'join_room_error':
|
||||||
|
this._joinRoomError(payload);
|
||||||
|
break;
|
||||||
case 'on_logged_out':
|
case 'on_logged_out':
|
||||||
this.reset();
|
this.reset();
|
||||||
break;
|
break;
|
||||||
|
@ -128,16 +137,34 @@ class RoomViewStore extends Store {
|
||||||
this._setState({
|
this._setState({
|
||||||
joining: true,
|
joining: true,
|
||||||
});
|
});
|
||||||
MatrixClientPeg.get().joinRoom(this._state.roomId, payload.opts).then(
|
MatrixClientPeg.get().joinRoom(this._state.roomId, payload.opts).done(() => {
|
||||||
() => {
|
dis.dispatch({
|
||||||
this._setState({
|
action: 'joined_room',
|
||||||
joining: false,
|
|
||||||
});
|
});
|
||||||
}, (err) => {
|
}, (err) => {
|
||||||
this._setState({
|
dis.dispatch({
|
||||||
joining: false,
|
action: 'join_room_error',
|
||||||
joinError: err,
|
err: err,
|
||||||
});
|
});
|
||||||
|
const msg = err.message ? err.message : JSON.stringify(err);
|
||||||
|
const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
|
||||||
|
Modal.createDialog(ErrorDialog, {
|
||||||
|
title: _t("Failed to join room"),
|
||||||
|
description: msg,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
_joinedRoom(payload) {
|
||||||
|
this._setState({
|
||||||
|
joining: false,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
_joinRoomError(payload) {
|
||||||
|
this._setState({
|
||||||
|
joining: false,
|
||||||
|
joinError: payload.err,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue