From cdf5e9c8f7538d043f0f29dbc8fd04b8b4b13e97 Mon Sep 17 00:00:00 2001 From: Huu Le Date: Sun, 14 Jul 2024 23:09:12 +0700 Subject: [PATCH 01/13] fix workspace name showing previous name when switching from offline to online mode --- src/libs/actions/Policy/Policy.ts | 127 +++++++++++++++++------------- 1 file changed, 74 insertions(+), 53 deletions(-) diff --git a/src/libs/actions/Policy/Policy.ts b/src/libs/actions/Policy/Policy.ts index e5ebe2281a94..79cb673cdea3 100644 --- a/src/libs/actions/Policy/Policy.ts +++ b/src/libs/actions/Policy/Policy.ts @@ -55,6 +55,7 @@ import * as ReportConnection from '@libs/ReportConnection'; import * as ReportUtils from '@libs/ReportUtils'; import * as TransactionUtils from '@libs/TransactionUtils'; import type {PolicySelector} from '@pages/home/sidebar/SidebarScreen/FloatingActionButtonAndPopover'; +import * as PersistedRequests from '@userActions/PersistedRequests'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import type {InvitedEmailsToAccountIDs, PersonalDetailsList, Policy, PolicyCategory, ReimbursementAccount, Report, ReportAction, TaxRatesWithDefault, Transaction} from '@src/types/onyx'; @@ -1067,6 +1068,26 @@ function updateGeneralSettings(policyID: string, name: string, currencyValue?: s currency, }; + const persistedRequests = PersistedRequests.getAll(); + + persistedRequests.forEach((persistedRequest, requestIndex) => { + const {command, data} = persistedRequest; + + if (command === WRITE_COMMANDS.CREATE_WORKSPACE && data?.policyID === policyID) { + if (data.policyName !== name) { + const updatedRequest = { + ...persistedRequest, + data: { + ...data, + policyName: name, + }, + }; + + PersistedRequests.update(requestIndex, updatedRequest); + } + } + }); + API.write(WRITE_COMMANDS.UPDATE_WORKSPACE_GENERAL_SETTINGS, params, { optimisticData, finallyData, @@ -3076,75 +3097,75 @@ function getPoliciesConnectedToSageIntacct(): Policy[] { } export { - leaveWorkspace, addBillingCardAndRequestPolicyOwnerChange, - hasActiveChatEnabledPolicies, - setWorkspaceErrors, + buildPolicyData, + clearAvatarErrors, clearCustomUnitErrors, - hideWorkspaceAlertMessage, - deleteWorkspace, - updateAddress, - updateWorkspaceCustomUnitAndRate, - updateLastAccessedWorkspace, clearDeleteWorkspaceError, - openWorkspaceReimburseView, - setPolicyIDForReimburseView, + clearErrors, + clearNetSuiteAutoSyncErrorField, + clearNetSuiteErrorField, clearOnyxDataForReimburseView, - setRateForReimburseView, - setUnitForReimburseView, - generateDefaultWorkspaceName, - updateGeneralSettings, - deleteWorkspaceAvatar, - updateWorkspaceAvatar, - clearAvatarErrors, - generatePolicyID, + clearPolicyErrorField, + clearQBOErrorField, + clearSageIntacctErrorField, + clearWorkspaceReimbursementErrors, + clearXeroErrorField, + createDraftInitialWorkspace, + createDraftWorkspace, + createPolicyExpenseChats, createWorkspace, - openPolicyTaxesPage, - openWorkspaceInvitePage, - openWorkspace, - removeWorkspace, createWorkspaceFromIOUPayment, - clearErrors, + deleteWorkspace, + deleteWorkspaceAvatar, dismissAddedWithPrimaryLoginMessages, - openDraftWorkspaceRequest, - createDraftInitialWorkspace, - setWorkspaceInviteMessageDraft, - setWorkspaceApprovalMode, - setWorkspaceAutoReportingFrequency, - setWorkspaceAutoReportingMonthlyOffset, - updateWorkspaceDescription, - setWorkspacePayer, - setWorkspaceReimbursement, - openPolicyWorkflowsPage, + enableDistanceRequestTax, + enableExpensifyCard, enablePolicyConnections, enablePolicyReportFields, enablePolicyTaxes, enablePolicyWorkflows, - enableDistanceRequestTax, + generateCustomUnitID, + generateDefaultWorkspaceName, + generatePolicyID, + getPoliciesConnectedToSageIntacct, + getPrimaryPolicy, + hasActiveChatEnabledPolicies, + hideWorkspaceAlertMessage, + isCurrencySupportedForDirectReimbursement, + leaveWorkspace, + openDraftWorkspaceRequest, + openPolicyExpensifyCardsPage, + openPolicyInitialPage, openPolicyMoreFeaturesPage, openPolicyProfilePage, - openPolicyInitialPage, - generateCustomUnitID, - clearQBOErrorField, - clearXeroErrorField, - clearNetSuiteErrorField, - clearNetSuiteAutoSyncErrorField, - clearWorkspaceReimbursementErrors, - setWorkspaceCurrencyDefault, + openPolicyTaxesPage, + openPolicyWorkflowsPage, + openWorkspace, + openWorkspaceInvitePage, + openWorkspaceReimburseView, + removeWorkspace, + requestExpensifyCardLimitIncrease, setForeignCurrencyDefault, setPolicyCustomTaxName, - clearPolicyErrorField, - isCurrencySupportedForDirectReimbursement, - getPrimaryPolicy, - createDraftWorkspace, - buildPolicyData, - enableExpensifyCard, - createPolicyExpenseChats, + setPolicyIDForReimburseView, + setRateForReimburseView, + setUnitForReimburseView, + setWorkspaceApprovalMode, + setWorkspaceAutoReportingFrequency, + setWorkspaceAutoReportingMonthlyOffset, + setWorkspaceCurrencyDefault, + setWorkspaceErrors, + setWorkspaceInviteMessageDraft, + setWorkspacePayer, + setWorkspaceReimbursement, + updateAddress, + updateGeneralSettings, + updateLastAccessedWorkspace, + updateWorkspaceAvatar, + updateWorkspaceCustomUnitAndRate, + updateWorkspaceDescription, upgradeToCorporate, - openPolicyExpensifyCardsPage, - requestExpensifyCardLimitIncrease, - getPoliciesConnectedToSageIntacct, - clearSageIntacctErrorField, }; export type {NewCustomUnit}; From b2ab21a0fbddf02f1db26a077cd19d66a517a529 Mon Sep 17 00:00:00 2001 From: Huu Le Date: Mon, 15 Jul 2024 10:55:46 +0700 Subject: [PATCH 02/13] add condition to check if currency is updated --- src/libs/actions/Policy/Policy.ts | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/libs/actions/Policy/Policy.ts b/src/libs/actions/Policy/Policy.ts index 79cb673cdea3..a5afbb7d11b8 100644 --- a/src/libs/actions/Policy/Policy.ts +++ b/src/libs/actions/Policy/Policy.ts @@ -1070,20 +1070,23 @@ function updateGeneralSettings(policyID: string, name: string, currencyValue?: s const persistedRequests = PersistedRequests.getAll(); - persistedRequests.forEach((persistedRequest, requestIndex) => { - const {command, data} = persistedRequest; + persistedRequests.forEach((request, index) => { + const {command, data} = request; if (command === WRITE_COMMANDS.CREATE_WORKSPACE && data?.policyID === policyID) { - if (data.policyName !== name) { + const policyNameChanged = data.policyName !== name; + const outputCurrencyChanged = data.outputCurrency !== currency; + + if (policyNameChanged || outputCurrencyChanged) { const updatedRequest = { - ...persistedRequest, + ...request, data: { ...data, - policyName: name, + policyName: policyNameChanged ? name : data.policyName, + outputCurrency: outputCurrencyChanged ? currency : data.outputCurrency, }, }; - - PersistedRequests.update(requestIndex, updatedRequest); + PersistedRequests.update(index, updatedRequest); } } }); From a1a38327c9c2867d35a603fea7de5c2225db69fb Mon Sep 17 00:00:00 2001 From: Huu Le Date: Tue, 16 Jul 2024 00:04:11 +0700 Subject: [PATCH 03/13] Update policy and currency condition names --- src/libs/actions/Policy/Policy.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/libs/actions/Policy/Policy.ts b/src/libs/actions/Policy/Policy.ts index a5afbb7d11b8..23cdb1c7c921 100644 --- a/src/libs/actions/Policy/Policy.ts +++ b/src/libs/actions/Policy/Policy.ts @@ -1074,16 +1074,16 @@ function updateGeneralSettings(policyID: string, name: string, currencyValue?: s const {command, data} = request; if (command === WRITE_COMMANDS.CREATE_WORKSPACE && data?.policyID === policyID) { - const policyNameChanged = data.policyName !== name; - const outputCurrencyChanged = data.outputCurrency !== currency; + const isPolicyNameChanged = data.policyName !== name; + const isCurrencyChanged = data.outputCurrency !== currency; - if (policyNameChanged || outputCurrencyChanged) { + if (isPolicyNameChanged || isCurrencyChanged) { const updatedRequest = { ...request, data: { ...data, - policyName: policyNameChanged ? name : data.policyName, - outputCurrency: outputCurrencyChanged ? currency : data.outputCurrency, + policyName: isPolicyNameChanged ? name : data.policyName, + outputCurrency: isCurrencyChanged ? currency : data.outputCurrency, }, }; PersistedRequests.update(index, updatedRequest); From f3e18e32edb2c891567405e53bab4675896f9c0c Mon Sep 17 00:00:00 2001 From: krishna2323 Date: Mon, 15 Jul 2024 19:03:39 +0530 Subject: [PATCH 04/13] fix: Connect bank - -1 is pre-filled for the tax ID number when connecting a new bank account. Signed-off-by: krishna2323 --- .../BusinessInfo/substeps/TaxIdBusiness.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/ReimbursementAccount/BusinessInfo/substeps/TaxIdBusiness.tsx b/src/pages/ReimbursementAccount/BusinessInfo/substeps/TaxIdBusiness.tsx index 2063211f41f4..8e3ec6d5ec6e 100644 --- a/src/pages/ReimbursementAccount/BusinessInfo/substeps/TaxIdBusiness.tsx +++ b/src/pages/ReimbursementAccount/BusinessInfo/substeps/TaxIdBusiness.tsx @@ -28,8 +28,8 @@ const STEP_FIELDS = [COMPANY_TAX_ID_KEY]; function TaxIdBusiness({reimbursementAccount, onNext, isEditing}: TaxIdBusinessProps) { const {translate} = useLocalize(); const styles = useThemeStyles(); - const defaultCompanyTaxId = reimbursementAccount?.achData?.companyTaxID ?? '-1'; - const bankAccountID = reimbursementAccount?.achData?.bankAccountID ?? -1; + const defaultCompanyTaxId = reimbursementAccount?.achData?.companyTaxID ?? ''; + const bankAccountID = reimbursementAccount?.achData?.bankAccountID ?? 0; const shouldDisableCompanyTaxID = !!(bankAccountID && defaultCompanyTaxId && reimbursementAccount?.achData?.state !== 'SETUP'); const validate = useCallback( From c4b78bad2384ddde15b0002f26da367e1cb80893 Mon Sep 17 00:00:00 2001 From: Bernhard Owen Josephus Date: Thu, 11 Jul 2024 12:43:51 +0800 Subject: [PATCH 05/13] optimistically update the policy current user employee info --- src/libs/actions/User.ts | 11 ++++++++++- .../Profile/Contacts/ContactMethodDetailsPage.tsx | 3 ++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/libs/actions/User.ts b/src/libs/actions/User.ts index 7b3b1abd04ef..8b5937363bc5 100644 --- a/src/libs/actions/User.ts +++ b/src/libs/actions/User.ts @@ -765,7 +765,7 @@ function generateStatementPDF(period: string) { /** * Sets a contact method / secondary login as the user's "Default" contact method. */ -function setContactMethodAsDefault(newDefaultContactMethod: string, policies: OnyxCollection>) { +function setContactMethodAsDefault(newDefaultContactMethod: string, policies: OnyxCollection>) { const oldDefaultContactMethod = currentEmail; const optimisticData: OnyxUpdate[] = [ { @@ -862,11 +862,16 @@ function setContactMethodAsDefault(newDefaultContactMethod: string, policies: On if (policy?.ownerAccountID !== currentUserAccountID) { return; } + const currentEmployee = policy.employeeList?.[oldDefaultContactMethod] ?? {role: 'admin'}; optimisticData.push({ onyxMethod: Onyx.METHOD.MERGE, key: `${ONYXKEYS.COLLECTION.POLICY}${policy.id}`, value: { owner: newDefaultContactMethod, + employeeList: { + [oldDefaultContactMethod]: null, + [newDefaultContactMethod]: currentEmployee, + }, }, }); failureData.push({ @@ -874,6 +879,10 @@ function setContactMethodAsDefault(newDefaultContactMethod: string, policies: On key: `${ONYXKEYS.COLLECTION.POLICY}${policy.id}`, value: { owner: policy.owner, + employeeList: { + [oldDefaultContactMethod]: currentEmployee, + [newDefaultContactMethod]: null, + }, }, }); }); diff --git a/src/pages/settings/Profile/Contacts/ContactMethodDetailsPage.tsx b/src/pages/settings/Profile/Contacts/ContactMethodDetailsPage.tsx index 393b377869df..9a02c0fef67e 100644 --- a/src/pages/settings/Profile/Contacts/ContactMethodDetailsPage.tsx +++ b/src/pages/settings/Profile/Contacts/ContactMethodDetailsPage.tsx @@ -34,10 +34,11 @@ import isLoadingOnyxValue from '@src/types/utils/isLoadingOnyxValue'; import ValidateCodeForm from './ValidateCodeForm'; import type {ValidateCodeFormHandle} from './ValidateCodeForm/BaseValidateCodeForm'; -const policiesSelector = (policy: OnyxEntry): Pick => ({ +const policiesSelector = (policy: OnyxEntry): Pick => ({ id: policy?.id ?? '-1', ownerAccountID: policy?.ownerAccountID, owner: policy?.owner ?? '', + employeeList: policy?.employeeList, }); type ContactMethodDetailsPageProps = StackScreenProps; From 164e4cb1b37fbb1ee1cc977efb1ee87b56f57903 Mon Sep 17 00:00:00 2001 From: Bernhard Owen Josephus Date: Thu, 11 Jul 2024 19:46:24 +0800 Subject: [PATCH 06/13] update all policy employee list too --- src/libs/actions/User.ts | 52 +++++++++++++++++++++++++++------------- 1 file changed, 36 insertions(+), 16 deletions(-) diff --git a/src/libs/actions/User.ts b/src/libs/actions/User.ts index 8b5937363bc5..3019e3dfbb6c 100644 --- a/src/libs/actions/User.ts +++ b/src/libs/actions/User.ts @@ -859,32 +859,52 @@ function setContactMethodAsDefault(newDefaultContactMethod: string, policies: On ]; Object.values(policies ?? {}).forEach((policy) => { - if (policy?.ownerAccountID !== currentUserAccountID) { + if (!policy) { return; } - const currentEmployee = policy.employeeList?.[oldDefaultContactMethod] ?? {role: 'admin'}; - optimisticData.push({ - onyxMethod: Onyx.METHOD.MERGE, - key: `${ONYXKEYS.COLLECTION.POLICY}${policy.id}`, - value: { - owner: newDefaultContactMethod, + + let optimisticPolicyDataValue; + let failurePolicyDataValue; + + if (policy.employeeList) { + const currentEmployee = policy.employeeList[oldDefaultContactMethod]; + optimisticPolicyDataValue = { employeeList: { [oldDefaultContactMethod]: null, [newDefaultContactMethod]: currentEmployee, }, - }, - }); - failureData.push({ - onyxMethod: Onyx.METHOD.MERGE, - key: `${ONYXKEYS.COLLECTION.POLICY}${policy.id}`, - value: { - owner: policy.owner, + }; + failurePolicyDataValue = { employeeList: { [oldDefaultContactMethod]: currentEmployee, [newDefaultContactMethod]: null, }, - }, - }); + }; + } + + if (policy.ownerAccountID === currentUserAccountID) { + optimisticPolicyDataValue = { + ...optimisticPolicyDataValue, + owner: newDefaultContactMethod, + }; + failurePolicyDataValue = { + ...failurePolicyDataValue, + owner: policy.owner, + }; + } + + if (optimisticPolicyDataValue && failurePolicyDataValue) { + optimisticData.push({ + onyxMethod: Onyx.METHOD.MERGE, + key: `${ONYXKEYS.COLLECTION.POLICY}${policy.id}`, + value: optimisticPolicyDataValue, + }); + failureData.push({ + onyxMethod: Onyx.METHOD.MERGE, + key: `${ONYXKEYS.COLLECTION.POLICY}${policy.id}`, + value: failurePolicyDataValue, + }); + } }); const parameters: SetContactMethodAsDefaultParams = { partnerUserID: newDefaultContactMethod, From 681ce0de39426cea84fd7ef7ea39add6eab5fc90 Mon Sep 17 00:00:00 2001 From: Huu Le Date: Sun, 14 Jul 2024 23:09:12 +0700 Subject: [PATCH 07/13] fix workspace name showing previous name when switching from offline to online mode --- src/libs/actions/Policy/Policy.ts | 58 +++++++++++++++++++++---------- 1 file changed, 40 insertions(+), 18 deletions(-) diff --git a/src/libs/actions/Policy/Policy.ts b/src/libs/actions/Policy/Policy.ts index 5c63d1030642..c1d11680a73d 100644 --- a/src/libs/actions/Policy/Policy.ts +++ b/src/libs/actions/Policy/Policy.ts @@ -1,9 +1,3 @@ -import {PUBLIC_DOMAINS, Str} from 'expensify-common'; -import {escapeRegExp} from 'lodash'; -import lodashClone from 'lodash/clone'; -import type {NullishDeep, OnyxCollection, OnyxEntry, OnyxUpdate} from 'react-native-onyx'; -import Onyx from 'react-native-onyx'; -import type {ValueOf} from 'type-fest'; import * as API from '@libs/API'; import type { AddBillingCardAndRequestWorkspaceOwnerChangeParams, @@ -40,7 +34,7 @@ import type { UpgradeToCorporateParams, } from '@libs/API/parameters'; import type UpdatePolicyAddressParams from '@libs/API/parameters/UpdatePolicyAddressParams'; -import {READ_COMMANDS, WRITE_COMMANDS} from '@libs/API/types'; +import { READ_COMMANDS, WRITE_COMMANDS } from '@libs/API/types'; import DateUtils from '@libs/DateUtils'; import * as ErrorUtils from '@libs/ErrorUtils'; import getIsNarrowLayout from '@libs/getIsNarrowLayout'; @@ -49,21 +43,27 @@ import * as NetworkStore from '@libs/Network/NetworkStore'; import * as NumberUtils from '@libs/NumberUtils'; import * as PhoneNumber from '@libs/PhoneNumber'; import * as PolicyUtils from '@libs/PolicyUtils'; -import {navigateWhenEnableFeature} from '@libs/PolicyUtils'; +import { navigateWhenEnableFeature } from '@libs/PolicyUtils'; import * as ReportActionsUtils from '@libs/ReportActionsUtils'; import * as ReportConnection from '@libs/ReportConnection'; import * as ReportUtils from '@libs/ReportUtils'; import * as TransactionUtils from '@libs/TransactionUtils'; -import type {PolicySelector} from '@pages/home/sidebar/SidebarScreen/FloatingActionButtonAndPopover'; -import * as PersistedRequests from '@userActions/PersistedRequests'; +import type { PolicySelector } from '@pages/home/sidebar/SidebarScreen/FloatingActionButtonAndPopover'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import type {InvitedEmailsToAccountIDs, PersonalDetailsList, Policy, PolicyCategory, ReimbursementAccount, Report, ReportAction, TaxRatesWithDefault, Transaction} from '@src/types/onyx'; -import type {Errors} from '@src/types/onyx/OnyxCommon'; -import type {Attributes, CompanyAddress, CustomUnit, Rate, TaxRate, Unit} 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 type { InvitedEmailsToAccountIDs, PersonalDetailsList, Policy, PolicyCategory, ReimbursementAccount, Report, ReportAction, TaxRatesWithDefault, Transaction } from '@src/types/onyx'; +import type { Errors } from '@src/types/onyx/OnyxCommon'; +import type { Attributes, CompanyAddress, CustomUnit, Rate, TaxRate, Unit } from '@src/types/onyx/Policy'; +import type { OnyxData } from '@src/types/onyx/Request'; +import { isEmptyObject } from '@src/types/utils/EmptyObject'; +import * as PersistedRequests from '@userActions/PersistedRequests'; +import { PUBLIC_DOMAINS, Str } from 'expensify-common'; +import { escapeRegExp } from 'lodash'; +import lodashClone from 'lodash/clone'; +import type { NullishDeep, OnyxCollection, OnyxEntry, OnyxUpdate } from 'react-native-onyx'; +import Onyx from 'react-native-onyx'; +import type { ValueOf } from 'type-fest'; +import { buildOptimisticPolicyCategories } from './Category'; type ReportCreationData = Record< string, @@ -3106,6 +3106,7 @@ export { clearCustomUnitErrors, clearDeleteWorkspaceError, clearErrors, + clearNetSuiteAutoSyncErrorField, clearNetSuiteErrorField, clearOnyxDataForReimburseView, @@ -3115,6 +3116,11 @@ export { clearWorkspaceReimbursementErrors, clearXeroErrorField, createDraftInitialWorkspace, + + + + + createDraftWorkspace, createPolicyExpenseChats, createWorkspace, @@ -3128,16 +3134,22 @@ export { enablePolicyReportFields, enablePolicyTaxes, enablePolicyWorkflows, + generateCustomUnitID, generateDefaultWorkspaceName, generatePolicyID, getAdminPoliciesConnectedToSageIntacct, + + + + getPrimaryPolicy, hasActiveChatEnabledPolicies, hideWorkspaceAlertMessage, isCurrencySupportedForDirectReimbursement, leaveWorkspace, openDraftWorkspaceRequest, + openPolicyExpensifyCardsPage, openPolicyInitialPage, openPolicyMoreFeaturesPage, @@ -3150,14 +3162,22 @@ export { removeWorkspace, requestExpensifyCardLimitIncrease, setForeignCurrencyDefault, + + + + setPolicyCustomTaxName, setPolicyIDForReimburseView, setRateForReimburseView, setUnitForReimburseView, setWorkspaceApprovalMode, setWorkspaceAutoReportingFrequency, + setWorkspaceAutoReportingMonthlyOffset, setWorkspaceCurrencyDefault, + + + setWorkspaceErrors, setWorkspaceInviteMessageDraft, setWorkspacePayer, @@ -3168,7 +3188,9 @@ export { updateWorkspaceAvatar, updateWorkspaceCustomUnitAndRate, updateWorkspaceDescription, - upgradeToCorporate, + + upgradeToCorporate }; -export type {NewCustomUnit}; + export type { NewCustomUnit }; + From 062e56b5b6293daec2da2169ecbfb8d08430887e Mon Sep 17 00:00:00 2001 From: Huu Le Date: Mon, 15 Jul 2024 10:55:46 +0700 Subject: [PATCH 08/13] add condition to check if currency is updated From c822da9bd98c1a207be9f5a6fda7cdc601aa5914 Mon Sep 17 00:00:00 2001 From: Huu Le Date: Sun, 14 Jul 2024 23:09:12 +0700 Subject: [PATCH 09/13] fix workspace name showing previous name when switching from offline to online mode --- src/libs/actions/Policy/Policy.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/libs/actions/Policy/Policy.ts b/src/libs/actions/Policy/Policy.ts index c1d11680a73d..7a3c6f24c406 100644 --- a/src/libs/actions/Policy/Policy.ts +++ b/src/libs/actions/Policy/Policy.ts @@ -3188,7 +3188,6 @@ export { updateWorkspaceAvatar, updateWorkspaceCustomUnitAndRate, updateWorkspaceDescription, - upgradeToCorporate }; From 6287e159e1dadf07651a74cf2afaf9fe6ca6139d Mon Sep 17 00:00:00 2001 From: Huu Le Date: Tue, 16 Jul 2024 01:21:48 +0700 Subject: [PATCH 10/13] fix lint --- src/libs/actions/Policy/Policy.ts | 57 ++++++++++--------------------- 1 file changed, 18 insertions(+), 39 deletions(-) diff --git a/src/libs/actions/Policy/Policy.ts b/src/libs/actions/Policy/Policy.ts index 7a3c6f24c406..5c63d1030642 100644 --- a/src/libs/actions/Policy/Policy.ts +++ b/src/libs/actions/Policy/Policy.ts @@ -1,3 +1,9 @@ +import {PUBLIC_DOMAINS, Str} from 'expensify-common'; +import {escapeRegExp} from 'lodash'; +import lodashClone from 'lodash/clone'; +import type {NullishDeep, OnyxCollection, OnyxEntry, OnyxUpdate} from 'react-native-onyx'; +import Onyx from 'react-native-onyx'; +import type {ValueOf} from 'type-fest'; import * as API from '@libs/API'; import type { AddBillingCardAndRequestWorkspaceOwnerChangeParams, @@ -34,7 +40,7 @@ import type { UpgradeToCorporateParams, } from '@libs/API/parameters'; import type UpdatePolicyAddressParams from '@libs/API/parameters/UpdatePolicyAddressParams'; -import { READ_COMMANDS, WRITE_COMMANDS } from '@libs/API/types'; +import {READ_COMMANDS, WRITE_COMMANDS} from '@libs/API/types'; import DateUtils from '@libs/DateUtils'; import * as ErrorUtils from '@libs/ErrorUtils'; import getIsNarrowLayout from '@libs/getIsNarrowLayout'; @@ -43,27 +49,21 @@ import * as NetworkStore from '@libs/Network/NetworkStore'; import * as NumberUtils from '@libs/NumberUtils'; import * as PhoneNumber from '@libs/PhoneNumber'; import * as PolicyUtils from '@libs/PolicyUtils'; -import { navigateWhenEnableFeature } from '@libs/PolicyUtils'; +import {navigateWhenEnableFeature} from '@libs/PolicyUtils'; import * as ReportActionsUtils from '@libs/ReportActionsUtils'; import * as ReportConnection from '@libs/ReportConnection'; import * as ReportUtils from '@libs/ReportUtils'; import * as TransactionUtils from '@libs/TransactionUtils'; -import type { PolicySelector } from '@pages/home/sidebar/SidebarScreen/FloatingActionButtonAndPopover'; +import type {PolicySelector} from '@pages/home/sidebar/SidebarScreen/FloatingActionButtonAndPopover'; +import * as PersistedRequests from '@userActions/PersistedRequests'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import type { InvitedEmailsToAccountIDs, PersonalDetailsList, Policy, PolicyCategory, ReimbursementAccount, Report, ReportAction, TaxRatesWithDefault, Transaction } from '@src/types/onyx'; -import type { Errors } from '@src/types/onyx/OnyxCommon'; -import type { Attributes, CompanyAddress, CustomUnit, Rate, TaxRate, Unit } from '@src/types/onyx/Policy'; -import type { OnyxData } from '@src/types/onyx/Request'; -import { isEmptyObject } from '@src/types/utils/EmptyObject'; -import * as PersistedRequests from '@userActions/PersistedRequests'; -import { PUBLIC_DOMAINS, Str } from 'expensify-common'; -import { escapeRegExp } from 'lodash'; -import lodashClone from 'lodash/clone'; -import type { NullishDeep, OnyxCollection, OnyxEntry, OnyxUpdate } from 'react-native-onyx'; -import Onyx from 'react-native-onyx'; -import type { ValueOf } from 'type-fest'; -import { buildOptimisticPolicyCategories } from './Category'; +import type {InvitedEmailsToAccountIDs, PersonalDetailsList, Policy, PolicyCategory, ReimbursementAccount, Report, ReportAction, TaxRatesWithDefault, Transaction} from '@src/types/onyx'; +import type {Errors} from '@src/types/onyx/OnyxCommon'; +import type {Attributes, CompanyAddress, CustomUnit, Rate, TaxRate, Unit} from '@src/types/onyx/Policy'; +import type {OnyxData} from '@src/types/onyx/Request'; +import {isEmptyObject} from '@src/types/utils/EmptyObject'; +import {buildOptimisticPolicyCategories} from './Category'; type ReportCreationData = Record< string, @@ -3106,7 +3106,6 @@ export { clearCustomUnitErrors, clearDeleteWorkspaceError, clearErrors, - clearNetSuiteAutoSyncErrorField, clearNetSuiteErrorField, clearOnyxDataForReimburseView, @@ -3116,11 +3115,6 @@ export { clearWorkspaceReimbursementErrors, clearXeroErrorField, createDraftInitialWorkspace, - - - - - createDraftWorkspace, createPolicyExpenseChats, createWorkspace, @@ -3134,22 +3128,16 @@ export { enablePolicyReportFields, enablePolicyTaxes, enablePolicyWorkflows, - generateCustomUnitID, generateDefaultWorkspaceName, generatePolicyID, getAdminPoliciesConnectedToSageIntacct, - - - - getPrimaryPolicy, hasActiveChatEnabledPolicies, hideWorkspaceAlertMessage, isCurrencySupportedForDirectReimbursement, leaveWorkspace, openDraftWorkspaceRequest, - openPolicyExpensifyCardsPage, openPolicyInitialPage, openPolicyMoreFeaturesPage, @@ -3162,22 +3150,14 @@ export { removeWorkspace, requestExpensifyCardLimitIncrease, setForeignCurrencyDefault, - - - - setPolicyCustomTaxName, setPolicyIDForReimburseView, setRateForReimburseView, setUnitForReimburseView, setWorkspaceApprovalMode, setWorkspaceAutoReportingFrequency, - setWorkspaceAutoReportingMonthlyOffset, setWorkspaceCurrencyDefault, - - - setWorkspaceErrors, setWorkspaceInviteMessageDraft, setWorkspacePayer, @@ -3188,8 +3168,7 @@ export { updateWorkspaceAvatar, updateWorkspaceCustomUnitAndRate, updateWorkspaceDescription, - upgradeToCorporate + upgradeToCorporate, }; - export type { NewCustomUnit }; - +export type {NewCustomUnit}; From d64e7a6431676e3e9fa336ddd099facbc98a0ed4 Mon Sep 17 00:00:00 2001 From: Huu Le Date: Tue, 16 Jul 2024 22:20:11 +0700 Subject: [PATCH 11/13] revert import order and update variable name for clarity --- src/libs/actions/Policy/Policy.ts | 110 +++++++++++++++--------------- 1 file changed, 55 insertions(+), 55 deletions(-) diff --git a/src/libs/actions/Policy/Policy.ts b/src/libs/actions/Policy/Policy.ts index 5c63d1030642..e8b80968ed70 100644 --- a/src/libs/actions/Policy/Policy.ts +++ b/src/libs/actions/Policy/Policy.ts @@ -1078,7 +1078,7 @@ function updateGeneralSettings(policyID: string, name: string, currencyValue?: s const isCurrencyChanged = data.outputCurrency !== currency; if (isPolicyNameChanged || isCurrencyChanged) { - const updatedRequest = { + const createWorkspaceRequest = { ...request, data: { ...data, @@ -1086,7 +1086,7 @@ function updateGeneralSettings(policyID: string, name: string, currencyValue?: s outputCurrency: isCurrencyChanged ? currency : data.outputCurrency, }, }; - PersistedRequests.update(index, updatedRequest); + PersistedRequests.update(index, createWorkspaceRequest); } } }); @@ -3100,75 +3100,75 @@ function getAdminPoliciesConnectedToSageIntacct(): Policy[] { } export { + leaveWorkspace, addBillingCardAndRequestPolicyOwnerChange, - buildPolicyData, - clearAvatarErrors, + hasActiveChatEnabledPolicies, + setWorkspaceErrors, clearCustomUnitErrors, + hideWorkspaceAlertMessage, + deleteWorkspace, + updateAddress, + updateWorkspaceCustomUnitAndRate, + updateLastAccessedWorkspace, clearDeleteWorkspaceError, - clearErrors, - clearNetSuiteAutoSyncErrorField, - clearNetSuiteErrorField, + openWorkspaceReimburseView, + setPolicyIDForReimburseView, clearOnyxDataForReimburseView, - clearPolicyErrorField, - clearQBOErrorField, - clearSageIntacctErrorField, - clearWorkspaceReimbursementErrors, - clearXeroErrorField, - createDraftInitialWorkspace, - createDraftWorkspace, - createPolicyExpenseChats, + setRateForReimburseView, + setUnitForReimburseView, + generateDefaultWorkspaceName, + updateGeneralSettings, + deleteWorkspaceAvatar, + updateWorkspaceAvatar, + clearAvatarErrors, + generatePolicyID, createWorkspace, + openPolicyTaxesPage, + openWorkspaceInvitePage, + openWorkspace, + removeWorkspace, createWorkspaceFromIOUPayment, - deleteWorkspace, - deleteWorkspaceAvatar, + clearErrors, dismissAddedWithPrimaryLoginMessages, - enableDistanceRequestTax, - enableExpensifyCard, + openDraftWorkspaceRequest, + createDraftInitialWorkspace, + setWorkspaceInviteMessageDraft, + setWorkspaceApprovalMode, + setWorkspaceAutoReportingFrequency, + setWorkspaceAutoReportingMonthlyOffset, + updateWorkspaceDescription, + setWorkspacePayer, + setWorkspaceReimbursement, + openPolicyWorkflowsPage, enablePolicyConnections, enablePolicyReportFields, enablePolicyTaxes, enablePolicyWorkflows, - generateCustomUnitID, - generateDefaultWorkspaceName, - generatePolicyID, - getAdminPoliciesConnectedToSageIntacct, - getPrimaryPolicy, - hasActiveChatEnabledPolicies, - hideWorkspaceAlertMessage, - isCurrencySupportedForDirectReimbursement, - leaveWorkspace, - openDraftWorkspaceRequest, - openPolicyExpensifyCardsPage, - openPolicyInitialPage, + enableDistanceRequestTax, openPolicyMoreFeaturesPage, openPolicyProfilePage, - openPolicyTaxesPage, - openPolicyWorkflowsPage, - openWorkspace, - openWorkspaceInvitePage, - openWorkspaceReimburseView, - removeWorkspace, - requestExpensifyCardLimitIncrease, + openPolicyInitialPage, + generateCustomUnitID, + clearQBOErrorField, + clearXeroErrorField, + clearSageIntacctErrorField, + clearNetSuiteErrorField, + clearNetSuiteAutoSyncErrorField, + clearWorkspaceReimbursementErrors, + setWorkspaceCurrencyDefault, setForeignCurrencyDefault, setPolicyCustomTaxName, - setPolicyIDForReimburseView, - setRateForReimburseView, - setUnitForReimburseView, - setWorkspaceApprovalMode, - setWorkspaceAutoReportingFrequency, - setWorkspaceAutoReportingMonthlyOffset, - setWorkspaceCurrencyDefault, - setWorkspaceErrors, - setWorkspaceInviteMessageDraft, - setWorkspacePayer, - setWorkspaceReimbursement, - updateAddress, - updateGeneralSettings, - updateLastAccessedWorkspace, - updateWorkspaceAvatar, - updateWorkspaceCustomUnitAndRate, - updateWorkspaceDescription, + clearPolicyErrorField, + isCurrencySupportedForDirectReimbursement, + getPrimaryPolicy, + createDraftWorkspace, + buildPolicyData, + enableExpensifyCard, + createPolicyExpenseChats, upgradeToCorporate, + openPolicyExpensifyCardsPage, + requestExpensifyCardLimitIncrease, + getAdminPoliciesConnectedToSageIntacct, }; export type {NewCustomUnit}; From cd4f3067e2ccc34d35c9714ef1c202c706ac34c4 Mon Sep 17 00:00:00 2001 From: Huu Le Date: Tue, 16 Jul 2024 22:37:23 +0700 Subject: [PATCH 12/13] remove update currency --- src/libs/actions/Policy/Policy.ts | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/libs/actions/Policy/Policy.ts b/src/libs/actions/Policy/Policy.ts index e8b80968ed70..8379ad9e9b19 100644 --- a/src/libs/actions/Policy/Policy.ts +++ b/src/libs/actions/Policy/Policy.ts @@ -1073,17 +1073,13 @@ function updateGeneralSettings(policyID: string, name: string, currencyValue?: s persistedRequests.forEach((request, index) => { const {command, data} = request; - if (command === WRITE_COMMANDS.CREATE_WORKSPACE && data?.policyID === policyID) { - const isPolicyNameChanged = data.policyName !== name; - const isCurrencyChanged = data.outputCurrency !== currency; - - if (isPolicyNameChanged || isCurrencyChanged) { + if (command === WRITE_COMMANDS.CREATE_WORKSPACE && data?.policyID === policyID) { + if (data.policyName !== name) { const createWorkspaceRequest = { ...request, data: { ...data, - policyName: isPolicyNameChanged ? name : data.policyName, - outputCurrency: isCurrencyChanged ? currency : data.outputCurrency, + policyName: name, }, }; PersistedRequests.update(index, createWorkspaceRequest); From ae3fb3a5dee13fe9538197ecec7a460256c8d333 Mon Sep 17 00:00:00 2001 From: Huu Le Date: Tue, 16 Jul 2024 22:49:24 +0700 Subject: [PATCH 13/13] remove space --- src/libs/actions/Policy/Policy.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/actions/Policy/Policy.ts b/src/libs/actions/Policy/Policy.ts index 8379ad9e9b19..95c2e1c721d0 100644 --- a/src/libs/actions/Policy/Policy.ts +++ b/src/libs/actions/Policy/Policy.ts @@ -1073,7 +1073,7 @@ function updateGeneralSettings(policyID: string, name: string, currencyValue?: s persistedRequests.forEach((request, index) => { const {command, data} = request; - if (command === WRITE_COMMANDS.CREATE_WORKSPACE && data?.policyID === policyID) { + if (command === WRITE_COMMANDS.CREATE_WORKSPACE && data?.policyID === policyID) { if (data.policyName !== name) { const createWorkspaceRequest = { ...request,