diff --git a/src/pages/workspace/categories/CategorySettingsPage.tsx b/src/pages/workspace/categories/CategorySettingsPage.tsx index 21741a417a26..33f3e82ed05f 100644 --- a/src/pages/workspace/categories/CategorySettingsPage.tsx +++ b/src/pages/workspace/categories/CategorySettingsPage.tsx @@ -1,7 +1,7 @@ import type {StackScreenProps} from '@react-navigation/stack'; import React, {useState} from 'react'; import {View} from 'react-native'; -import {withOnyx} from 'react-native-onyx'; +import {useOnyx, withOnyx} from 'react-native-onyx'; import type {OnyxEntry} from 'react-native-onyx'; import ConfirmModal from '@components/ConfirmModal'; import HeaderWithBackButton from '@components/HeaderWithBackButton'; @@ -39,6 +39,7 @@ function CategorySettingsPage({route, policyCategories}: CategorySettingsPagePro const {translate} = useLocalize(); const {windowWidth} = useWindowDimensions(); const [deleteCategoryConfirmModalVisible, setDeleteCategoryConfirmModalVisible] = useState(false); + const [policy] = useOnyx(`${ONYXKEYS.COLLECTION.POLICY}${route.params.policyID}`); const policyCategory = policyCategories?.[route.params.categoryName]; @@ -60,13 +61,15 @@ function CategorySettingsPage({route, policyCategories}: CategorySettingsPagePro Navigation.dismissModal(); }; - const threeDotsMenuItems = [ - { + const isThereAnyAccountingConnection = Object.keys(policy?.connections ?? {}).length !== 0; + const threeDotsMenuItems = []; + if (!isThereAnyAccountingConnection) { + threeDotsMenuItems.push({ icon: Expensicons.Trashcan, text: translate('workspace.categories.deleteCategory'), onSelected: () => setDeleteCategoryConfirmModalVisible(true), - }, - ]; + }); + } return ( 0} title={route.params.categoryName} threeDotsAnchorPosition={styles.threeDotsPopoverOffsetNoCloseButton(windowWidth)} threeDotsMenuItems={threeDotsMenuItems} diff --git a/src/pages/workspace/categories/WorkspaceCategoriesPage.tsx b/src/pages/workspace/categories/WorkspaceCategoriesPage.tsx index 053a629a4c98..3991e19c3bae 100644 --- a/src/pages/workspace/categories/WorkspaceCategoriesPage.tsx +++ b/src/pages/workspace/categories/WorkspaceCategoriesPage.tsx @@ -151,14 +151,17 @@ function WorkspaceCategoriesPage({policy, route}: WorkspaceCategoriesPageProps) const getHeaderButtons = () => { const options: Array>> = []; + const isThereAnyAccountingConnection = Object.keys(policy?.connections ?? {}).length !== 0; if (selectedCategoriesArray.length > 0) { - options.push({ - icon: Expensicons.Trashcan, - text: translate(selectedCategoriesArray.length === 1 ? 'workspace.categories.deleteCategory' : 'workspace.categories.deleteCategories'), - value: CONST.POLICY.CATEGORIES_BULK_ACTION_TYPES.DELETE, - onSelected: () => setDeleteCategoriesConfirmModalVisible(true), - }); + if (!isThereAnyAccountingConnection) { + options.push({ + icon: Expensicons.Trashcan, + text: translate(selectedCategoriesArray.length === 1 ? 'workspace.categories.deleteCategory' : 'workspace.categories.deleteCategories'), + value: CONST.POLICY.CATEGORIES_BULK_ACTION_TYPES.DELETE, + onSelected: () => setDeleteCategoriesConfirmModalVisible(true), + }); + } const enabledCategories = selectedCategoriesArray.filter((categoryName) => policyCategories?.[categoryName]?.enabled); if (enabledCategories.length > 0) { diff --git a/src/pages/workspace/tags/TagSettingsPage.tsx b/src/pages/workspace/tags/TagSettingsPage.tsx index ed88a1a9b636..54316efbc14b 100644 --- a/src/pages/workspace/tags/TagSettingsPage.tsx +++ b/src/pages/workspace/tags/TagSettingsPage.tsx @@ -1,7 +1,7 @@ import type {StackScreenProps} from '@react-navigation/stack'; import React, {useMemo} from 'react'; import {View} from 'react-native'; -import {withOnyx} from 'react-native-onyx'; +import {useOnyx, withOnyx} from 'react-native-onyx'; import type {OnyxEntry} from 'react-native-onyx'; import ConfirmModal from '@components/ConfirmModal'; import HeaderWithBackButton from '@components/HeaderWithBackButton'; @@ -39,6 +39,7 @@ function TagSettingsPage({route, policyTags}: TagSettingsPageProps) { const styles = useThemeStyles(); const {translate} = useLocalize(); const policyTag = useMemo(() => PolicyUtils.getTagList(policyTags, 0), [policyTags]); + const [policy] = useOnyx(`${ONYXKEYS.COLLECTION.POLICY}${route.params.policyID}`); const {windowWidth} = useWindowDimensions(); @@ -64,6 +65,16 @@ function TagSettingsPage({route, policyTags}: TagSettingsPageProps) { Navigation.navigate(ROUTES.WORKSPACE_TAG_EDIT.getRoute(route.params.policyID, currentPolicyTag.name)); }; + const isThereAnyAccountingConnection = Object.keys(policy?.connections ?? {}).length !== 0; + const threeDotsMenuItems = []; + if (!isThereAnyAccountingConnection) { + threeDotsMenuItems.push({ + icon: Trashcan, + text: translate('workspace.tags.deleteTag'), + onSelected: () => setIsDeleteTagModalOpen(true), + }); + } + return ( 0} shouldSetModalVisibility={false} threeDotsAnchorPosition={styles.threeDotsPopoverOffset(windowWidth)} - threeDotsMenuItems={[ - { - icon: Trashcan, - text: translate('workspace.tags.deleteTag'), - onSelected: () => setIsDeleteTagModalOpen(true), - }, - ]} + threeDotsMenuItems={threeDotsMenuItems} /> { const options: Array>> = []; + const isThereAnyAccountingConnection = Object.keys(policy?.connections ?? {}).length !== 0; if (selectedTagsArray.length > 0) { - options.push({ - icon: Expensicons.Trashcan, - text: translate(selectedTagsArray.length === 1 ? 'workspace.tags.deleteTag' : 'workspace.tags.deleteTags'), - value: CONST.POLICY.TAGS_BULK_ACTION_TYPES.DELETE, - onSelected: () => setDeleteTagsConfirmModalVisible(true), - }); + if (!isThereAnyAccountingConnection) { + options.push({ + icon: Expensicons.Trashcan, + text: translate(selectedTagsArray.length === 1 ? 'workspace.tags.deleteTag' : 'workspace.tags.deleteTags'), + value: CONST.POLICY.TAGS_BULK_ACTION_TYPES.DELETE, + onSelected: () => setDeleteTagsConfirmModalVisible(true), + }); + } const enabledTags = selectedTagsArray.filter((tagName) => tagListKeyedByName?.[tagName]?.enabled); if (enabledTags.length > 0) {