Skip to content

Commit ddc915f

Browse files
authored
Merge pull request Expensify#67715 from DylanDylann/remove-onyx-connect-in-category
Remove Onyx.connect() for the key: ONYXKEYS.COLLECTION.POLICY in src/libs/actions/Policy/Category.ts
2 parents 01140d3 + 7a5bd8d commit ddc915f

3 files changed

Lines changed: 9 additions & 44 deletions

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
"test:debug": "TZ=utc NODE_OPTIONS='--inspect-brk --experimental-vm-modules' jest --runInBand",
4747
"perf-test": "NODE_OPTIONS=--experimental-vm-modules npx reassure",
4848
"typecheck": "NODE_OPTIONS=--max_old_space_size=8192 tsc",
49-
"lint": "NODE_OPTIONS=--max_old_space_size=8192 eslint . --max-warnings=302 --cache --cache-location=node_modules/.cache/eslint",
49+
"lint": "NODE_OPTIONS=--max_old_space_size=8192 eslint . --max-warnings=301 --cache --cache-location=node_modules/.cache/eslint",
5050
"lint-changed": "NODE_OPTIONS=--max_old_space_size=8192 ./scripts/lintChanged.sh",
5151
"lint-watch": "npx eslint-watch --watch --changed",
5252
"shellcheck": "./scripts/shellCheck.sh",

src/libs/actions/Policy/Category.ts

Lines changed: 4 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import lodashCloneDeep from 'lodash/cloneDeep';
22
import lodashUnion from 'lodash/union';
3-
import type {NullishDeep, OnyxCollection, OnyxUpdate} from 'react-native-onyx';
3+
import type {OnyxCollection, OnyxUpdate} from 'react-native-onyx';
44
import Onyx from 'react-native-onyx';
55
import type {PartialDeep} from 'type-fest';
66
import * as API from '@libs/API';
@@ -29,48 +29,15 @@ import Log from '@libs/Log';
2929
import enhanceParameters from '@libs/Network/enhanceParameters';
3030
import {hasEnabledOptions} from '@libs/OptionsListUtils';
3131
import {getPolicy, goBackWhenEnableFeature} from '@libs/PolicyUtils';
32-
import {getAllPolicyReports, pushTransactionViolationsOnyxData} from '@libs/ReportUtils';
32+
import {pushTransactionViolationsOnyxData} from '@libs/ReportUtils';
3333
import {getFinishOnboardingTaskOnyxData} from '@userActions/Task';
3434
import CONST from '@src/CONST';
3535
import ONYXKEYS from '@src/ONYXKEYS';
36-
import type {Policy, PolicyCategories, PolicyCategory, PolicyTagLists, RecentlyUsedCategories, Report, TransactionViolations} from '@src/types/onyx';
36+
import type {Policy, PolicyCategories, PolicyCategory, PolicyTagLists, RecentlyUsedCategories, TransactionViolations} from '@src/types/onyx';
3737
import type {ApprovalRule, ExpenseRule, MccGroup} from '@src/types/onyx/Policy';
3838
import type {PolicyCategoryExpenseLimitType} from '@src/types/onyx/PolicyCategory';
3939
import type {OnyxData} from '@src/types/onyx/Request';
4040

