From 1c7f0be268046d2b509e23268eebcbbef78c5a24 Mon Sep 17 00:00:00 2001 From: hmhealey Date: Thu, 9 Jul 2015 15:49:23 -0400 Subject: Renamed all clientside references from full_name to nickname --- web/react/components/channel_header.jsx | 2 +- web/react/components/member_list_team.jsx | 4 ++-- web/react/components/mention_list.jsx | 10 +++++----- web/react/components/post_list.jsx | 2 +- web/react/components/sidebar.jsx | 4 ++-- web/react/components/user_settings.jsx | 14 +++++++------- 6 files changed, 18 insertions(+), 18 deletions(-) (limited to 'web/react/components') diff --git a/web/react/components/channel_header.jsx b/web/react/components/channel_header.jsx index 2e430489f..30435dc08 100644 --- a/web/react/components/channel_header.jsx +++ b/web/react/components/channel_header.jsx @@ -153,7 +153,7 @@ module.exports = React.createClass({ if (isDirect) { if (this.state.users.length > 1) { var contact = this.state.users[((this.state.users[0].id === currentId) ? 1 : 0)]; - channelTitle = ; + channelTitle = ; } } diff --git a/web/react/components/member_list_team.jsx b/web/react/components/member_list_team.jsx index 89b5e49d5..8d69a36d3 100644 --- a/web/react/components/member_list_team.jsx +++ b/web/react/components/member_list_team.jsx @@ -85,8 +85,8 @@ var MemberListTeamItem = React.createClass({ return (
- {user.full_name.trim() ? user.full_name : user.username} - {user.full_name.trim() ? user.username : email} + {user.nickname.trim() ? user.nickname : user.username} + {user.nickname.trim() ? user.username : email}
{currentRoles} diff --git a/web/react/components/mention_list.jsx b/web/react/components/mention_list.jsx index c5ff82346..c04e28849 100644 --- a/web/react/components/mention_list.jsx +++ b/web/react/components/mention_list.jsx @@ -165,14 +165,14 @@ module.exports = React.createClass({ var all = {}; all.username = "all"; - all.full_name = ""; + all.nickname = ""; all.secondary_text = "Notifies everyone in the team"; all.id = "allmention"; users.push(all); var channel = {}; channel.username = "channel"; - channel.full_name = ""; + channel.nickname = ""; channel.secondary_text = "Notifies everyone in the channel"; channel.id = "channelmention"; users.push(channel); @@ -189,11 +189,11 @@ module.exports = React.createClass({ if (this.alreadyMentioned(users[i].username)) continue; var firstName = "", lastName = ""; - if (users[i].full_name.length > 0) { - var splitName = users[i].full_name.split(' '); + if (users[i].nickname.length > 0) { + var splitName = users[i].nickname.split(' '); firstName = splitName[0].toLowerCase(); lastName = splitName.length > 1 ? splitName[splitName.length-1].toLowerCase() : ""; - users[i].secondary_text = users[i].full_name; + users[i].secondary_text = users[i].nickname; } if (firstName.lastIndexOf(mentionText,0) === 0 diff --git a/web/react/components/post_list.jsx b/web/react/components/post_list.jsx index 573799a19..5439ca43d 100644 --- a/web/react/components/post_list.jsx +++ b/web/react/components/post_list.jsx @@ -305,7 +305,7 @@ module.exports = React.createClass({ var teammate = utils.getDirectTeammate(channel.id) if (teammate) { - var teammate_name = teammate.full_name.length > 0 ? teammate.full_name : teammate.username; + var teammate_name = teammate.nickname.length > 0 ? teammate.nickname : teammate.username; more_messages = (
diff --git a/web/react/components/sidebar.jsx b/web/react/components/sidebar.jsx index cae9425d3..742720048 100644 --- a/web/react/components/sidebar.jsx +++ b/web/react/components/sidebar.jsx @@ -131,7 +131,7 @@ function getStateFromStores() { var channel = ChannelStore.getByName(channelName); if (channel != null) { - channel.display_name = teammate.full_name.trim() != "" ? teammate.full_name : teammate.username; + channel.display_name = teammate.nickname.trim() != "" ? teammate.nickname : teammate.username; channel.teammate_username = teammate.username; channel.status = UserStore.getStatus(teammate.id); @@ -150,7 +150,7 @@ function getStateFromStores() { var tempChannel = {}; tempChannel.fake = true; tempChannel.name = channelName; - tempChannel.display_name = teammate.full_name.trim() != "" ? teammate.full_name : teammate.username; + tempChannel.display_name = teammate.nickname.trim() != "" ? teammate.nickname : teammate.username; tempChannel.status = UserStore.getStatus(teammate.id); tempChannel.last_post_at = 0; readDirectChannels.push(tempChannel); diff --git a/web/react/components/user_settings.jsx b/web/react/components/user_settings.jsx index 38e4b1aea..9ec7f64c9 100644 --- a/web/react/components/user_settings.jsx +++ b/web/react/components/user_settings.jsx @@ -316,8 +316,8 @@ var NotificationsTab = React.createClass({ if (this.props.activeSection === 'keys') { var user = this.props.user; var first_name = ""; - if (user.full_name.length > 0) { - first_name = user.full_name.split(' ')[0]; + if (user.nickname.length > 0) { + first_name = user.nickname.split(' ')[0]; } var inputs = []; @@ -399,7 +399,7 @@ var NotificationsTab = React.createClass({ if (this.state.first_name_key) { var first_name = ""; var user = this.props.user; - if (user.full_name.length > 0) first_name = user.full_name.split(' ')[0]; + if (user.nickname.length > 0) first_name = user.nickname.split(' ')[0]; if (first_name != "") keys.push(first_name); } if (this.state.username_key) keys.push(this.props.user.username); @@ -761,12 +761,12 @@ var GeneralTab = React.createClass({ var fullName = firstName + ' ' + lastName; - if (user.full_name === fullName) { + if (user.nickname === fullName) { this.setState({client_error: "You must submit a new name"}) return; } - user.full_name = fullName; + user.nickname = fullName; this.submitUser(user); }, @@ -861,7 +861,7 @@ var GeneralTab = React.createClass({ getInitialState: function() { var user = this.props.user; - var splitStr = user.full_name.split(' '); + var splitStr = user.nickname.split(' '); var firstName = splitStr.shift(); var lastName = splitStr.join(' '); @@ -913,7 +913,7 @@ var GeneralTab = React.createClass({ nameSection = ( ); -- cgit v1.2.3-1-g7c22 From 8dbf03bd10a440db3896c046de7332806f96e889 Mon Sep 17 00:00:00 2001 From: hmhealey Date: Thu, 9 Jul 2015 17:20:18 -0400 Subject: Add interface to edit a user's nickname directly --- web/react/components/user_settings.jsx | 55 +++++++++++++++++++++++++++++++++- 1 file changed, 54 insertions(+), 1 deletion(-) (limited to 'web/react/components') diff --git a/web/react/components/user_settings.jsx b/web/react/components/user_settings.jsx index 9ec7f64c9..c1ea367f2 100644 --- a/web/react/components/user_settings.jsx +++ b/web/react/components/user_settings.jsx @@ -752,6 +752,21 @@ var GeneralTab = React.createClass({ this.submitUser(user); }, + submitNickname: function(e) { + e.preventDefault(); + + var user = UserStore.getCurrentUser(); + var nickname = this.state.nickname.trim(); + + if (user.nickname === nickname) { + this.setState({client_error: "You must submit a new nickname"}) + return; + } + + user.nickname = nickname; + + this.submitUser(user); + }, submitName: function(e) { e.preventDefault(); @@ -839,6 +854,9 @@ var GeneralTab = React.createClass({ updateLastName: function(e) { this.setState({ last_name: e.target.value}); }, + updateNickname: function(e) { + this.setState({nickname: e.target.value}); + }, updateEmail: function(e) { this.setState({ email: e.target.value}); }, @@ -865,7 +883,7 @@ var GeneralTab = React.createClass({ var firstName = splitStr.shift(); var lastName = splitStr.join(' '); - return { username: user.username, first_name: firstName, last_name: lastName, + return { username: user.username, first_name: firstName, last_name: lastName, nickname: user.nickname, email: user.email, picture: null }; }, render: function() { @@ -919,6 +937,39 @@ var GeneralTab = React.createClass({ ); } + var nicknameSection; + if (this.props.activeSection === 'nickname') { + var inputs = []; + + inputs.push( +
+ +
+ +
+
+ ); + + nicknameSection = ( + + ); + } else { + nicknameSection = ( + + ); + } + var usernameSection; if (this.props.activeSection === 'username') { var inputs = []; @@ -1026,6 +1077,8 @@ var GeneralTab = React.createClass({
{usernameSection}
+ {nicknameSection} +
{emailSection}
{pictureSection} -- cgit v1.2.3-1-g7c22 From b620960cdefe87d9e96958ab526c294ee6502a90 Mon Sep 17 00:00:00 2001 From: hmhealey Date: Fri, 10 Jul 2015 15:51:45 -0400 Subject: Fix migration code so that LastName is populated correctly for users who only have one word in their FullName --- web/react/components/user_settings.jsx | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) (limited to 'web/react/components') diff --git a/web/react/components/user_settings.jsx b/web/react/components/user_settings.jsx index c1ea367f2..e6eb2b451 100644 --- a/web/react/components/user_settings.jsx +++ b/web/react/components/user_settings.jsx @@ -774,14 +774,13 @@ var GeneralTab = React.createClass({ var firstName = this.state.first_name.trim(); var lastName = this.state.last_name.trim(); - var fullName = firstName + ' ' + lastName; - - if (user.nickname === fullName) { - this.setState({client_error: "You must submit a new name"}) + if (user.first_name === firstName && user.last_name === lastName) { + this.setState({client_error: "You must submit a new first or last name"}) return; } - user.nickname = fullName; + user.first_name = firstName; + user.last_name = lastName; this.submitUser(user); }, @@ -879,11 +878,7 @@ var GeneralTab = React.createClass({ getInitialState: function() { var user = this.props.user; - var splitStr = user.nickname.split(' '); - var firstName = splitStr.shift(); - var lastName = splitStr.join(' '); - - return { username: user.username, first_name: firstName, last_name: lastName, nickname: user.nickname, + return { username: user.username, first_name: user.first_name, last_name: user.last_name, nickname: user.nickname, email: user.email, picture: null }; }, render: function() { @@ -919,7 +914,7 @@ var GeneralTab = React.createClass({ nameSection = ( ); } else { + var full_name = ""; + + if (user.first_name && user.last_name) { + full_name = user.first_name + " " + user.last_name; + } else if (user.first_name) { + full_name = user.first_name; + } else if (user.last_name) { + full_name = user.last_name; + } + nameSection = ( ); -- cgit v1.2.3-1-g7c22 From 079538d9e7d22cd8d5f782f4f7434858bd80d914 Mon Sep 17 00:00:00 2001 From: hmhealey Date: Mon, 13 Jul 2015 15:39:53 -0400 Subject: Use User.FirstName for notifications instead of trying to determine it from User.Nickname --- web/react/components/mention_list.jsx | 14 +++----------- web/react/components/user_settings.jsx | 23 +++++++---------------- 2 files changed, 10 insertions(+), 27 deletions(-) (limited to 'web/react/components') diff --git a/web/react/components/mention_list.jsx b/web/react/components/mention_list.jsx index c04e28849..524f1b337 100644 --- a/web/react/components/mention_list.jsx +++ b/web/react/components/mention_list.jsx @@ -188,21 +188,13 @@ module.exports = React.createClass({ for (var i = 0; i < users.length && index < MAX_ITEMS_IN_LIST; i++) { if (this.alreadyMentioned(users[i].username)) continue; - var firstName = "", lastName = ""; - if (users[i].nickname.length > 0) { - var splitName = users[i].nickname.split(' '); - firstName = splitName[0].toLowerCase(); - lastName = splitName.length > 1 ? splitName[splitName.length-1].toLowerCase() : ""; - users[i].secondary_text = users[i].nickname; - } - - if (firstName.lastIndexOf(mentionText,0) === 0 - || lastName.lastIndexOf(mentionText,0) === 0 || users[i].username.lastIndexOf(mentionText,0) === 0) { + if (users[i].first_name.lastIndexOf(mentionText,0) === 0 + || users[i].last_name.lastIndexOf(mentionText,0) === 0 || users[i].username.lastIndexOf(mentionText,0) === 0) { mentions[index] = ( 0) { - first_name = user.nickname.split(' ')[0]; - } - var inputs = []; - if (first_name != "") { + if (user.first_name) { inputs.push(
@@ -396,14 +392,9 @@ var NotificationsTab = React.createClass({ ); } else { var keys = []; - if (this.state.first_name_key) { - var first_name = ""; - var user = this.props.user; - if (user.nickname.length > 0) first_name = user.nickname.split(' ')[0]; - if (first_name != "") keys.push(first_name); - } - if (this.state.username_key) keys.push(this.props.user.username); - if (this.state.mention_key) keys.push('@'+this.props.user.username); + if (this.state.first_name_key) keys.push(user.first_name); + if (this.state.username_key) keys.push(user.username); + if (this.state.mention_key) keys.push('@'+user.username); if (this.state.all_key) keys.push('@all'); if (this.state.channel_key) keys.push('@channel'); if (this.state.custom_keys.length > 0) keys = keys.concat(this.state.custom_keys.split(',')); -- cgit v1.2.3-1-g7c22 From 098cbcdc21effeebe7e57fbd912a785e85cbfc5d Mon Sep 17 00:00:00 2001 From: hmhealey Date: Mon, 13 Jul 2015 17:47:57 -0400 Subject: Unify all locations where we determine a user's display named based off of their nickname/username into a helper function --- web/react/components/member_list_team.jsx | 4 ++-- web/react/components/sidebar.jsx | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'web/react/components') diff --git a/web/react/components/member_list_team.jsx b/web/react/components/member_list_team.jsx index 8d69a36d3..6f1d83193 100644 --- a/web/react/components/member_list_team.jsx +++ b/web/react/components/member_list_team.jsx @@ -85,8 +85,8 @@ var MemberListTeamItem = React.createClass({ return (
- {user.nickname.trim() ? user.nickname : user.username} - {user.nickname.trim() ? user.username : email} + {utils.getDisplayName(user)} + {email}
{currentRoles} diff --git a/web/react/components/sidebar.jsx b/web/react/components/sidebar.jsx index 742720048..65727c597 100644 --- a/web/react/components/sidebar.jsx +++ b/web/react/components/sidebar.jsx @@ -131,7 +131,7 @@ function getStateFromStores() { var channel = ChannelStore.getByName(channelName); if (channel != null) { - channel.display_name = teammate.nickname.trim() != "" ? teammate.nickname : teammate.username; + channel.display_name = utils.getDisplayName(teammate); channel.teammate_username = teammate.username; channel.status = UserStore.getStatus(teammate.id); @@ -150,7 +150,7 @@ function getStateFromStores() { var tempChannel = {}; tempChannel.fake = true; tempChannel.name = channelName; - tempChannel.display_name = teammate.nickname.trim() != "" ? teammate.nickname : teammate.username; + tempChannel.display_name = utils.getDisplayName(teammate); tempChannel.status = UserStore.getStatus(teammate.id); tempChannel.last_post_at = 0; readDirectChannels.push(tempChannel); -- cgit v1.2.3-1-g7c22