From 7b02b3b60092a1039fcee4aef12d66cac216254a Mon Sep 17 00:00:00 2001 From: FitseTLT Date: Mon, 3 Feb 2025 20:42:32 +0300 Subject: [PATCH 1/2] add mccGroup optimistically --- src/libs/actions/Policy/Category.ts | 84 +++++++++++++++++++++++++++++ src/libs/actions/Policy/Policy.ts | 7 ++- 2 files changed, 89 insertions(+), 2 deletions(-) diff --git a/src/libs/actions/Policy/Category.ts b/src/libs/actions/Policy/Category.ts index 9f9ff8ba2804..b714c6ceced2 100644 --- a/src/libs/actions/Policy/Category.ts +++ b/src/libs/actions/Policy/Category.ts @@ -143,6 +143,89 @@ function buildOptimisticPolicyCategories(policyID: string, categories: readonly return onyxData; } +function buildOptimisticMccGroup() { + const optimisticMccGroup: Record<'mccGroup', Record> = { + mccGroup: { + airlines: { + category: 'Travel', + groupID: 'airlines', + pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD, + }, + commuter: { + category: 'Car', + groupID: 'commuter', + pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD, + }, + gas: { + category: 'Car', + groupID: 'gas', + pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD, + }, + goods: { + category: 'Materials', + groupID: 'goods', + pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD, + }, + groceries: { + category: 'Meals and Entertainment', + groupID: 'groceries', + pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD, + }, + hotel: { + category: 'Travel', + groupID: 'hotel', + pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD, + }, + mail: { + category: 'Office Supplies', + groupID: 'mail', + pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD, + }, + meals: { + category: 'Meals and Entertainment', + groupID: 'meals', + pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD, + }, + rental: { + category: 'Travel', + groupID: 'rental', + pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD, + }, + services: { + category: 'Professional Services', + groupID: 'services', + pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD, + }, + taxi: { + category: 'Travel', + groupID: 'taxi', + pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD, + }, + uncategorized: { + category: 'Other', + groupID: 'uncategorized', + pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD, + }, + utilities: { + category: 'Utilities', + groupID: 'utilities', + pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD, + }, + }, + }; + + const successMccGroup: Record<'mccGroup', Record>> = {mccGroup: {}}; + Object.keys(optimisticMccGroup.mccGroup).forEach((key) => (successMccGroup.mccGroup[key] = {pendingAction: null})); + + const mccGroupData = { + optimisticData: optimisticMccGroup, + successData: successMccGroup, + failureData: {mccGroup: null}, + }; + + return mccGroupData; +} + function updateImportSpreadsheetData(categoriesLength: number) { const onyxData: OnyxData = { successData: [ @@ -1369,6 +1452,7 @@ function getPolicyCategoriesData(policyID: string | undefined) { export { buildOptimisticPolicyCategories, + buildOptimisticMccGroup, buildOptimisticPolicyRecentlyUsedCategories, clearCategoryErrors, createPolicyCategory, diff --git a/src/libs/actions/Policy/Policy.ts b/src/libs/actions/Policy/Policy.ts index 35272f6c231c..d1a723d7baea 100644 --- a/src/libs/actions/Policy/Policy.ts +++ b/src/libs/actions/Policy/Policy.ts @@ -99,7 +99,7 @@ import type {Errors} from '@src/types/onyx/OnyxCommon'; import type {Attributes, CompanyAddress, CustomUnit, NetSuiteCustomList, NetSuiteCustomSegment, Rate, TaxRate} from '@src/types/onyx/Policy'; import type {OnyxData} from '@src/types/onyx/Request'; import {isEmptyObject} from '@src/types/utils/EmptyObject'; -import {buildOptimisticPolicyCategories} from './Category'; +import {buildOptimisticMccGroup, buildOptimisticPolicyCategories} from './Category'; type ReportCreationData = Record< string, @@ -1747,6 +1747,7 @@ function buildPolicyData( } = ReportUtils.buildOptimisticWorkspaceChats(policyID, workspaceName, expenseReportId); const optimisticCategoriesData = buildOptimisticPolicyCategories(policyID, CONST.POLICY.DEFAULT_CATEGORIES); + const optimisticMccGroupData = buildOptimisticMccGroup(); const shouldSetCreatedWorkspaceAsActivePolicy = !!activePolicyID && allPolicies?.[`${ONYXKEYS.COLLECTION.POLICY}${activePolicyID}`]?.type === CONST.POLICY.TYPE.PERSONAL; @@ -1796,6 +1797,7 @@ function buildPolicyData( }, avatarURL: file?.uri, originalFileName: file?.name, + ...optimisticMccGroupData.optimisticData, }, }, { @@ -1876,6 +1878,7 @@ function buildPolicyData( description: null, type: null, }, + ...optimisticMccGroupData.successData, }, }, { @@ -1937,7 +1940,7 @@ function buildPolicyData( { onyxMethod: Onyx.METHOD.MERGE, key: `${ONYXKEYS.COLLECTION.POLICY}${policyID}`, - value: {employeeList: null}, + value: {employeeList: null, ...optimisticMccGroupData.failureData}, }, { onyxMethod: Onyx.METHOD.SET, From 907f61b533c0288ffc1617cad1017d49605cc139 Mon Sep 17 00:00:00 2001 From: FitseTLT Date: Thu, 6 Feb 2025 17:43:13 +0300 Subject: [PATCH 2/2] used default categories const --- src/CONST.ts | 42 ++++++++++++++--------------- src/libs/actions/Policy/Category.ts | 26 +++++++++--------- src/libs/actions/Policy/Policy.ts | 4 +-- 3 files changed, 36 insertions(+), 36 deletions(-) diff --git a/src/CONST.ts b/src/CONST.ts index b8af68ddb934..a6622f613406 100755 --- a/src/CONST.ts +++ b/src/CONST.ts @@ -2640,27 +2640,27 @@ const CONST = { ARE_RULES_ENABLED: 'areRulesEnabled', ARE_PER_DIEM_RATES_ENABLED: 'arePerDiemRatesEnabled', }, - DEFAULT_CATEGORIES: [ - 'Advertising', - 'Benefits', - 'Car', - 'Equipment', - 'Fees', - 'Home Office', - 'Insurance', - 'Interest', - 'Labor', - 'Maintenance', - 'Materials', - 'Meals and Entertainment', - 'Office Supplies', - 'Other', - 'Professional Services', - 'Rent', - 'Taxes', - 'Travel', - 'Utilities', - ], + DEFAULT_CATEGORIES: { + ADVERTISING: 'Advertising', + BENEFITS: 'Benefits', + CAR: 'Car', + EQUIPMENT: 'Equipment', + FEES: 'Fees', + HOME_OFFICE: 'Home Office', + INSURANCE: 'Insurance', + INTEREST: 'Interest', + LABOR: 'Labor', + MAINTENANCE: 'Maintenance', + MATERIALS: 'Materials', + MEALS_AND_ENTERTAINMENT: 'Meals and Entertainment', + OFFICE_SUPPLIES: 'Office Supplies', + OTHER: 'Other', + PROFESSIONAL_SERVICES: 'Professional Services', + RENT: 'Rent', + TAXES: 'Taxes', + TRAVEL: 'Travel', + UTILITIES: 'Utilities', + }, OWNERSHIP_ERRORS: { NO_BILLING_CARD: 'noBillingCard', AMOUNT_OWED: 'amountOwed', diff --git a/src/libs/actions/Policy/Category.ts b/src/libs/actions/Policy/Category.ts index b714c6ceced2..5613209b9a0d 100644 --- a/src/libs/actions/Policy/Category.ts +++ b/src/libs/actions/Policy/Category.ts @@ -147,67 +147,67 @@ function buildOptimisticMccGroup() { const optimisticMccGroup: Record<'mccGroup', Record> = { mccGroup: { airlines: { - category: 'Travel', + category: CONST.POLICY.DEFAULT_CATEGORIES.TRAVEL, groupID: 'airlines', pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD, }, commuter: { - category: 'Car', + category: CONST.POLICY.DEFAULT_CATEGORIES.CAR, groupID: 'commuter', pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD, }, gas: { - category: 'Car', + category: CONST.POLICY.DEFAULT_CATEGORIES.CAR, groupID: 'gas', pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD, }, goods: { - category: 'Materials', + category: CONST.POLICY.DEFAULT_CATEGORIES.MATERIALS, groupID: 'goods', pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD, }, groceries: { - category: 'Meals and Entertainment', + category: CONST.POLICY.DEFAULT_CATEGORIES.MEALS_AND_ENTERTAINMENT, groupID: 'groceries', pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD, }, hotel: { - category: 'Travel', + category: CONST.POLICY.DEFAULT_CATEGORIES.TRAVEL, groupID: 'hotel', pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD, }, mail: { - category: 'Office Supplies', + category: CONST.POLICY.DEFAULT_CATEGORIES.OFFICE_SUPPLIES, groupID: 'mail', pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD, }, meals: { - category: 'Meals and Entertainment', + category: CONST.POLICY.DEFAULT_CATEGORIES.MEALS_AND_ENTERTAINMENT, groupID: 'meals', pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD, }, rental: { - category: 'Travel', + category: CONST.POLICY.DEFAULT_CATEGORIES.TRAVEL, groupID: 'rental', pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD, }, services: { - category: 'Professional Services', + category: CONST.POLICY.DEFAULT_CATEGORIES.PROFESSIONAL_SERVICES, groupID: 'services', pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD, }, taxi: { - category: 'Travel', + category: CONST.POLICY.DEFAULT_CATEGORIES.TRAVEL, groupID: 'taxi', pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD, }, uncategorized: { - category: 'Other', + category: CONST.POLICY.DEFAULT_CATEGORIES.OTHER, groupID: 'uncategorized', pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD, }, utilities: { - category: 'Utilities', + category: CONST.POLICY.DEFAULT_CATEGORIES.UTILITIES, groupID: 'utilities', pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD, }, diff --git a/src/libs/actions/Policy/Policy.ts b/src/libs/actions/Policy/Policy.ts index 4dbcf4eebc04..b4d9287eba08 100644 --- a/src/libs/actions/Policy/Policy.ts +++ b/src/libs/actions/Policy/Policy.ts @@ -1751,7 +1751,7 @@ function buildPolicyData( pendingChatMembers, } = ReportUtils.buildOptimisticWorkspaceChats(policyID, workspaceName, expenseReportId); - const optimisticCategoriesData = buildOptimisticPolicyCategories(policyID, CONST.POLICY.DEFAULT_CATEGORIES); + const optimisticCategoriesData = buildOptimisticPolicyCategories(policyID, Object.values(CONST.POLICY.DEFAULT_CATEGORIES)); const optimisticMccGroupData = buildOptimisticMccGroup(); const shouldSetCreatedWorkspaceAsActivePolicy = !!activePolicyID && allPolicies?.[`${ONYXKEYS.COLLECTION.POLICY}${activePolicyID}`]?.type === CONST.POLICY.TYPE.PERSONAL; @@ -2136,7 +2136,7 @@ function createDraftWorkspace(policyOwnerEmail = '', makeMeAdmin = false, policy { onyxMethod: Onyx.METHOD.SET, key: `${ONYXKEYS.COLLECTION.POLICY_CATEGORIES_DRAFT}${policyID}`, - value: CONST.POLICY.DEFAULT_CATEGORIES.reduce>((acc, category) => { + value: Object.values(CONST.POLICY.DEFAULT_CATEGORIES).reduce>((acc, category) => { acc[category] = { name: category, enabled: true,