diff --git a/res/css/views/settings/tabs/_SettingsTab.scss b/res/css/views/settings/tabs/_SettingsTab.scss
index 88735f99b2..def28bfbd2 100644
--- a/res/css/views/settings/tabs/_SettingsTab.scss
+++ b/res/css/views/settings/tabs/_SettingsTab.scss
@@ -72,3 +72,7 @@ limitations under the License.
// give them more visual distinction between the sections.
margin-top: 30px;
}
+
+.mx_SettingsTab a {
+ color: $accent-color-alt;
+}
\ No newline at end of file
diff --git a/src/components/views/dialogs/RoomSettingsDialog.js b/src/components/views/dialogs/RoomSettingsDialog.js
index 22b7857264..05ed262078 100644
--- a/src/components/views/dialogs/RoomSettingsDialog.js
+++ b/src/components/views/dialogs/RoomSettingsDialog.js
@@ -52,7 +52,7 @@ export default class RoomSettingsDialog extends React.Component {
tabs.push(new Tab(
_td("Advanced"),
"mx_RoomSettingsDialog_warningIcon",
- ,
+ ,
));
return tabs;
diff --git a/src/components/views/settings/tabs/room/AdvancedRoomSettingsTab.js b/src/components/views/settings/tabs/room/AdvancedRoomSettingsTab.js
index 20c270fe29..101cd036e5 100644
--- a/src/components/views/settings/tabs/room/AdvancedRoomSettingsTab.js
+++ b/src/components/views/settings/tabs/room/AdvancedRoomSettingsTab.js
@@ -21,10 +21,12 @@ import MatrixClientPeg from "../../../../../MatrixClientPeg";
import sdk from "../../../../..";
import AccessibleButton from "../../../elements/AccessibleButton";
import Modal from "../../../../../Modal";
+import dis from "../../../../../dispatcher";
export default class AdvancedRoomSettingsTab extends React.Component {
static propTypes = {
roomId: PropTypes.string.isRequired,
+ closeSettingsFn: PropTypes.func.isRequired,
};
constructor() {
@@ -41,9 +43,21 @@ export default class AdvancedRoomSettingsTab extends React.Component {
const room = MatrixClientPeg.get().getRoom(this.props.roomId);
room.getRecommendedVersion().then((v) => {
const tombstone = room.currentState.getStateEvents("m.room.tombstone", "");
+
+ const additionalStateChanges = {};
+ const createEvent = room.currentState.getStateEvents("m.room.create", "");
+ const predecessor = createEvent ? createEvent.getContent().predecessor : null;
+ if (predecessor && predecessor.room_id) {
+ additionalStateChanges['oldRoomId'] = predecessor.room_id;
+ additionalStateChanges['oldEventId'] = predecessor.event_id;
+ additionalStateChanges['hasPreviousRoom'] = true;
+ }
+
+
this.setState({
upgraded: tombstone && tombstone.getContent().replacement_room,
upgradeRecommendation: v,
+ ...additionalStateChanges,
});
});
}
@@ -59,6 +73,18 @@ export default class AdvancedRoomSettingsTab extends React.Component {
Modal.createDialog(DevtoolsDialog, {roomId: this.props.roomId});
};
+ _onOldRoomClicked = (e) => {
+ e.preventDefault();
+ e.stopPropagation();
+
+ dis.dispatch({
+ action: 'view_room',
+ room_id: this.state.oldRoomId,
+ event_id: this.state.oldEventId,
+ });
+ this.props.closeSettingsFn();
+ };
+
render() {
const client = MatrixClientPeg.get();
const room = client.getRoom(this.props.roomId);
@@ -91,6 +117,18 @@ export default class AdvancedRoomSettingsTab extends React.Component {
);
}
+ let oldRoomLink;
+ if (this.state.hasPreviousRoom) {
+ let name = _t("this room");
+ const room = MatrixClientPeg.get().getRoom(this.props.roomId);
+ if (room && room.name) name = room.name;
+ oldRoomLink = (
+
+ {_t("View older messages in %(roomName)s.", {roomName: name})}
+
+ );
+ }
+
return (
{_t("Advanced")}
@@ -108,6 +146,7 @@ export default class AdvancedRoomSettingsTab extends React.Component {
{_t("Room version:")}
{room.getVersion()}
+ {oldRoomLink}
{roomUpgradeButton}
diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json
index f049911570..e4d1d3ea80 100644
--- a/src/i18n/strings/en_EN.json
+++ b/src/i18n/strings/en_EN.json
@@ -599,6 +599,8 @@
"Voice & Video": "Voice & Video",
"This room is not accessible by remote Matrix servers": "This room is not accessible by remote Matrix servers",
"Upgrade this room to the recommended room version": "Upgrade this room to the recommended room version",
+ "this room": "this room",
+ "View older messages in %(roomName)s": "View older messages in %(roomName)s",
"Room information": "Room information",
"Internal room ID:": "Internal room ID:",
"Room version": "Room version",