From bd2c623775f347c50f34e7eb7d77864eb7d3f68f Mon Sep 17 00:00:00 2001 From: Harrison Healey Date: Tue, 4 Jul 2017 20:54:03 -0400 Subject: [PATCH] Added support for new system-wide teammate name display setting (#709) --- .../filtered_list/filtered_list.js | 6 ++-- .../channels_list/filtered_list/index.js | 4 +-- app/components/custom_list/index.js | 4 +-- app/components/post/index.js | 7 +++-- .../channel_members/channel_members.js | 29 ++++++++++--------- app/screens/channel_members/index.js | 4 +-- app/screens/more_dms/index.js | 4 +-- app/screens/more_dms/more_dms.js | 10 +++---- app/screens/notification/index.js | 4 +-- app/screens/notification/notification.js | 6 ++-- app/screens/user_profile/index.js | 4 +-- app/screens/user_profile/user_profile.js | 10 +++---- app/utils/member_list.js | 4 +-- yarn.lock | 2 +- 14 files changed, 50 insertions(+), 48 deletions(-) diff --git a/app/components/channel_drawer/channels_list/filtered_list/filtered_list.js b/app/components/channel_drawer/channels_list/filtered_list/filtered_list.js index 9e95d947b..07b9b90a5 100644 --- a/app/components/channel_drawer/channels_list/filtered_list/filtered_list.js +++ b/app/components/channel_drawer/channels_list/filtered_list/filtered_list.js @@ -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, diff --git a/app/components/channel_drawer/channels_list/filtered_list/index.js b/app/components/channel_drawer/channels_list/filtered_list/index.js index 62b885262..06b489da6 100644 --- a/app/components/channel_drawer/channels_list/filtered_list/index.js +++ b/app/components/channel_drawer/channels_list/filtered_list/index.js @@ -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 }; diff --git a/app/components/custom_list/index.js b/app/components/custom_list/index.js index e4ca1ad1a..865019fac 100644 --- a/app/components/custom_list/index.js +++ b/app/components/custom_list/index.js @@ -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, diff --git a/app/components/post/index.js b/app/components/post/index.js index e853645d6..b757e9e2a 100644 --- a/app/components/post/index.js +++ b/app/components/post/index.js @@ -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, diff --git a/app/screens/channel_members/channel_members.js b/app/screens/channel_members/channel_members.js index 589beafac..01a4d3bc2 100644 --- a/app/screens/channel_members/channel_members.js +++ b/app/screens/channel_members/channel_members.js @@ -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} diff --git a/app/screens/channel_members/index.js b/app/screens/channel_members/index.js index a448f19ec..83b75cd6e 100644 --- a/app/screens/channel_members/index.js +++ b/app/screens/channel_members/index.js @@ -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, diff --git a/app/screens/more_dms/index.js b/app/screens/more_dms/index.js index 5baccd490..008c61d8e 100644 --- a/app/screens/more_dms/index.js +++ b/app/screens/more_dms/index.js @@ -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, diff --git a/app/screens/more_dms/more_dms.js b/app/screens/more_dms/more_dms.js index a46ae500e..1653ceede 100644 --- a/app/screens/more_dms/more_dms.js +++ b/app/screens/more_dms/more_dms.js @@ -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} diff --git a/app/screens/notification/index.js b/app/screens/notification/index.js index 47c3ff663..3514e0b5b 100644 --- a/app/screens/notification/index.js +++ b/app/screens/notification/index.js @@ -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) }; } diff --git a/app/screens/notification/notification.js b/app/screens/notification/notification.js index 45b7b91db..330f7dbed 100644 --- a/app/screens/notification/notification.js +++ b/app/screens/notification/notification.js @@ -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 = ( - {displayUsername(user, myPreferences)} + {displayUsername(user, teammateNameDisplay)} ); } diff --git a/app/screens/user_profile/index.js b/app/screens/user_profile/index.js index 4e652e537..f2b3dbea2 100644 --- a/app/screens/user_profile/index.js +++ b/app/screens/user_profile/index.js @@ -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) }; } diff --git a/app/screens/user_profile/user_profile.js b/app/screens/user_profile/user_profile.js index 4409e531d..408b003f0 100644 --- a/app/screens/user_profile/user_profile.js +++ b/app/screens/user_profile/user_profile.js @@ -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 {displayName}; @@ -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); diff --git a/app/utils/member_list.js b/app/utils/member_list.js index 3a6a081c9..0e7d1ae0d 100644 --- a/app/utils/member_list.js +++ b/app/utils/member_list.js @@ -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); diff --git a/yarn.lock b/yarn.lock index 923db5dbc..5ae8878db 100644 --- a/yarn.lock +++ b/yarn.lock @@ -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"