@@ -10,7 +10,7 @@ import useLocalize from '@hooks/useLocalize';
1010import useOnyx from '@hooks/useOnyx' ;
1111import usePolicy from '@hooks/usePolicy' ;
1212import useThemeStyles from '@hooks/useThemeStyles' ;
13- import { getAllValidConnectedIntegration , getDistanceRateCustomUnit , getMemberAccountIDsForWorkspace , getPerDiemCustomUnit } from '@libs/PolicyUtils' ;
13+ import { getDistanceRateCustomUnit , getMemberAccountIDsForWorkspace , getPerDiemCustomUnit } from '@libs/PolicyUtils' ;
1414import { getReportFieldsByPolicyID } from '@libs/ReportUtils' ;
1515import Navigation from '@navigation/Navigation' ;
1616import { openPolicyCategoriesPage } from '@userActions/Policy/Category' ;
@@ -22,9 +22,10 @@ import {openPolicyReportFieldsPage} from '@userActions/Policy/ReportField';
2222import { openPolicyTagsPage } from '@userActions/Policy/Tag' ;
2323import CONST from '@src/CONST' ;
2424import ONYXKEYS from '@src/ONYXKEYS' ;
25+ import ROUTES from '@src/ROUTES' ;
2526import type { Rate } from '@src/types/onyx/Policy' ;
2627import { isEmptyObject } from '@src/types/utils/EmptyObject' ;
27- import { getWorkflowRules , getWorkspaceRules } from './utils' ;
28+ import { getAllValidConnectedIntegration , getWorkflowRules , getWorkspaceRules } from './utils' ;
2829
2930type WorkspaceDuplicateFormProps = {
3031 policyID ?: string ;
@@ -64,7 +65,7 @@ function WorkspaceDuplicateSelectFeaturesForm({policyID}: WorkspaceDuplicateForm
6465 const [ street1 , street2 ] = ( policy ?. address ?. addressStreet ?? '' ) . split ( '\n' ) ;
6566 const formattedAddress =
6667 ! isEmptyObject ( policy ) && ! isEmptyObject ( policy . address )
67- ? `${ street1 ?. trim ( ) } , ${ street2 ? `${ street2 . trim ( ) } , ` : '' } ${ policy . address . city } , ${ policy . address . state } ${ policy . address . zipCode ?? '' } `
68+ ? `, ${ street1 ?. trim ( ) } , ${ street2 ? `${ street2 . trim ( ) } , ` : '' } ${ policy . address . city } , ${ policy . address . state } ${ policy . address . zipCode ?? '' } `
6869 : '' ;
6970
7071 const items = useMemo ( ( ) => {
@@ -150,7 +151,7 @@ function WorkspaceDuplicateSelectFeaturesForm({policyID}: WorkspaceDuplicateForm
150151 ? {
151152 translation : translate ( 'workspace.common.perDiem' ) ,
152153 value : 'perDiem' ,
153- alternateText : allRates ? `${ allRates } ${ translate ( 'workspace.common.perDiem' ) . toLowerCase ( ) } ` : undefined ,
154+ alternateText : allRates ? `${ allRates } ${ translate ( 'workspace.common.perDiem' ) . toLowerCase ( ) } ` : undefined ,
154155 }
155156 : undefined ,
156157 // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
@@ -181,12 +182,15 @@ function WorkspaceDuplicateSelectFeaturesForm({policyID}: WorkspaceDuplicateForm
181182 ] ) ;
182183
183184 const listData : ListItem [ ] = useMemo ( ( ) => {
184- return items . map ( ( option ) => ( {
185- text : option . translation ,
186- keyForList : option . value ,
187- isSelected : selectedItems . includes ( option . value ) ,
188- alternateText : option . alternateText ,
189- } ) ) ;
185+ return items . map ( ( option ) => {
186+ const alternateText = option ?. alternateText ? option . alternateText . trim ( ) . replace ( / , $ / , '' ) : undefined ;
187+ return {
188+ text : option . translation ,
189+ keyForList : option . value ,
190+ isSelected : selectedItems . includes ( option . value ) ,
191+ alternateText,
192+ } ;
193+ } ) ;
190194 } , [ items , selectedItems ] ) ;
191195
192196 const fetchWorkspaceRelatedData = useCallback ( ( ) => {
@@ -203,14 +207,13 @@ function WorkspaceDuplicateSelectFeaturesForm({policyID}: WorkspaceDuplicateForm
203207 openPolicyWorkflowsPage ( policyID ) ;
204208 } , [ policyID , allIds ] ) ;
205209
206- const confirmDuplicateAndHideModal = useCallback ( ( ) => {
207- setIsDuplicateModalOpen ( false ) ;
210+ const confirmDuplicate = useCallback ( ( ) => {
208211 if ( ! policy || ! duplicateWorkspace ?. name || ! duplicateWorkspace ?. policyID ) {
209212 return ;
210213 }
211214 duplicateWorkspaceAction ( policy , {
212215 policyName : duplicateWorkspace . name ,
213- policyID,
216+ policyID : policy . id ,
214217 targetPolicyID : duplicateWorkspace . policyID ,
215218 welcomeNote : `${ translate ( 'workspace.duplicateWorkspace.welcomeNote' ) } ${ duplicateWorkspace . name } ` ,
216219 parts : {
@@ -229,7 +232,23 @@ function WorkspaceDuplicateSelectFeaturesForm({policyID}: WorkspaceDuplicateForm
229232 file : duplicateWorkspace ?. file ,
230233 } ) ;
231234 Navigation . closeRHPFlow ( ) ;
232- } , [ duplicateWorkspace ?. file , duplicateWorkspace ?. name , duplicateWorkspace ?. policyID , policy , policyID , selectedItems , translate ] ) ;
235+ } , [ duplicateWorkspace ?. file , duplicateWorkspace ?. name , duplicateWorkspace ?. policyID , policy , selectedItems , translate ] ) ;
236+
237+ const confirmDuplicateAndHideModal = useCallback ( ( ) => {
238+ setIsDuplicateModalOpen ( false ) ;
239+ if ( ! policy || ! duplicateWorkspace ?. name || ! duplicateWorkspace ?. policyID ) {
240+ return ;
241+ }
242+ confirmDuplicate ( ) ;
243+ } , [ confirmDuplicate , duplicateWorkspace ?. name , duplicateWorkspace ?. policyID , policy ] ) ;
244+
245+ const onConfirmSelectList = useCallback ( ( ) => {
246+ if ( ! totalMembers || totalMembers < 2 || ! selectedItems . includes ( 'members' ) ) {
247+ confirmDuplicate ( ) ;
248+ return ;
249+ }
250+ setIsDuplicateModalOpen ( true ) ;
251+ } , [ confirmDuplicate , selectedItems , totalMembers ] ) ;
233252
234253 const updateSelectedItems = useCallback (
235254 ( listItem : ListItem ) => {
@@ -280,7 +299,10 @@ function WorkspaceDuplicateSelectFeaturesForm({policyID}: WorkspaceDuplicateForm
280299
281300 return (
282301 < >
283- < HeaderWithBackButton title = { translate ( 'workspace.common.duplicateWorkspace' ) } />
302+ < HeaderWithBackButton
303+ onBackButtonPress = { policyID ? ( ) => Navigation . goBack ( ROUTES . WORKSPACE_DUPLICATE . getRoute ( policyID , ROUTES . WORKSPACES_LIST . route ) ) : undefined }
304+ title = { translate ( 'workspace.common.duplicateWorkspace' ) }
305+ />
284306 < >
285307 < View style = { [ styles . ph5 , styles . pv3 ] } >
286308 < Text style = { [ styles . textHeadline ] } > { translate ( 'workspace.duplicateWorkspace.selectFeatures' ) } </ Text >
@@ -296,7 +318,7 @@ function WorkspaceDuplicateSelectFeaturesForm({policyID}: WorkspaceDuplicateForm
296318 addBottomSafeAreaPadding
297319 showConfirmButton
298320 confirmButtonText = { translate ( 'common.next' ) }
299- onConfirm = { ( ) => setIsDuplicateModalOpen ( true ) }
321+ onConfirm = { onConfirmSelectList }
300322 />
301323 </ View >
302324 </ >
0 commit comments