From 8d737cb52e66e17c01cff63261a06c8c335250e9 Mon Sep 17 00:00:00 2001 From: Carlos Martins Date: Mon, 11 Dec 2023 11:03:10 -0700 Subject: [PATCH 1/3] use state for selected participants --- ...yTemporaryForRefactorRequestParticipantsSelector.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/pages/iou/request/MoneyTemporaryForRefactorRequestParticipantsSelector.js b/src/pages/iou/request/MoneyTemporaryForRefactorRequestParticipantsSelector.js index 165852062c54..15f0926a15f8 100644 --- a/src/pages/iou/request/MoneyTemporaryForRefactorRequestParticipantsSelector.js +++ b/src/pages/iou/request/MoneyTemporaryForRefactorRequestParticipantsSelector.js @@ -97,6 +97,7 @@ function MoneyTemporaryForRefactorRequestParticipantsSelector({ personalDetails: [], userToInvite: null, }); + const [selectedOptions, setSelectedOptions] = useState(participants); const {isOffline} = useNetwork(); const maxParticipantsReached = participants.length === CONST.REPORT.MAXIMUM_PARTICIPANTS; @@ -112,7 +113,7 @@ function MoneyTemporaryForRefactorRequestParticipantsSelector({ const formatResults = OptionsListUtils.formatSectionsFromSearchTerm( searchTerm, - participants, + selectedOptions, newChatOptions.recentReports, newChatOptions.personalDetails, personalDetails, @@ -155,7 +156,7 @@ function MoneyTemporaryForRefactorRequestParticipantsSelector({ } return newSections; - }, [maxParticipantsReached, newChatOptions, participants, personalDetails, translate, searchTerm]); + }, [maxParticipantsReached, newChatOptions, selectedOptions, personalDetails, translate, searchTerm]); /** * Adds a single participant to the request @@ -207,7 +208,7 @@ function MoneyTemporaryForRefactorRequestParticipantsSelector({ }, ]; } - + setSelectedOptions(newSelectedOptions); onParticipantsAdded(newSelectedOptions); const chatOptions = OptionsListUtils.getFilteredOptions( @@ -268,6 +269,7 @@ function MoneyTemporaryForRefactorRequestParticipantsSelector({ true, true, ); + setSelectedOptions(participants); setNewChatOptions({ recentReports: chatOptions.recentReports, personalDetails: chatOptions.personalDetails, @@ -325,7 +327,7 @@ function MoneyTemporaryForRefactorRequestParticipantsSelector({ multipleOptionSelectorButtonText={translate('iou.split')} onAddToSelection={addParticipantToSelection} sections={sections} - selectedOptions={participants} + selectedOptions={selectedOptions} value={searchTerm} onSelectRow={addSingleParticipant} onChangeText={setSearchTermAndSearchInServer} From daf7cbee96c27eff64c49a6ac0dbc852766ffb24 Mon Sep 17 00:00:00 2001 From: Carlos Martins Date: Mon, 11 Dec 2023 11:10:15 -0700 Subject: [PATCH 2/3] rm unecessary chatOptions computation --- ...yForRefactorRequestParticipantsSelector.js | 34 +++---------------- 1 file changed, 5 insertions(+), 29 deletions(-) diff --git a/src/pages/iou/request/MoneyTemporaryForRefactorRequestParticipantsSelector.js b/src/pages/iou/request/MoneyTemporaryForRefactorRequestParticipantsSelector.js index 15f0926a15f8..fcc524b9b990 100644 --- a/src/pages/iou/request/MoneyTemporaryForRefactorRequestParticipantsSelector.js +++ b/src/pages/iou/request/MoneyTemporaryForRefactorRequestParticipantsSelector.js @@ -97,7 +97,6 @@ function MoneyTemporaryForRefactorRequestParticipantsSelector({ personalDetails: [], userToInvite: null, }); - const [selectedOptions, setSelectedOptions] = useState(participants); const {isOffline} = useNetwork(); const maxParticipantsReached = participants.length === CONST.REPORT.MAXIMUM_PARTICIPANTS; @@ -113,7 +112,7 @@ function MoneyTemporaryForRefactorRequestParticipantsSelector({ const formatResults = OptionsListUtils.formatSectionsFromSearchTerm( searchTerm, - selectedOptions, + participants, newChatOptions.recentReports, newChatOptions.personalDetails, personalDetails, @@ -156,7 +155,7 @@ function MoneyTemporaryForRefactorRequestParticipantsSelector({ } return newSections; - }, [maxParticipantsReached, newChatOptions, selectedOptions, personalDetails, translate, searchTerm]); + }, [maxParticipantsReached, newChatOptions, participants, personalDetails, translate, searchTerm]); /** * Adds a single participant to the request @@ -208,32 +207,10 @@ function MoneyTemporaryForRefactorRequestParticipantsSelector({ }, ]; } - setSelectedOptions(newSelectedOptions); - onParticipantsAdded(newSelectedOptions); - const chatOptions = OptionsListUtils.getFilteredOptions( - reports, - personalDetails, - betas, - isOptionInList ? searchTerm : '', - newSelectedOptions, - CONST.EXPENSIFY_EMAILS, - - // If we are using this component in the "Request money" flow then we pass the includeOwnedWorkspaceChats argument so that the current user - // sees the option to request money from their admin on their own Workspace Chat. - iouType === CONST.IOU.TYPE.REQUEST, - - // We don't want to include any P2P options like personal details or reports that are not workspace chats for certain features. - iouType !== CONST.IOU.REQUEST_TYPE.DISTANCE, - ); - - setNewChatOptions({ - recentReports: chatOptions.recentReports, - personalDetails: chatOptions.personalDetails, - userToInvite: chatOptions.userToInvite, - }); + onParticipantsAdded(newSelectedOptions); }, - [participants, onParticipantsAdded, reports, personalDetails, betas, searchTerm, iouType], + [participants, onParticipantsAdded], ); const headerMessage = OptionsListUtils.getHeaderMessage( @@ -269,7 +246,6 @@ function MoneyTemporaryForRefactorRequestParticipantsSelector({ true, true, ); - setSelectedOptions(participants); setNewChatOptions({ recentReports: chatOptions.recentReports, personalDetails: chatOptions.personalDetails, @@ -327,7 +303,7 @@ function MoneyTemporaryForRefactorRequestParticipantsSelector({ multipleOptionSelectorButtonText={translate('iou.split')} onAddToSelection={addParticipantToSelection} sections={sections} - selectedOptions={selectedOptions} + selectedOptions={participants} value={searchTerm} onSelectRow={addSingleParticipant} onChangeText={setSearchTermAndSearchInServer} From 9d1f3b8760147459d445212b2263c94599ff3bbe Mon Sep 17 00:00:00 2001 From: Carlos Martins Date: Mon, 11 Dec 2023 11:16:36 -0700 Subject: [PATCH 3/3] do not invite users for distance requests --- .../MoneyTemporaryForRefactorRequestParticipantsSelector.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/pages/iou/request/MoneyTemporaryForRefactorRequestParticipantsSelector.js b/src/pages/iou/request/MoneyTemporaryForRefactorRequestParticipantsSelector.js index fcc524b9b990..95fa64723737 100644 --- a/src/pages/iou/request/MoneyTemporaryForRefactorRequestParticipantsSelector.js +++ b/src/pages/iou/request/MoneyTemporaryForRefactorRequestParticipantsSelector.js @@ -243,7 +243,10 @@ function MoneyTemporaryForRefactorRequestParticipantsSelector({ false, {}, [], - true, + + // We don't want the user to be able to invite individuals when they are in the "Distance request" flow for now. + // This functionality is being built here: https://github.com/Expensify/App/issues/23291 + iouRequestType !== CONST.IOU.REQUEST_TYPE.DISTANCE, true, ); setNewChatOptions({