Skip to content

Commit 8efe43e

Browse files
authored
Merge pull request Expensify#82955 from Expensify/cmartins-filterByEnabledCategories
Filter disabled categories
2 parents 6a7429c + 5cbc38b commit 8efe43e

4 files changed

Lines changed: 15 additions & 4 deletions

File tree

src/pages/settings/Rules/Fields/AddCategoryPage.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import ROUTES from '@src/ROUTES';
1212
import type SCREENS from '@src/SCREENS';
1313
import type {PolicyCategories} from '@src/types/onyx';
1414
import {getEmptyObject} from '@src/types/utils/EmptyObject';
15+
import CONST from '@src/CONST';
1516

1617
type AddCategoryPageProps = PlatformStackScreenProps<SettingsNavigatorParamList, typeof SCREENS.SETTINGS.RULES.EDIT_CATEGORY>;
1718

@@ -34,6 +35,9 @@ function AddCategoryPage({route}: AddCategoryPageProps) {
3435

3536
const categories = Object.values(allPolicyCategories ?? {}).flatMap((policyCategories) => Object.values(policyCategories ?? {}));
3637
for (const category of categories) {
38+
if (!category.enabled || category.pendingAction === CONST.RED_BRICK_ROAD_PENDING_ACTION.DELETE) {
39+
continue;
40+
}
3741
uniqueCategoryNames.add(category.name);
3842
}
3943

src/pages/settings/Rules/RulePageBase.tsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import ROUTES from '@src/ROUTES';
2929
import type {ExpenseRuleForm} from '@src/types/form';
3030
import type {ExpenseRule, PolicyCategories, PolicyTagLists} from '@src/types/onyx';
3131
import getEmptyArray from '@src/types/utils/getEmptyArray';
32+
import {hasEnabledOptions} from '@libs/OptionsListUtils';
3233

3334
type RulePageBaseProps = {
3435
titleKey: TranslationPaths;
@@ -101,7 +102,11 @@ function RulePageBase({titleKey, testID, hash}: RulePageBaseProps) {
101102
const categoriesSelector = useCallback(
102103
(allPolicyCategories: OnyxCollection<PolicyCategories>) => {
103104
const categories = getAvailableNonPersonalPolicyCategories(allPolicyCategories, personalPolicyID);
104-
return Object.values(categories ?? {}).flatMap((policyCategories) => Object.values(policyCategories ?? {})).length > 0;
105+
return (
106+
Object.values(categories ?? {})
107+
.filter((policyCategories) => hasEnabledOptions(policyCategories ?? {}))
108+
.flatMap((policyCategories) => Object.values(policyCategories ?? {})).length > 0
109+
);
105110
},
106111
[personalPolicyID],
107112
);
@@ -165,7 +170,7 @@ function RulePageBase({titleKey, testID, hash}: RulePageBaseProps) {
165170
title: form?.merchant,
166171
onPress: () => navigateTo(CONST.EXPENSE_RULES.FIELDS.RENAME_MERCHANT, hash),
167172
},
168-
hasPolicyCategories
173+
form?.category || hasPolicyCategories
169174
? {
170175
key: 'category',
171176
description: translate('common.category'),

src/pages/workspace/rules/MerchantRules/AddCategoryPage.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import type {SettingsNavigatorParamList} from '@libs/Navigation/types';
99
import ONYXKEYS from '@src/ONYXKEYS';
1010
import ROUTES from '@src/ROUTES';
1111
import type SCREENS from '@src/SCREENS';
12+
import CONST from '@src/CONST';
1213

1314
type AddCategoryPageProps = PlatformStackScreenProps<SettingsNavigatorParamList, typeof SCREENS.WORKSPACE.RULES_MERCHANT_CATEGORY>;
1415

@@ -23,7 +24,7 @@ function AddCategoryPage({route}: AddCategoryPageProps) {
2324

2425
const categoryItems = useMemo(() => {
2526
return Object.values(policyCategories ?? {})
26-
.filter((category) => category.enabled)
27+
.filter((category) => category.enabled && category.pendingAction !== CONST.RED_BRICK_ROAD_PENDING_ACTION.DELETE)
2728
.map((category) => {
2829
const decodedCategoryName = getDecodedCategoryName(category.name);
2930
return {name: decodedCategoryName, value: category.name};

src/pages/workspace/rules/MerchantRules/MerchantRulePageBase.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import type {MerchantRuleForm} from '@src/types/form';
3434
import type {PolicyTagLists} from '@src/types/onyx';
3535
import type {CodingRule} from '@src/types/onyx/Policy';
3636
import getEmptyArray from '@src/types/utils/getEmptyArray';
37+
import {hasEnabledOptions} from '@libs/OptionsListUtils';
3738

3839
type MerchantRulePageBaseProps = {
3940
policyID: string;
@@ -136,7 +137,7 @@ function MerchantRulePageBase({policyID, ruleID, titleKey, testID}: MerchantRule
136137
if (!policy?.areCategoriesEnabled) {
137138
return false;
138139
}
139-
return Object.keys(policyCategories ?? {}).length > 0;
140+
return !!form?.category || hasEnabledOptions(policyCategories ?? {});
140141
};
141142

142143
const hasTags = () => {

0 commit comments

Comments
 (0)