diff --git a/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx b/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx index 5b356f768dd3..2f93c7416479 100644 --- a/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx +++ b/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx @@ -78,6 +78,13 @@ function WorkspaceMoreFeaturesPage({policy, route}: WorkspaceMoreFeaturesPagePro const [isDisableExpensifyCardWarningModalOpen, setIsDisableExpensifyCardWarningModalOpen] = useState(false); const [isDisableCompanyCardsWarningModalOpen, setIsDisableCompanyCardsWarningModalOpen] = useState(false); + const onDisabledOrganizeSwitchPress = useCallback(() => { + if (!hasAccountingConnection) { + return; + } + setIsOrganizeWarningModalOpen(true); + }, [hasAccountingConnection]); + const spendItems: Item[] = [ { icon: Illustrations.Car, @@ -199,15 +206,12 @@ function WorkspaceMoreFeaturesPage({policy, route}: WorkspaceMoreFeaturesPagePro subtitleTranslationKey: 'workspace.moreFeatures.categories.subtitle', isActive: policy?.areCategoriesEnabled ?? false, disabled: hasAccountingConnection, + disabledAction: onDisabledOrganizeSwitchPress, pendingAction: policy?.pendingFields?.areCategoriesEnabled, action: (isEnabled: boolean) => { if (!policyID) { return; } - if (hasAccountingConnection) { - setIsOrganizeWarningModalOpen(true); - return; - } Category.enablePolicyCategories(policyID, isEnabled); }, }, @@ -218,14 +222,11 @@ function WorkspaceMoreFeaturesPage({policy, route}: WorkspaceMoreFeaturesPagePro isActive: policy?.areTagsEnabled ?? false, disabled: hasAccountingConnection, pendingAction: policy?.pendingFields?.areTagsEnabled, + disabledAction: onDisabledOrganizeSwitchPress, action: (isEnabled: boolean) => { if (!policyID) { return; } - if (hasAccountingConnection) { - setIsOrganizeWarningModalOpen(true); - return; - } Tag.enablePolicyTags(policyID, isEnabled); }, }, @@ -236,14 +237,11 @@ function WorkspaceMoreFeaturesPage({policy, route}: WorkspaceMoreFeaturesPagePro isActive: (policy?.tax?.trackingEnabled ?? false) || isSyncTaxEnabled, disabled: hasAccountingConnection, pendingAction: policy?.pendingFields?.tax, + disabledAction: onDisabledOrganizeSwitchPress, action: (isEnabled: boolean) => { if (!policyID) { return; } - if (hasAccountingConnection) { - setIsOrganizeWarningModalOpen(true); - return; - } Policy.enablePolicyTaxes(policyID, isEnabled); }, }, @@ -254,14 +252,11 @@ function WorkspaceMoreFeaturesPage({policy, route}: WorkspaceMoreFeaturesPagePro isActive: policy?.areReportFieldsEnabled ?? false, disabled: hasAccountingConnection, pendingAction: policy?.pendingFields?.areReportFieldsEnabled, + disabledAction: onDisabledOrganizeSwitchPress, action: (isEnabled: boolean) => { if (!policyID) { return; } - if (hasAccountingConnection) { - setIsOrganizeWarningModalOpen(true); - return; - } if (isEnabled) { if (!isControlPolicy(policy)) { Navigation.navigate( @@ -285,12 +280,14 @@ function WorkspaceMoreFeaturesPage({policy, route}: WorkspaceMoreFeaturesPagePro subtitleTranslationKey: 'workspace.moreFeatures.connections.subtitle', isActive: isAccountingEnabled, pendingAction: policy?.pendingFields?.areConnectionsEnabled, - action: (isEnabled: boolean) => { - if (!policyID) { + disabledAction: () => { + if (!hasAccountingConnection) { return; } - if (hasAccountingConnection) { - setIsIntegrateWarningModalOpen(true); + setIsIntegrateWarningModalOpen(true); + }, + action: (isEnabled: boolean) => { + if (!policyID) { return; } Policy.enablePolicyConnections(policyID, isEnabled);