From 5bcf8f75765f174daf47b877de9f5ef277118395 Mon Sep 17 00:00:00 2001 From: Saturnino Abril Date: Fri, 8 Mar 2019 22:45:08 +0800 Subject: [PATCH] fix multiple text entries when typing with Shift+Letter on Android (#2634) --- .../channel_add_members.js | 10 ++++---- .../channel_members/channel_members.js | 10 ++++---- app/screens/more_channels/more_channels.js | 12 +++++----- app/screens/more_dms/more_dms.js | 13 +++++------ .../selector_screen/selector_screen.js | 23 +++++++++---------- 5 files changed, 31 insertions(+), 37 deletions(-) diff --git a/app/screens/channel_add_members/channel_add_members.js b/app/screens/channel_add_members/channel_add_members.js index 3143de2f4..2d76200d2 100644 --- a/app/screens/channel_add_members/channel_add_members.js +++ b/app/screens/channel_add_members/channel_add_members.js @@ -191,14 +191,12 @@ export default class ChannelAddMembers extends PureComponent { }; onSearch = (text) => { - const term = text.toLowerCase(); - - if (term) { - this.setState({term}); + if (text) { + this.setState({term: text}); clearTimeout(this.searchTimeoutId); this.searchTimeoutId = setTimeout(() => { - this.searchProfiles(term); + this.searchProfiles(text); }, General.SEARCH_TIMEOUT_MILLISECONDS); } else { this.clearSearch(); @@ -264,7 +262,7 @@ export default class ChannelAddMembers extends PureComponent { const options = {not_in_channel_id: currentChannelId, team_id: currentTeamId}; this.setState({loading: true}); - actions.searchProfiles(term, options).then(({data}) => { + actions.searchProfiles(term.toLowerCase(), options).then(({data}) => { this.setState({searchResults: data, loading: false}); }); }; diff --git a/app/screens/channel_members/channel_members.js b/app/screens/channel_members/channel_members.js index e897fae18..1eb4fc40d 100644 --- a/app/screens/channel_members/channel_members.js +++ b/app/screens/channel_members/channel_members.js @@ -197,14 +197,12 @@ export default class ChannelMembers extends PureComponent { }; onSearch = (text) => { - const term = text.toLowerCase(); - - if (term) { - this.setState({term}); + if (text) { + this.setState({term: text}); clearTimeout(this.searchTimeoutId); this.searchTimeoutId = setTimeout(() => { - this.searchProfiles(term); + this.searchProfiles(text); }, General.SEARCH_TIMEOUT_MILLISECONDS); } else { this.clearSearch(); @@ -287,7 +285,7 @@ export default class ChannelMembers extends PureComponent { const options = {in_channel_id: currentChannelId}; this.setState({loading: true}); - actions.searchProfiles(term, options).then(({data}) => { + actions.searchProfiles(term.toLowerCase(), options).then(({data}) => { this.setState({searchResults: data, loading: false}); }); }; diff --git a/app/screens/more_channels/more_channels.js b/app/screens/more_channels/more_channels.js index dfa0d8c29..d1eacc941 100644 --- a/app/screens/more_channels/more_channels.js +++ b/app/screens/more_channels/more_channels.js @@ -132,8 +132,9 @@ export default class MoreChannels extends PureComponent { }; filterChannels = (channels, term) => { + const lowerCasedTerm = term.toLowerCase(); return channels.filter((c) => { - return (c.name.toLowerCase().includes(term) || c.display_name.toLowerCase().includes(term)); + return (c.name.toLowerCase().includes(lowerCasedTerm) || c.display_name.toLowerCase().includes(lowerCasedTerm)); }); }; @@ -289,18 +290,17 @@ export default class MoreChannels extends PureComponent { searchChannels = (text) => { const {actions, channels, currentTeamId} = this.props; - const term = text.toLowerCase(); - if (term) { - const filtered = this.filterChannels(channels, term); + if (text) { + const filtered = this.filterChannels(channels, text); this.setState({ channels: filtered, - term, + term: text, }); clearTimeout(this.searchTimeoutId); this.searchTimeoutId = setTimeout(() => { - actions.searchChannels(currentTeamId, term); + actions.searchChannels(currentTeamId, text.toLowerCase()); }, General.SEARCH_TIMEOUT_MILLISECONDS); } else { this.cancelSearch(); diff --git a/app/screens/more_dms/more_dms.js b/app/screens/more_dms/more_dms.js index d0a7cf1d1..f16f5e99a 100644 --- a/app/screens/more_dms/more_dms.js +++ b/app/screens/more_dms/more_dms.js @@ -246,14 +246,12 @@ export default class MoreDirectMessages extends PureComponent { }; onSearch = (text) => { - const term = text.toLowerCase(); - - if (term) { - this.setState({term}); + if (text) { + this.setState({term: text}); clearTimeout(this.searchTimeoutId); this.searchTimeoutId = setTimeout(() => { - this.searchProfiles(term); + this.searchProfiles(text); }, General.SEARCH_TIMEOUT_MILLISECONDS); } else { this.clearSearch(); @@ -261,15 +259,16 @@ export default class MoreDirectMessages extends PureComponent { }; searchProfiles = (term) => { + const lowerCasedTerm = term.toLowerCase(); const {actions, currentTeamId, restrictDirectMessage} = this.props; this.setState({loading: true}); if (restrictDirectMessage) { - actions.searchProfiles(term).then(({data}) => { + actions.searchProfiles(lowerCasedTerm).then(({data}) => { this.setState({searchResults: data, loading: false}); }); } else { - actions.searchProfiles(term, {team_id: currentTeamId}).then(({data}) => { + actions.searchProfiles(lowerCasedTerm, {team_id: currentTeamId}).then(({data}) => { this.setState({searchResults: data, loading: false}); }); } diff --git a/app/screens/selector_screen/selector_screen.js b/app/screens/selector_screen/selector_screen.js index f30592a5b..fcbd1d447 100644 --- a/app/screens/selector_screen/selector_screen.js +++ b/app/screens/selector_screen/selector_screen.js @@ -178,23 +178,21 @@ export default class SelectorScreen extends PureComponent { }; onSearch = (text) => { - const term = text.toLowerCase(); - - if (term) { + if (text) { const {dataSource, data} = this.props; - this.setState({term}); + this.setState({term: text}); clearTimeout(this.searchTimeoutId); this.searchTimeoutId = setTimeout(() => { if (!dataSource) { - this.setState({searchResults: filterSearchData(null, data, term)}); + this.setState({searchResults: filterSearchData(null, data, text)}); return; } if (dataSource === ViewTypes.DATA_SOURCE_USERS) { - this.searchProfiles(term); + this.searchProfiles(text); } else if (dataSource === ViewTypes.DATA_SOURCE_CHANNELS) { - this.searchChannels(term); + this.searchChannels(text); } }, General.SEARCH_TIMEOUT_MILLISECONDS); } else { @@ -205,7 +203,7 @@ export default class SelectorScreen extends PureComponent { searchChannels = (term) => { const {actions, currentTeamId} = this.props; - actions.searchChannels(currentTeamId, term).then(({data}) => { + actions.searchChannels(currentTeamId, term.toLowerCase()).then(({data}) => { this.setState({searchResults: data, loading: false}); }); }; @@ -214,7 +212,7 @@ export default class SelectorScreen extends PureComponent { const {actions} = this.props; this.setState({loading: true}); - actions.searchProfiles(term).then(({data}) => { + actions.searchProfiles(term.toLowerCase()).then(({data}) => { this.setState({searchResults: data, loading: false}); }); }; @@ -380,11 +378,12 @@ const filterSearchData = memoizeResult((dataSource, data, term) => { return []; } + const lowerCasedTerm = term.toLowerCase(); if (dataSource === ViewTypes.DATA_SOURCE_USERS) { - return filterProfilesMatchingTerm(data, term); + return filterProfilesMatchingTerm(data, lowerCasedTerm); } else if (dataSource === ViewTypes.DATA_SOURCE_CHANNELS) { - return filterChannelsMatchingTerm(data, term); + return filterChannelsMatchingTerm(data, lowerCasedTerm); } - return data.filter((option) => option.text && option.text.toLowerCase().startsWith(term)); + return data.filter((option) => option.text && option.text.toLowerCase().startsWith(lowerCasedTerm)); });