diff --git a/app/constants/settings.js b/app/constants/settings.js
index 5287367fb..0103fb58f 100644
--- a/app/constants/settings.js
+++ b/app/constants/settings.js
@@ -125,6 +125,9 @@ export default {
uniqueID: {
type: 'valueAsString'
},
+ UI_Allow_room_names_with_special_chars: {
+ type: 'valueAsBoolean'
+ },
UI_Use_Real_Name: {
type: 'valueAsBoolean'
},
diff --git a/app/lib/rocketchat.js b/app/lib/rocketchat.js
index 9147eb97b..ad54ac35b 100644
--- a/app/lib/rocketchat.js
+++ b/app/lib/rocketchat.js
@@ -1226,11 +1226,14 @@ const RocketChat = {
return this.methodCall('autoTranslate.translateMessage', message, targetLanguage);
},
getRoomTitle(room) {
- const { UI_Use_Real_Name: useRealName } = reduxStore.getState().settings;
+ const { UI_Use_Real_Name: useRealName, UI_Allow_room_names_with_special_chars: allowSpecialChars } = reduxStore.getState().settings;
const { username } = reduxStore.getState().login.user;
if (RocketChat.isGroupChat(room) && !(room.name && room.name.length)) {
return room.usernames.filter(u => u !== username).sort((u1, u2) => u1.localeCompare(u2)).join(', ');
}
+ if (allowSpecialChars && room.t !== 'd') {
+ return room.fname || room.name;
+ }
return ((room.prid || useRealName) && room.fname) || room.name;
},
getRoomAvatar(room) {
diff --git a/app/views/RoomActionsView/index.js b/app/views/RoomActionsView/index.js
index 21dc281f0..5e6a30f8e 100644
--- a/app/views/RoomActionsView/index.js
+++ b/app/views/RoomActionsView/index.js
@@ -442,7 +442,7 @@ class RoomActionsView extends React.Component {
Alert.alert(
I18n.t('Are_you_sure_question_mark'),
- I18n.t('Are_you_sure_you_want_to_leave_the_room', { room: room.t === 'd' ? room.fname : room.name }),
+ I18n.t('Are_you_sure_you_want_to_leave_the_room', { room: RocketChat.getRoomTitle(room) }),
[
{
text: I18n.t('Cancel'),
@@ -484,7 +484,7 @@ class RoomActionsView extends React.Component {
: (
- {room.prid ? room.fname : room.name}
+ {RocketChat.getRoomTitle(room)}
)
}
diff --git a/app/views/RoomInfoEditView/index.js b/app/views/RoomInfoEditView/index.js
index 63de0c02c..592ff8467 100644
--- a/app/views/RoomInfoEditView/index.js
+++ b/app/views/RoomInfoEditView/index.js
@@ -125,13 +125,13 @@ class RoomInfoEditView extends React.Component {
init = (room) => {
const {
- name, description, topic, announcement, t, ro, reactWhenReadOnly, joinCodeRequired, sysMes
+ description, topic, announcement, t, ro, reactWhenReadOnly, joinCodeRequired, sysMes
} = room;
// fake password just to user knows about it
this.randomValue = random(15);
this.setState({
room,
- name,
+ name: RocketChat.getRoomTitle(room),
description,
topic,
announcement,
diff --git a/app/views/RoomInfoView/index.js b/app/views/RoomInfoView/index.js
index 184109ea7..1e1139f9a 100644
--- a/app/views/RoomInfoView/index.js
+++ b/app/views/RoomInfoView/index.js
@@ -36,7 +36,7 @@ const getRoomTitle = (room, type, name, username, statusText, theme) => (type ==
: (
- {room.prid ? room.fname : room.name}
+ {RocketChat.getRoomTitle(room)}
)
);
diff --git a/app/views/RoomView/index.js b/app/views/RoomView/index.js
index 341df6ce6..9599e0326 100644
--- a/app/views/RoomView/index.js
+++ b/app/views/RoomView/index.js
@@ -218,7 +218,7 @@ class RoomView extends React.Component {
} = this.props;
if ((room.id || room.rid) && !this.tmid) {
navigation.setParams({
- name: this.getRoomTitle(room),
+ name: RocketChat.getRoomTitle(room),
subtitle: room.topic,
avatar: room.name,
t: room.t,
@@ -292,7 +292,7 @@ class RoomView extends React.Component {
}
}
if (((roomUpdate.fname !== prevState.roomUpdate.fname) || (roomUpdate.name !== prevState.roomUpdate.name)) && !this.tmid) {
- navigation.setParams({ name: this.getRoomTitle(room) });
+ navigation.setParams({ name: RocketChat.getRoomTitle(room) });
}
}
@@ -456,7 +456,7 @@ class RoomView extends React.Component {
this.setState({ room });
if (!this.tmid) {
navigation.setParams({
- name: this.getRoomTitle(room),
+ name: RocketChat.getRoomTitle(room),
subtitle: room.topic,
avatar: room.name,
t: room.t
@@ -645,7 +645,7 @@ class RoomView extends React.Component {
const { room } = this.state;
if (rid === this.rid) {
Navigation.navigate('RoomsListView');
- showErrorAlert(I18n.t('You_were_removed_from_channel', { channel: this.getRoomTitle(room) }), I18n.t('Oops'));
+ showErrorAlert(I18n.t('You_were_removed_from_channel', { channel: RocketChat.getRoomTitle(room) }), I18n.t('Oops'));
}
}
@@ -667,11 +667,6 @@ class RoomView extends React.Component {
});
};
- getRoomTitle = (room) => {
- const { useRealName } = this.props;
- return ((room.prid || useRealName) && room.fname) || room.name;
- }
-
getMessages = () => {
const { room } = this.state;
if (room.lastOpen) {