diff --git a/res/css/views/dialogs/_MessageEditHistoryDialog.scss b/res/css/views/dialogs/_MessageEditHistoryDialog.scss index b80742bd24..951b863e6a 100644 --- a/res/css/views/dialogs/_MessageEditHistoryDialog.scss +++ b/res/css/views/dialogs/_MessageEditHistoryDialog.scss @@ -28,6 +28,11 @@ limitations under the License. flex: 1 1 auto; } +.mx_MessageEditHistoryDialog_error { + color: $warning-color; + text-align: center; +} + .mx_MessageEditHistoryDialog_edits { list-style-type: none; font-size: 14px; diff --git a/src/components/views/dialogs/MessageEditHistoryDialog.js b/src/components/views/dialogs/MessageEditHistoryDialog.js index 9d533eab56..bba000e013 100644 --- a/src/components/views/dialogs/MessageEditHistoryDialog.js +++ b/src/components/views/dialogs/MessageEditHistoryDialog.js @@ -30,6 +30,7 @@ export default class MessageEditHistoryDialog extends React.PureComponent { constructor(props) { super(props); this.state = { + error: null, events: [], nextBatch: null, isLoading: true, @@ -45,10 +46,17 @@ export default class MessageEditHistoryDialog extends React.PureComponent { const opts = {from: this.state.nextBatch}; const roomId = this.props.mxEvent.getRoomId(); const eventId = this.props.mxEvent.getId(); - const result = await MatrixClientPeg.get().relations( - roomId, eventId, "m.replace", "m.room.message", opts); + let result; let resolve; - const promise = new Promise(r => resolve = r); + let reject; + const promise = new Promise((_resolve, _reject) => {resolve = _resolve; reject = _reject;}); + try { + result = await MatrixClientPeg.get().relations( + roomId, eventId, "m.replace", "m.room.message", opts); + } catch (error) { + this.setState({error}, () => reject(error)); + return promise; + } this.setState({ events: this.state.events.concat(result.events), nextBatch: result.nextBatch, @@ -82,7 +90,23 @@ export default class MessageEditHistoryDialog extends React.PureComponent { render() { let content; if (this.state.error) { - content = this.state.error; + const {error} = this.state; + if (error.errcode === "M_UNRECOGNIZED") { + content = (
+ {_t("Your homeserver doesn't seem to support this feature.")} +
); + } else if (error.errcode) { + // some kind of error from the homeserver + content = (+ {_t("Something went wrong!")} +
); + } else { + content = (
+ {_t("Could not reach your homeserver to fetch the edit history.")}
+
+ {_t("Verify your internet connection or try again later.")}
+