41-
const allPolicies: OnyxCollection<Policy> = {};
42-
Onyx.connect({
43-
key: ONYXKEYS.COLLECTION.POLICY,
44-
callback: (val, key) => {
45-
if (!key) {
46-
return;
47-
}
48-
if (val === null || val === undefined) {
49-
// If we are deleting a policy, we have to check every report linked to that policy
50-
// and unset the draft indicator (pencil icon) alongside removing any draft comments. Clearing these values will keep the newly archived chats from being displayed in the LHN.
51-
// More info: https://github.com/Expensify/App/issues/14260
52-
const policyID = key.replace(ONYXKEYS.COLLECTION.POLICY, '');
53-
const policyReports = getAllPolicyReports(policyID);
54-
const cleanUpMergeQueries: Record<`${typeof ONYXKEYS.COLLECTION.REPORT}${string}`, NullishDeep<Report>> = {};
55-
const cleanUpSetQueries: Record<`${typeof ONYXKEYS.COLLECTION.REPORT_DRAFT_COMMENT}${string}` | `${typeof ONYXKEYS.COLLECTION.REPORT_ACTIONS_DRAFTS}${string}`, null> = {};
56-
policyReports.forEach((policyReport) => {
57-
if (!policyReport) {
58-
return;
59-
}
60-
const {reportID} = policyReport;
61-
cleanUpSetQueries[`${ONYXKEYS.COLLECTION.REPORT_DRAFT_COMMENT}${reportID}`] = null;
62-
cleanUpSetQueries[`${ONYXKEYS.COLLECTION.REPORT_ACTIONS_DRAFTS}${reportID}`] = null;
63-
});
64-
Onyx.mergeCollection(ONYXKEYS.COLLECTION.REPORT, cleanUpMergeQueries);
65-
Onyx.multiSet(cleanUpSetQueries);
66-
delete allPolicies[key];
67-
return;
68-
}
69-
70-
allPolicies[key] = val;
71-
},
72-
});
73-
7441
let allRecentlyUsedCategories: OnyxCollection<RecentlyUsedCategories> = {};
7542
Onyx.connect({
7643
key: ONYXKEYS.COLLECTION.POLICY_RECENTLY_USED_CATEGORIES,
@@ -1312,9 +1279,7 @@ function setPolicyCategoryMaxAmount(policyID: string, categoryName: string, maxE
13121279
API.write(WRITE_COMMANDS.SET_POLICY_CATEGORY_MAX_AMOUNT, parameters, onyxData);
13131280
}
13141281

1315-
function setPolicyCategoryApprover(policyID: string, categoryName: string, approver: string) {
1316-
const policy = allPolicies?.[`${ONYXKEYS.COLLECTION.POLICY}${policyID}`];
1317-
const approvalRules = policy?.rules?.approvalRules ?? [];
1282+
function setPolicyCategoryApprover(policyID: string, categoryName: string, approver: string, approvalRules: ApprovalRule[]) {
13181283
let updatedApprovalRules: ApprovalRule[] = lodashCloneDeep(approvalRules);
13191284
const existingCategoryApproverRule = CategoryUtils.getCategoryApproverRule(updatedApprovalRules, categoryName);
13201285

src/pages/workspace/categories/CategoryApproverPage.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ import WorkspaceMembersSelectionList from '@components/WorkspaceMembersSelection
55
import useLocalize from '@hooks/useLocalize';
66
import usePolicy from '@hooks/usePolicy';
77
import useThemeStyles from '@hooks/useThemeStyles';
8-
import * as CategoryUtils from '@libs/CategoryUtils';
8+
import {getCategoryApproverRule} from '@libs/CategoryUtils';
99
import Navigation from '@libs/Navigation/Navigation';
1010
import type {PlatformStackScreenProps} from '@libs/Navigation/PlatformStackNavigation/types';
1111
import type {SettingsNavigatorParamList} from '@navigation/types';
1212
import AccessOrNotFoundWrapper from '@pages/workspace/AccessOrNotFoundWrapper';
13-
import * as Category from '@userActions/Policy/Category';
13+
import {setPolicyCategoryApprover} from '@userActions/Policy/Category';
1414
import CONST from '@src/CONST';
1515
import ROUTES from '@src/ROUTES';
1616
import type SCREENS from '@src/SCREENS';
@@ -26,7 +26,7 @@ function CategoryApproverPage({
2626
const {translate} = useLocalize();
2727
const policy = usePolicy(policyID);
2828

29-
const selectedApprover = CategoryUtils.getCategoryApproverRule(policy?.rules?.approvalRules ?? [], categoryName)?.approver ?? '';
29+
const selectedApprover = getCategoryApproverRule(policy?.rules?.approvalRules ?? [], categoryName)?.approver ?? '';
3030

3131
return (
3232
<AccessOrNotFoundWrapper
@@ -48,7 +48,7 @@ function CategoryApproverPage({
4848
policyID={policyID}
4949
selectedApprover={selectedApprover}
5050
setApprover={(email) => {
51-
Category.setPolicyCategoryApprover(policyID, categoryName, email);
51+
setPolicyCategoryApprover(policyID, categoryName, email, policy?.rules?.approvalRules ?? []);
5252
Navigation.setNavigationActionToMicrotaskQueue(() => Navigation.goBack(ROUTES.WORKSPACE_CATEGORY_SETTINGS.getRoute(policyID, categoryName)));
5353
}}
5454
/>

0 commit comments

Comments
 (0)