diff --git a/src/components/views/avatars/MemberStatusMessageAvatar.js b/src/components/views/avatars/MemberStatusMessageAvatar.js
index 189641eb8a..814144b64d 100644
--- a/src/components/views/avatars/MemberStatusMessageAvatar.js
+++ b/src/components/views/avatars/MemberStatusMessageAvatar.js
@@ -22,8 +22,9 @@ import MemberAvatar from '../avatars/MemberAvatar';
import classNames from 'classnames';
import * as ContextualMenu from "../../structures/ContextualMenu";
import StatusMessageContextMenu from "../context_menus/StatusMessageContextMenu";
+import SettingsStore from "../../../settings/SettingsStore";
-export default class MemberStatusMessageAvatar extends React.PureComponent {
+export default class MemberStatusMessageAvatar extends React.Component {
static propTypes = {
member: PropTypes.object.isRequired,
width: PropTypes.number,
@@ -92,6 +93,13 @@ export default class MemberStatusMessageAvatar extends React.PureComponent {
};
render() {
+ if (!SettingsStore.isFeatureEnabled("feature_custom_status")) {
+ return ;
+ }
+
const hasStatus = this.props.member.user ? !!this.props.member.user._unstable_statusMessage : false;
const classes = classNames({
diff --git a/src/components/views/rooms/MemberInfo.js b/src/components/views/rooms/MemberInfo.js
index 6bcdc53d4c..1829413dfd 100644
--- a/src/components/views/rooms/MemberInfo.js
+++ b/src/components/views/rooms/MemberInfo.js
@@ -42,6 +42,7 @@ import AccessibleButton from '../elements/AccessibleButton';
import RoomViewStore from '../../../stores/RoomViewStore';
import SdkConfig from '../../../SdkConfig';
import MultiInviter from "../../../utils/MultiInviter";
+import SettingsStore from "../../../settings/SettingsStore";
module.exports = withMatrixClient(React.createClass({
displayName: 'MemberInfo',
@@ -895,7 +896,10 @@ module.exports = withMatrixClient(React.createClass({
presenceState = this.props.member.user.presence;
presenceLastActiveAgo = this.props.member.user.lastActiveAgo;
presenceCurrentlyActive = this.props.member.user.currentlyActive;
- statusMessage = this.props.member.user._unstable_statusMessage;
+
+ if (SettingsStore.isFeatureEnabled("feature_custom_status")) {
+ statusMessage = this.props.member.user._unstable_statusMessage;
+ }
}
const room = this.props.matrixClient.getRoom(this.props.member.roomId);
diff --git a/src/components/views/rooms/MemberTile.js b/src/components/views/rooms/MemberTile.js
index 96a8e0b515..ba951792d0 100644
--- a/src/components/views/rooms/MemberTile.js
+++ b/src/components/views/rooms/MemberTile.js
@@ -16,6 +16,8 @@ limitations under the License.
'use strict';
+import SettingsStore from "../../../settings/SettingsStore";
+
const React = require('react');
import PropTypes from 'prop-types';
@@ -84,7 +86,11 @@ module.exports = React.createClass({
const name = this._getDisplayName();
const active = -1;
const presenceState = member.user ? member.user.presence : null;
- const statusMessage = member.user ? member.user._unstable_statusMessage : null;
+
+ let statusMessage = null;
+ if (member.user && SettingsStore.isFeatureEnabled("feature_custom_status")) {
+ statusMessage = member.user._unstable_statusMessage;
+ }
const av = (
diff --git a/src/components/views/rooms/RoomTile.js b/src/components/views/rooms/RoomTile.js
index 676edc1ea2..a054246b4f 100644
--- a/src/components/views/rooms/RoomTile.js
+++ b/src/components/views/rooms/RoomTile.js
@@ -30,6 +30,7 @@ import * as FormattingUtils from '../../../utils/FormattingUtils';
import AccessibleButton from '../elements/AccessibleButton';
import ActiveRoomObserver from '../../../ActiveRoomObserver';
import RoomViewStore from '../../../stores/RoomViewStore';
+import SettingsStore from "../../../settings/SettingsStore";
module.exports = React.createClass({
displayName: 'RoomTile',
@@ -254,7 +255,7 @@ module.exports = React.createClass({
const isJoined = this.props.room.getMyMembership() === "join";
const looksLikeDm = this.props.room.getInvitedAndJoinedMemberCount() === 2;
let subtext = null;
- if (!isInvite && isJoined && looksLikeDm) {
+ if (!isInvite && isJoined && looksLikeDm && SettingsStore.isFeatureEnabled("feature_custom_status")) {
const selfId = MatrixClientPeg.get().getUserId();
const otherMember = this.props.room.currentState.getMembersExcept([selfId])[0];
if (otherMember && otherMember.user && otherMember.user._unstable_statusMessage) {
diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json
index 5c7e067f95..0bd1858b90 100644
--- a/src/i18n/strings/en_EN.json
+++ b/src/i18n/strings/en_EN.json
@@ -255,6 +255,7 @@
"Please contact your homeserver administrator.": "Please contact your homeserver administrator.",
"Failed to join room": "Failed to join room",
"Message Pinning": "Message Pinning",
+ "Custom user status messages": "Custom user status messages",
"Increase performance by only loading room members on first view": "Increase performance by only loading room members on first view",
"Backup of encryption keys to server": "Backup of encryption keys to server",
"Disable Emoji suggestions while typing": "Disable Emoji suggestions while typing",
diff --git a/src/settings/Settings.js b/src/settings/Settings.js
index c9a4ecdebe..1cac8559d1 100644
--- a/src/settings/Settings.js
+++ b/src/settings/Settings.js
@@ -83,6 +83,12 @@ export const SETTINGS = {
supportedLevels: LEVELS_FEATURE,
default: false,
},
+ "feature_custom_status": {
+ isFeature: true,
+ displayName: _td("Custom user status messages"),
+ supportedLevels: LEVELS_FEATURE,
+ default: false,
+ },
"feature_lazyloading": {
isFeature: true,
displayName: _td("Increase performance by only loading room members on first view"),