Added support for new system-wide teammate name display setting (#709)

This commit is contained in:
Harrison Healey 2017-07-04 20:54:03 -04:00 committed by enahum
parent f8eb3bf8bd
commit bd2c623775
14 changed files with 50 additions and 48 deletions

View file

@ -35,7 +35,7 @@ class FilteredList extends Component {
currentChannel: PropTypes.object,
groupChannels: PropTypes.array,
intl: intlShape.isRequired,
myPreferences: PropTypes.object,
teammateNameDisplay: PropTypes.string,
onSelectChannel: PropTypes.func.isRequired,
otherChannels: PropTypes.array,
profiles: PropTypes.oneOfType(
@ -178,11 +178,11 @@ class FilteredList extends Component {
};
buildFakeDms = (props) => {
const {currentUserId, myPreferences, profiles, statuses} = props;
const {currentUserId, teammateNameDisplay, profiles, statuses} = props;
const users = Object.values(profiles).filter((p) => p.id !== currentUserId);
return users.map((u) => {
const displayName = displayUsername(u, myPreferences);
const displayName = displayUsername(u, teammateNameDisplay);
return {
id: u.id,

View file

@ -11,7 +11,7 @@ import {General} from 'mattermost-redux/constants';
import {getGroupChannels, getOtherChannels} from 'mattermost-redux/selectors/entities/channels';
import {getConfig} from 'mattermost-redux/selectors/entities/general';
import {getProfilesInCurrentTeam, getUsers, getUserStatuses} from 'mattermost-redux/selectors/entities/users';
import {getMyPreferences} from 'mattermost-redux/selectors/entities/preferences';
import {getTeammateNameDisplaySetting} from 'mattermost-redux/selectors/entities/preferences';
import FilteredList from './filtered_list';
@ -30,7 +30,7 @@ function mapStateToProps(state, ownProps) {
otherChannels: getOtherChannels(state),
groupChannels: getGroupChannels(state),
profiles,
myPreferences: getMyPreferences(state),
teammateNameDisplay: getTeammateNameDisplaySetting(state),
statuses: getUserStatuses(state),
...ownProps
};

View file

@ -16,7 +16,7 @@ export default class CustomList extends PureComponent {
onRowPress: PropTypes.func,
onListEndReached: PropTypes.func,
onListEndReachedThreshold: PropTypes.number,
preferences: PropTypes.object,
teammateNameDisplay: PropTypes.string,
loading: PropTypes.bool,
loadingText: PropTypes.object,
listPageSize: PropTypes.number,
@ -119,7 +119,7 @@ export default class CustomList extends PureComponent {
rowData,
sectionId,
rowId,
this.props.preferences,
this.props.teammateNameDisplay,
this.props.theme,
this.props.selectable,
this.props.onRowPress,

View file

@ -5,7 +5,7 @@ import {connect} from 'react-redux';
import {bindActionCreators} from 'redux';
import {createPost, deletePost, flagPost, removePost, unflagPost} from 'mattermost-redux/actions/posts';
import {getMyPreferences} from 'mattermost-redux/selectors/entities/preferences';
import {getMyPreferences, getTeammateNameDisplaySetting} from 'mattermost-redux/selectors/entities/preferences';
import {makeGetCommentCountForPost} from 'mattermost-redux/selectors/entities/posts';
import {getCurrentUserId, getCurrentUserRoles, getUser} from 'mattermost-redux/selectors/entities/users';
import {isPostFlagged} from 'mattermost-redux/utils/post_utils';
@ -22,6 +22,7 @@ function makeMapStateToProps() {
const commentedOnUser = ownProps.commentedOnPost ? getUser(state, ownProps.commentedOnPost.user_id) : null;
const user = getUser(state, ownProps.post.user_id);
const myPreferences = getMyPreferences(state);
const teammateNameDisplay = getTeammateNameDisplaySetting(state);
const {config, license} = state.entities.general;
const roles = getCurrentUserId(state) ? getCurrentUserRoles(state) : '';
const {tooltipVisible} = state.views.channel;
@ -30,9 +31,9 @@ function makeMapStateToProps() {
...ownProps,
config,
commentCount: getCommentCountForPost(state, ownProps),
commentedOnDisplayName: displayUsername(commentedOnUser, myPreferences),
commentedOnDisplayName: displayUsername(commentedOnUser, teammateNameDisplay),
currentUserId: getCurrentUserId(state),
displayName: displayUsername(user, myPreferences),
displayName: displayUsername(user, teammateNameDisplay),
isFlagged: isPostFlagged(ownProps.post.id, myPreferences),
license,
roles,

View file

@ -30,7 +30,7 @@ class ChannelMembers extends PureComponent {
currentChannelMembers: PropTypes.array.isRequired,
currentUserId: PropTypes.string.isRequired,
navigator: PropTypes.object,
preferences: PropTypes.object,
teammateNameDisplay: PropTypes.string,
requestStatus: PropTypes.string,
searchRequestStatus: PropTypes.string,
removeMembersStatus: PropTypes.string,
@ -203,16 +203,17 @@ class ChannelMembers extends PureComponent {
let {page} = this.state;
if (requestStatus !== RequestStatus.STARTED && next && !searching) {
page = page + 1;
actions.getProfilesInChannel(currentChannel.id, page, General.PROFILE_CHUNK_SIZE).
then((data) => {
if (data && data.length) {
this.setState({
page
});
} else {
this.setState({next: false});
actions.getProfilesInChannel(currentChannel.id, page, General.PROFILE_CHUNK_SIZE).then(
(data) => {
if (data && data.length) {
this.setState({
page
});
} else {
this.setState({next: false});
}
}
});
);
}
};
@ -229,9 +230,9 @@ class ChannelMembers extends PureComponent {
actions.handleRemoveChannelMembers(currentChannel.id, membersToRemove);
};
renderMemberRow = (user, sectionId, rowId, preferences, theme, selectable, onPress, onSelect) => {
renderMemberRow = (user, sectionId, rowId, teammateNameDisplay, theme, selectable, onPress, onSelect) => {
const {id, username} = user;
const displayName = displayUsername(user, preferences);
const displayName = displayUsername(user, teammateNameDisplay);
let onRowSelect = null;
if (selectable) {
onRowSelect = () => onSelect(sectionId, rowId);
@ -271,7 +272,7 @@ class ChannelMembers extends PureComponent {
};
render() {
const {canManageUsers, intl, preferences, requestStatus, searchRequestStatus, theme} = this.props;
const {canManageUsers, intl, teammateNameDisplay, requestStatus, searchRequestStatus, theme} = this.props;
const {formatMessage} = intl;
const {profiles, removing, searching, showNoResults, term} = this.state;
const isLoading = (requestStatus === RequestStatus.STARTED) || (requestStatus.status === RequestStatus.NOT_STARTED) ||
@ -320,7 +321,7 @@ class ChannelMembers extends PureComponent {
theme={theme}
searching={searching}
onListEndReached={more}
preferences={preferences}
teammateNameDisplay={teammateNameDisplay}
listScrollRenderAheadDistance={50}
loading={isLoading}
loadingText={loadingText}

View file

@ -7,7 +7,7 @@ import {connect} from 'react-redux';
import {handleRemoveChannelMembers} from 'app/actions/views/channel_members';
import {getTheme} from 'app/selectors/preferences';
import {getCurrentChannel, canManageChannelMembers} from 'mattermost-redux/selectors/entities/channels';
import {getMyPreferences} from 'mattermost-redux/selectors/entities/preferences';
import {getTeammateNameDisplaySetting} from 'mattermost-redux/selectors/entities/preferences';
import {getProfilesInCurrentChannel} from 'mattermost-redux/selectors/entities/users';
import {getProfilesInChannel, searchProfiles} from 'mattermost-redux/actions/users';
@ -19,7 +19,7 @@ function mapStateToProps(state) {
currentChannel: getCurrentChannel(state) || {},
currentChannelMembers: getProfilesInCurrentChannel(state),
currentUserId: state.entities.users.currentUserId,
preferences: getMyPreferences(state),
teammateNameDisplay: getTeammateNameDisplaySetting(state),
requestStatus: state.requests.users.getProfilesInChannel.status,
searchRequestStatus: state.requests.users.searchProfiles.status,
removeMembersStatus: state.requests.channels.removeChannelMember.status,

View file

@ -12,7 +12,7 @@ import {getTheme} from 'app/selectors/preferences';
import {getProfiles, getProfilesInTeam, searchProfiles} from 'mattermost-redux/actions/users';
import {General} from 'mattermost-redux/constants';
import {getConfig} from 'mattermost-redux/selectors/entities/general';
import {getMyPreferences} from 'mattermost-redux/selectors/entities/preferences';
import {getTeammateNameDisplaySetting} from 'mattermost-redux/selectors/entities/preferences';
import {getCurrentTeamId} from 'mattermost-redux/selectors/entities/teams';
import {getCurrentUserId, getProfilesInCurrentTeam, getUsers} from 'mattermost-redux/selectors/entities/users';
@ -59,7 +59,7 @@ function mapStateToProps(state, ownProps) {
return {
...ownProps,
config,
preferences: getMyPreferences(state),
teammateNameDisplay: getTeammateNameDisplaySetting(state),
profiles,
theme: getTheme(state),
currentDisplayName: state.views.channel.displayName,

View file

@ -29,7 +29,7 @@ class MoreDirectMessages extends PureComponent {
navigator: PropTypes.object,
config: PropTypes.object.isRequired,
currentTeamId: PropTypes.string.isRequired,
preferences: PropTypes.object.isRequired,
teammateNameDisplay: PropTypes.string,
theme: PropTypes.object.isRequired,
profiles: PropTypes.array,
getRequest: PropTypes.object.isRequired,
@ -153,7 +153,7 @@ class MoreDirectMessages extends PureComponent {
};
onSelectMember = async (id) => {
const {actions, currentDisplayName, intl, preferences, profiles} = this.props;
const {actions, currentDisplayName, intl, teammateNameDisplay, profiles} = this.props;
const user = profiles.find((p) => p.id === id);
this.setState({adding: true});
@ -161,7 +161,7 @@ class MoreDirectMessages extends PureComponent {
// save the current channel display name in case it fails
const currentChannelDisplayName = currentDisplayName;
const userDisplayName = displayUsername(user, preferences);
const userDisplayName = displayUsername(user, teammateNameDisplay);
if (user) {
actions.setChannelDisplayName(userDisplayName);
@ -196,7 +196,7 @@ class MoreDirectMessages extends PureComponent {
render() {
const {
intl,
preferences,
teammateNameDisplay,
getRequest,
searchRequest,
theme
@ -257,7 +257,7 @@ class MoreDirectMessages extends PureComponent {
theme={theme}
searching={searching}
onListEndReached={more}
preferences={preferences}
teammateNameDisplay={teammateNameDisplay}
loading={isLoading}
selectable={false}
listScrollRenderAheadDistance={50}

View file

@ -8,7 +8,7 @@ import {goToNotification} from 'app/actions/views/root';
import {getTheme} from 'app/selectors/preferences';
import {getChannel} from 'mattermost-redux/selectors/entities/channels';
import {getMyPreferences} from 'mattermost-redux/selectors/entities/preferences';
import {getTeammateNameDisplaySetting} from 'mattermost-redux/selectors/entities/preferences';
import {getUser} from 'mattermost-redux/selectors/entities/users';
import Notification from './notification';
@ -31,7 +31,7 @@ function mapStateToProps(state, ownProps) {
config: state.entities.general.config,
channel,
user,
myPreferences: getMyPreferences(state),
teammateNameDisplay: getTeammateNameDisplaySetting(state),
theme: getTheme(state)
};
}

View file

@ -33,7 +33,7 @@ export default class Notification extends PureComponent {
channel: PropTypes.object,
config: PropTypes.object,
notification: PropTypes.object.isRequired,
myPreferences: PropTypes.object.isRequired,
teammateNameDisplay: PropTypes.string,
navigator: PropTypes.object,
theme: PropTypes.object.isRequired,
user: PropTypes.object
@ -139,7 +139,7 @@ export default class Notification extends PureComponent {
};
getNotificationUserName = () => {
const {config, notification, myPreferences, user} = this.props;
const {config, notification, teammateNameDisplay, user} = this.props;
const {data} = notification;
let userName;
@ -152,7 +152,7 @@ export default class Notification extends PureComponent {
} else if (user) {
userName = (
<Text style={style.title}>
{displayUsername(user, myPreferences)}
{displayUsername(user, teammateNameDisplay)}
</Text>
);
}

View file

@ -9,7 +9,7 @@ import {makeDirectChannel} from 'app/actions/views/more_dms';
import {getTheme} from 'app/selectors/preferences';
import {getCurrentChannel} from 'mattermost-redux/selectors/entities/channels';
import {getMyPreferences} from 'mattermost-redux/selectors/entities/preferences';
import {getTeammateNameDisplaySetting} from 'mattermost-redux/selectors/entities/preferences';
import {getCurrentUserId} from 'mattermost-redux/selectors/entities/users';
import UserProfile from './user_profile';
@ -26,7 +26,7 @@ function mapStateToProps(state, ownProps) {
currentDisplayName: state.views.channel.displayName,
currentUserId: getCurrentUserId(state),
user: state.entities.users.profiles[ownProps.userId],
myPreferences: getMyPreferences(state),
teammateNameDisplay: getTeammateNameDisplaySetting(state),
theme: getTheme(state)
};
}

View file

@ -34,7 +34,7 @@ class UserProfile extends PureComponent {
createChannelRequest: PropTypes.object.isRequired,
intl: intlShape.isRequired,
navigator: PropTypes.object,
myPreferences: PropTypes.object,
teammateNameDisplay: PropTypes.string,
theme: PropTypes.object.isRequired,
user: PropTypes.object.isRequired
};
@ -46,10 +46,10 @@ class UserProfile extends PureComponent {
};
getDisplayName = () => {
const {theme, myPreferences, user} = this.props;
const {theme, teammateNameDisplay, user} = this.props;
const style = createStyleSheet(theme);
const displayName = displayUsername(user, myPreferences);
const displayName = displayUsername(user, teammateNameDisplay);
if (displayName) {
return <Text style={style.displayName}>{displayName}</Text>;
@ -75,12 +75,12 @@ class UserProfile extends PureComponent {
};
sendMessage = async () => {
const {actions, currentDisplayName, intl, myPreferences, navigator, user} = this.props;
const {actions, currentDisplayName, intl, teammateNameDisplay, navigator, user} = this.props;
// save the current channel display name in case it fails
const currentChannelDisplayName = currentDisplayName;
const userDisplayName = displayUsername(user, myPreferences);
const userDisplayName = displayUsername(user, teammateNameDisplay);
actions.setChannelDisplayName(userDisplayName);
const result = await actions.makeDirectChannel(user.id);

View file

@ -26,9 +26,9 @@ export function createMembersSections(data) {
return sections;
}
export function renderMemberRow(user, sectionId, rowId, preferences, theme, selectable, onPress, onSelect) {
export function renderMemberRow(user, sectionId, rowId, teammateNameDisplay, theme, selectable, onPress, onSelect) {
const {id, username} = user;
const displayName = displayUsername(user, preferences);
const displayName = displayUsername(user, teammateNameDisplay);
let onRowSelect = null;
if (selectable) {
onRowSelect = () => onSelect(sectionId, rowId);

View file

@ -3645,7 +3645,7 @@ makeerror@1.0.x:
mattermost-redux@mattermost/mattermost-redux#master:
version "0.0.1"
resolved "https://codeload.github.com/mattermost/mattermost-redux/tar.gz/f996792ab8b1ab81ad0de76cf1a4f0a13c33a100"
resolved "https://codeload.github.com/mattermost/mattermost-redux/tar.gz/aa2841b7b75fd08c9819ac14a9d27d4f6baa959a"
dependencies:
deep-equal "1.0.1"
harmony-reflect "1.5.1"