diff --git a/src/pages/settings/Rules/Fields/AddCategoryPage.tsx b/src/pages/settings/Rules/Fields/AddCategoryPage.tsx index 47e2cd93fe45..a02c1e55b9f7 100644 --- a/src/pages/settings/Rules/Fields/AddCategoryPage.tsx +++ b/src/pages/settings/Rules/Fields/AddCategoryPage.tsx @@ -12,6 +12,7 @@ import ROUTES from '@src/ROUTES'; import type SCREENS from '@src/SCREENS'; import type {PolicyCategories} from '@src/types/onyx'; import {getEmptyObject} from '@src/types/utils/EmptyObject'; +import CONST from '@src/CONST'; type AddCategoryPageProps = PlatformStackScreenProps; @@ -34,6 +35,9 @@ function AddCategoryPage({route}: AddCategoryPageProps) { const categories = Object.values(allPolicyCategories ?? {}).flatMap((policyCategories) => Object.values(policyCategories ?? {})); for (const category of categories) { + if (!category.enabled || category.pendingAction === CONST.RED_BRICK_ROAD_PENDING_ACTION.DELETE) { + continue; + } uniqueCategoryNames.add(category.name); } diff --git a/src/pages/settings/Rules/RulePageBase.tsx b/src/pages/settings/Rules/RulePageBase.tsx index 41cbc3b16f07..d3b800c5d402 100644 --- a/src/pages/settings/Rules/RulePageBase.tsx +++ b/src/pages/settings/Rules/RulePageBase.tsx @@ -29,6 +29,7 @@ import ROUTES from '@src/ROUTES'; import type {ExpenseRuleForm} from '@src/types/form'; import type {ExpenseRule, PolicyCategories, PolicyTagLists} from '@src/types/onyx'; import getEmptyArray from '@src/types/utils/getEmptyArray'; +import {hasEnabledOptions} from '@libs/OptionsListUtils'; type RulePageBaseProps = { titleKey: TranslationPaths; @@ -101,7 +102,11 @@ function RulePageBase({titleKey, testID, hash}: RulePageBaseProps) { const categoriesSelector = useCallback( (allPolicyCategories: OnyxCollection) => { const categories = getAvailableNonPersonalPolicyCategories(allPolicyCategories, personalPolicyID); - return Object.values(categories ?? {}).flatMap((policyCategories) => Object.values(policyCategories ?? {})).length > 0; + return ( + Object.values(categories ?? {}) + .filter((policyCategories) => hasEnabledOptions(policyCategories ?? {})) + .flatMap((policyCategories) => Object.values(policyCategories ?? {})).length > 0 + ); }, [personalPolicyID], ); @@ -165,7 +170,7 @@ function RulePageBase({titleKey, testID, hash}: RulePageBaseProps) { title: form?.merchant, onPress: () => navigateTo(CONST.EXPENSE_RULES.FIELDS.RENAME_MERCHANT, hash), }, - hasPolicyCategories + form?.category || hasPolicyCategories ? { key: 'category', description: translate('common.category'), diff --git a/src/pages/workspace/rules/MerchantRules/AddCategoryPage.tsx b/src/pages/workspace/rules/MerchantRules/AddCategoryPage.tsx index 8099340ea8f1..ac5802d03af4 100644 --- a/src/pages/workspace/rules/MerchantRules/AddCategoryPage.tsx +++ b/src/pages/workspace/rules/MerchantRules/AddCategoryPage.tsx @@ -9,6 +9,7 @@ import type {SettingsNavigatorParamList} from '@libs/Navigation/types'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; import type SCREENS from '@src/SCREENS'; +import CONST from '@src/CONST'; type AddCategoryPageProps = PlatformStackScreenProps; @@ -23,7 +24,7 @@ function AddCategoryPage({route}: AddCategoryPageProps) { const categoryItems = useMemo(() => { return Object.values(policyCategories ?? {}) - .filter((category) => category.enabled) + .filter((category) => category.enabled && category.pendingAction !== CONST.RED_BRICK_ROAD_PENDING_ACTION.DELETE) .map((category) => { const decodedCategoryName = getDecodedCategoryName(category.name); return {name: decodedCategoryName, value: category.name}; diff --git a/src/pages/workspace/rules/MerchantRules/MerchantRulePageBase.tsx b/src/pages/workspace/rules/MerchantRules/MerchantRulePageBase.tsx index cf620584e013..e458a7116478 100644 --- a/src/pages/workspace/rules/MerchantRules/MerchantRulePageBase.tsx +++ b/src/pages/workspace/rules/MerchantRules/MerchantRulePageBase.tsx @@ -34,6 +34,7 @@ import type {MerchantRuleForm} from '@src/types/form'; import type {PolicyTagLists} from '@src/types/onyx'; import type {CodingRule} from '@src/types/onyx/Policy'; import getEmptyArray from '@src/types/utils/getEmptyArray'; +import {hasEnabledOptions} from '@libs/OptionsListUtils'; type MerchantRulePageBaseProps = { policyID: string; @@ -136,7 +137,7 @@ function MerchantRulePageBase({policyID, ruleID, titleKey, testID}: MerchantRule if (!policy?.areCategoriesEnabled) { return false; } - return Object.keys(policyCategories ?? {}).length > 0; + return !!form?.category || hasEnabledOptions(policyCategories ?? {}); }; const hasTags = () => {