From 25188b923a3527528b52efebf41995fff5624299 Mon Sep 17 00:00:00 2001 From: Alex Beaman Date: Tue, 11 Feb 2025 20:48:04 -0700 Subject: [PATCH 1/6] Remove beta categoryAndTagApprovers --- src/CONST.ts | 1 - src/libs/Permissions.ts | 5 -- .../categories/CategorySettingsPage.tsx | 46 ++++++++----------- src/pages/workspace/tags/TagSettingsPage.tsx | 4 +- 4 files changed, 21 insertions(+), 35 deletions(-) diff --git a/src/CONST.ts b/src/CONST.ts index 55f0dafd8517..ca3738cd272e 100755 --- a/src/CONST.ts +++ b/src/CONST.ts @@ -741,7 +741,6 @@ const CONST = { REPORT_FIELDS_FEATURE: 'reportFieldsFeature', NETSUITE_USA_TAX: 'netsuiteUsaTax', COMBINED_TRACK_SUBMIT: 'combinedTrackSubmit', - CATEGORY_AND_TAG_APPROVERS: 'categoryAndTagApprovers', PER_DIEM: 'newDotPerDiem', NEWDOT_MERGE_ACCOUNTS: 'newDotMergeAccounts', NEWDOT_MANAGER_MCTEST: 'newDotManagerMcTest', diff --git a/src/libs/Permissions.ts b/src/libs/Permissions.ts index 9ed5881513f2..d26ff8c245a9 100644 --- a/src/libs/Permissions.ts +++ b/src/libs/Permissions.ts @@ -18,10 +18,6 @@ function canUseNetSuiteUSATax(betas: OnyxEntry): boolean { return !!betas?.includes(CONST.BETAS.NETSUITE_USA_TAX) || canUseAllBetas(betas); } -function canUseCategoryAndTagApprovers(betas: OnyxEntry): boolean { - return !!betas?.includes(CONST.BETAS.CATEGORY_AND_TAG_APPROVERS) || canUseAllBetas(betas); -} - function canUsePerDiem(betas: OnyxEntry): boolean { return !!betas?.includes(CONST.BETAS.PER_DIEM) || canUseAllBetas(betas); } @@ -58,7 +54,6 @@ export default { canUseLinkPreviews, canUseSpotnanaTravel, canUseNetSuiteUSATax, - canUseCategoryAndTagApprovers, canUsePerDiem, canUseMergeAccounts, canUseManagerMcTest, diff --git a/src/pages/workspace/categories/CategorySettingsPage.tsx b/src/pages/workspace/categories/CategorySettingsPage.tsx index 016cbe91cb72..0aa568a85cd1 100644 --- a/src/pages/workspace/categories/CategorySettingsPage.tsx +++ b/src/pages/workspace/categories/CategorySettingsPage.tsx @@ -13,7 +13,6 @@ import Switch from '@components/Switch'; import Text from '@components/Text'; import TextLink from '@components/TextLink'; import useLocalize from '@hooks/useLocalize'; -import usePermissions from '@hooks/usePermissions'; import usePolicy from '@hooks/usePolicy'; import useThemeStyles from '@hooks/useThemeStyles'; import * as CategoryUtils from '@libs/CategoryUtils'; @@ -44,7 +43,6 @@ function CategorySettingsPage({ const [policyCategories] = useOnyx(`${ONYXKEYS.COLLECTION.POLICY_CATEGORIES}${policyID}`); const styles = useThemeStyles(); const {translate} = useLocalize(); - const {canUseCategoryAndTagApprovers} = usePermissions(); const [deleteCategoryConfirmModalVisible, setDeleteCategoryConfirmModalVisible] = useState(false); const policy = usePolicy(policyID); @@ -267,30 +265,26 @@ function CategorySettingsPage({ /> )} - {!!canUseCategoryAndTagApprovers && ( - <> - { - Navigation.navigate(ROUTES.WORSKPACE_CATEGORY_APPROVER.getRoute(policyID, policyCategory.name)); - }} - shouldShowRightIcon - disabled={approverDisabled} - /> - {approverDisabled && ( - - {translate('workspace.rules.categoryRules.goTo')}{' '} - Navigation.navigate(ROUTES.WORKSPACE_MORE_FEATURES.getRoute(policyID))} - > - {translate('workspace.common.moreFeatures')} - {' '} - {translate('workspace.rules.categoryRules.andEnableWorkflows')} - - )} - + { + Navigation.navigate(ROUTES.WORSKPACE_CATEGORY_APPROVER.getRoute(policyID, policyCategory.name)); + }} + shouldShowRightIcon + disabled={approverDisabled} + /> + {approverDisabled && ( + + {translate('workspace.rules.categoryRules.goTo')}{' '} + Navigation.navigate(ROUTES.WORKSPACE_MORE_FEATURES.getRoute(policyID))} + > + {translate('workspace.common.moreFeatures')} + {' '} + {translate('workspace.rules.categoryRules.andEnableWorkflows')} + )} {!!policy?.tax?.trackingEnabled && ( PolicyUtils.getTagList(policyTags, orderWeight), [policyTags, orderWeight]); const policy = usePolicy(policyID); const hasAccountingConnections = PolicyUtils.hasAccountingConnections(policy); - const {canUseCategoryAndTagApprovers} = usePermissions(); const [isDeleteTagModalOpen, setIsDeleteTagModalOpen] = React.useState(false); const isQuickSettingsFlow = !!backTo; const tagApprover = PolicyUtils.getTagApproverRule(policyID, route.params?.tagName)?.approver ?? ''; @@ -176,7 +174,7 @@ function TagSettingsPage({route, navigation}: TagSettingsPageProps) { /> - {!!policy?.areRulesEnabled && !!canUseCategoryAndTagApprovers && !isMultiLevelTags && ( + {!!policy?.areRulesEnabled && !isMultiLevelTags && ( <> {translate('workspace.tags.tagRules')} From 19bf51ff639f694a2f4df961b965eb3448132b06 Mon Sep 17 00:00:00 2001 From: Alex Beaman Date: Wed, 12 Feb 2025 10:26:06 -0700 Subject: [PATCH 2/6] Remove default imports from category settings page --- .../categories/CategorySettingsPage.tsx | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/src/pages/workspace/categories/CategorySettingsPage.tsx b/src/pages/workspace/categories/CategorySettingsPage.tsx index 0aa568a85cd1..25706b4b0e92 100644 --- a/src/pages/workspace/categories/CategorySettingsPage.tsx +++ b/src/pages/workspace/categories/CategorySettingsPage.tsx @@ -3,7 +3,7 @@ import {View} from 'react-native'; import {useOnyx} from 'react-native-onyx'; import ConfirmModal from '@components/ConfirmModal'; import HeaderWithBackButton from '@components/HeaderWithBackButton'; -import * as Expensicons from '@components/Icon/Expensicons'; +import {Trashcan} from '@components/Icon/Expensicons'; import MenuItem from '@components/MenuItem'; import MenuItemWithTopDescription from '@components/MenuItemWithTopDescription'; import OfflineWithFeedback from '@components/OfflineWithFeedback'; @@ -15,18 +15,18 @@ import TextLink from '@components/TextLink'; import useLocalize from '@hooks/useLocalize'; import usePolicy from '@hooks/usePolicy'; import useThemeStyles from '@hooks/useThemeStyles'; -import * as CategoryUtils from '@libs/CategoryUtils'; -import * as CurrencyUtils from '@libs/CurrencyUtils'; -import * as ErrorUtils from '@libs/ErrorUtils'; +import {formatDefaultTaxRateText, formatRequireReceiptsOverText, getCategoryApproverRule, getCategoryDefaultTaxRate} from '@libs/CategoryUtils'; +import {convertToDisplayString} from '@libs/CurrencyUtils'; +import {getLatestErrorMessageField} from '@libs/ErrorUtils'; import Navigation from '@libs/Navigation/Navigation'; import type {PlatformStackScreenProps} from '@libs/Navigation/PlatformStackNavigation/types'; -import * as PersonalDetailsUtils from '@libs/PersonalDetailsUtils'; +import {getPersonalDetailByEmail} from '@libs/PersonalDetailsUtils'; import {isControlPolicy} from '@libs/PolicyUtils'; -import * as PolicyUtils from '@libs/PolicyUtils'; +import {getWorkflowApprovalsUnavailable} from '@libs/PolicyUtils'; import type {SettingsNavigatorParamList} from '@navigation/types'; import NotFoundPage from '@pages/ErrorPage/NotFoundPage'; import AccessOrNotFoundWrapper from '@pages/workspace/AccessOrNotFoundWrapper'; -import * as Category from '@userActions/Policy/Category'; +import {clearCategoryErrors, deleteWorkspaceCategories, setPolicyCategoryDescriptionRequired, setWorkspaceCategoryDescriptionHint, setWorkspaceCategoryEnabled} from '@userActions/Policy/Category'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; @@ -69,19 +69,19 @@ function CategorySettingsPage({ return ''; } - return `${CurrencyUtils.convertToDisplayString(policyCategory?.maxExpenseAmount, policyCurrency)} ${CONST.DOT_SEPARATOR} ${translate( + return `${convertToDisplayString(policyCategory?.maxExpenseAmount, policyCurrency)} ${CONST.DOT_SEPARATOR} ${translate( `workspace.rules.categoryRules.expenseLimitTypes.${policyCategoryExpenseLimitType}`, )}`; }, [policyCategory?.maxExpenseAmount, policyCategoryExpenseLimitType, policyCurrency, translate]); const approverText = useMemo(() => { - const categoryApprover = CategoryUtils.getCategoryApproverRule(policy?.rules?.approvalRules ?? [], categoryName)?.approver ?? ''; - const approver = PersonalDetailsUtils.getPersonalDetailByEmail(categoryApprover); + const categoryApprover = getCategoryApproverRule(policy?.rules?.approvalRules ?? [], categoryName)?.approver ?? ''; + const approver = getPersonalDetailByEmail(categoryApprover); return approver?.displayName ?? categoryApprover; }, [categoryName, policy?.rules?.approvalRules]); const defaultTaxRateText = useMemo(() => { - const taxID = CategoryUtils.getCategoryDefaultTaxRate(policy?.rules?.expenseRules ?? [], categoryName, policy?.taxRates?.defaultExternalID); + const taxID = getCategoryDefaultTaxRate(policy?.rules?.expenseRules ?? [], categoryName, policy?.taxRates?.defaultExternalID); if (!taxID) { return ''; @@ -93,14 +93,14 @@ function CategorySettingsPage({ return ''; } - return CategoryUtils.formatDefaultTaxRateText(translate, taxID, taxRate, policy?.taxRates); + return formatDefaultTaxRateText(translate, taxID, taxRate, policy?.taxRates); }, [categoryName, policy?.rules?.expenseRules, policy?.taxRates, translate]); const requireReceiptsOverText = useMemo(() => { if (!policy) { return ''; } - return CategoryUtils.formatRequireReceiptsOverText(translate, policy, policyCategory?.maxAmountNoReceipt); + return formatRequireReceiptsOverText(translate, policy, policyCategory?.maxAmountNoReceipt); }, [policy, policyCategory?.maxAmountNoReceipt, translate]); if (!policyCategory) { @@ -108,7 +108,7 @@ function CategorySettingsPage({ } const updateWorkspaceRequiresCategory = (value: boolean) => { - Category.setWorkspaceCategoryEnabled(policyID, {[policyCategory.name]: {name: policyCategory.name, enabled: value}}); + setWorkspaceCategoryEnabled(policyID, {[policyCategory.name]: {name: policyCategory.name, enabled: value}}); }; const navigateToEditCategory = () => { @@ -118,13 +118,13 @@ function CategorySettingsPage({ }; const deleteCategory = () => { - Category.deleteWorkspaceCategories(policyID, [categoryName]); + deleteWorkspaceCategories(policyID, [categoryName]); setDeleteCategoryConfirmModalVisible(false); navigateBack(); }; const isThereAnyAccountingConnection = Object.keys(policy?.connections ?? {}).length !== 0; - const workflowApprovalsUnavailable = PolicyUtils.getWorkflowApprovalsUnavailable(policy); + const workflowApprovalsUnavailable = getWorkflowApprovalsUnavailable(policy); const approverDisabled = !policy?.areWorkflowsEnabled || workflowApprovalsUnavailable; return ( @@ -156,10 +156,10 @@ function CategorySettingsPage({ /> Category.clearCategoryErrors(policyID, categoryName)} + onClose={() => clearCategoryErrors(policyID, categoryName)} > @@ -245,9 +245,9 @@ function CategorySettingsPage({ accessibilityLabel={translate('workspace.rules.categoryRules.requireDescription')} onToggle={() => { if (policyCategory.commentHint && areCommentsRequired) { - Category.setWorkspaceCategoryDescriptionHint(policyID, categoryName, ''); + setWorkspaceCategoryDescriptionHint(policyID, categoryName, ''); } - Category.setPolicyCategoryDescriptionRequired(policyID, categoryName, !areCommentsRequired); + setPolicyCategoryDescriptionRequired(policyID, categoryName, !areCommentsRequired); }} /> @@ -322,7 +322,7 @@ function CategorySettingsPage({ {!isThereAnyAccountingConnection && ( setDeleteCategoryConfirmModalVisible(true)} /> From 5ca5db14dee572a7ec6d002722d1774b5c14c28c Mon Sep 17 00:00:00 2001 From: Alex Beaman Date: Wed, 12 Feb 2025 10:30:11 -0700 Subject: [PATCH 3/6] Fix import spacing and order --- .../workspace/categories/CategorySettingsPage.tsx | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/pages/workspace/categories/CategorySettingsPage.tsx b/src/pages/workspace/categories/CategorySettingsPage.tsx index 25706b4b0e92..983795fd3e7c 100644 --- a/src/pages/workspace/categories/CategorySettingsPage.tsx +++ b/src/pages/workspace/categories/CategorySettingsPage.tsx @@ -21,12 +21,17 @@ import {getLatestErrorMessageField} from '@libs/ErrorUtils'; import Navigation from '@libs/Navigation/Navigation'; import type {PlatformStackScreenProps} from '@libs/Navigation/PlatformStackNavigation/types'; import {getPersonalDetailByEmail} from '@libs/PersonalDetailsUtils'; -import {isControlPolicy} from '@libs/PolicyUtils'; -import {getWorkflowApprovalsUnavailable} from '@libs/PolicyUtils'; +import {getWorkflowApprovalsUnavailable, isControlPolicy} from '@libs/PolicyUtils'; import type {SettingsNavigatorParamList} from '@navigation/types'; import NotFoundPage from '@pages/ErrorPage/NotFoundPage'; import AccessOrNotFoundWrapper from '@pages/workspace/AccessOrNotFoundWrapper'; -import {clearCategoryErrors, deleteWorkspaceCategories, setPolicyCategoryDescriptionRequired, setWorkspaceCategoryDescriptionHint, setWorkspaceCategoryEnabled} from '@userActions/Policy/Category'; +import { + clearCategoryErrors, + deleteWorkspaceCategories, + setPolicyCategoryDescriptionRequired, + setWorkspaceCategoryDescriptionHint, + setWorkspaceCategoryEnabled, +} from '@userActions/Policy/Category'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; From 5daa6b6d260cf479a076b94885a6defdde21060c Mon Sep 17 00:00:00 2001 From: Alex Beaman Date: Wed, 12 Feb 2025 10:34:02 -0700 Subject: [PATCH 4/6] Fix default imports on tag settings apge --- src/pages/workspace/tags/TagSettingsPage.tsx | 48 ++++++++++++-------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/src/pages/workspace/tags/TagSettingsPage.tsx b/src/pages/workspace/tags/TagSettingsPage.tsx index 906ea1fa1a6a..2c8ace4492c3 100644 --- a/src/pages/workspace/tags/TagSettingsPage.tsx +++ b/src/pages/workspace/tags/TagSettingsPage.tsx @@ -14,16 +14,24 @@ import TextLink from '@components/TextLink'; import useLocalize from '@hooks/useLocalize'; import usePolicy from '@hooks/usePolicy'; import useThemeStyles from '@hooks/useThemeStyles'; -import * as ErrorUtils from '@libs/ErrorUtils'; +import {getLatestErrorMessageField} from '@libs/ErrorUtils'; import Navigation from '@libs/Navigation/Navigation'; import type {PlatformStackScreenProps} from '@libs/Navigation/PlatformStackNavigation/types'; -import * as PersonalDetailsUtils from '@libs/PersonalDetailsUtils'; -import * as PolicyUtils from '@libs/PolicyUtils'; +import {getPersonalDetailByEmail} from '@libs/PersonalDetailsUtils'; +import { + getCleanedTagName, + getTagApproverRule, + getTagList, + getWorkflowApprovalsUnavailable, + hasAccountingConnections, + isControlPolicy, + isMultiLevelTags, +} from '@libs/PolicyUtils'; import type {SettingsNavigatorParamList} from '@navigation/types'; import NotFoundPage from '@pages/ErrorPage/NotFoundPage'; import AccessOrNotFoundWrapper from '@pages/workspace/AccessOrNotFoundWrapper'; import {setWorkspaceTagEnabled} from '@userActions/Policy/Tag'; -import * as Tag from '@userActions/Policy/Tag'; +import {clearPolicyTagErrors, deletePolicyTags} from '@userActions/Policy/Tag'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; @@ -36,13 +44,13 @@ function TagSettingsPage({route, navigation}: TagSettingsPageProps) { const {orderWeight, policyID, tagName, backTo} = route.params; const styles = useThemeStyles(); const {translate} = useLocalize(); - const policyTag = useMemo(() => PolicyUtils.getTagList(policyTags, orderWeight), [policyTags, orderWeight]); + const policyTag = useMemo(() => getTagList(policyTags, orderWeight), [policyTags, orderWeight]); const policy = usePolicy(policyID); - const hasAccountingConnections = PolicyUtils.hasAccountingConnections(policy); + const policyHasAccountingConnections = hasAccountingConnections(policy); const [isDeleteTagModalOpen, setIsDeleteTagModalOpen] = React.useState(false); const isQuickSettingsFlow = !!backTo; - const tagApprover = PolicyUtils.getTagApproverRule(policyID, route.params?.tagName)?.approver ?? ''; - const approver = PersonalDetailsUtils.getPersonalDetailByEmail(tagApprover); + const tagApprover = getTagApproverRule(policyID, route.params?.tagName)?.approver ?? ''; + const approver = getPersonalDetailByEmail(tagApprover); const approverText = approver?.displayName ?? tagApprover; const currentPolicyTag = policyTag.tags[tagName] ?? Object.values(policyTag.tags ?? {}).find((tag) => tag.previousTagName === tagName); @@ -58,7 +66,7 @@ function TagSettingsPage({route, navigation}: TagSettingsPageProps) { } const deleteTagAndHideModal = () => { - Tag.deletePolicyTags(policyID, [currentPolicyTag.name]); + deletePolicyTags(policyID, [currentPolicyTag.name]); setIsDeleteTagModalOpen(false); Navigation.goBack(isQuickSettingsFlow ? ROUTES.SETTINGS_TAGS_ROOT.getRoute(policyID, backTo) : undefined); }; @@ -76,7 +84,7 @@ function TagSettingsPage({route, navigation}: TagSettingsPageProps) { }; const navigateToEditGlCode = () => { - if (!PolicyUtils.isControlPolicy(policy)) { + if (!isControlPolicy(policy)) { Navigation.navigate( ROUTES.WORKSPACE_UPGRADE.getRoute( policyID, @@ -104,10 +112,10 @@ function TagSettingsPage({route, navigation}: TagSettingsPageProps) { }; const isThereAnyAccountingConnection = Object.keys(policy?.connections ?? {}).length !== 0; - const isMultiLevelTags = PolicyUtils.isMultiLevelTags(policyTags); + const policyHasMultiLevelTags = isMultiLevelTags(policyTags); - const shouldShowDeleteMenuItem = !isThereAnyAccountingConnection && !isMultiLevelTags; - const workflowApprovalsUnavailable = PolicyUtils.getWorkflowApprovalsUnavailable(policy); + const shouldShowDeleteMenuItem = !isThereAnyAccountingConnection && !policyHasMultiLevelTags; + const workflowApprovalsUnavailable = getWorkflowApprovalsUnavailable(policy); const approverDisabled = !policy?.areWorkflowsEnabled || workflowApprovalsUnavailable; return ( @@ -122,7 +130,7 @@ function TagSettingsPage({route, navigation}: TagSettingsPageProps) { testID={TagSettingsPage.displayName} > Navigation.goBack(isQuickSettingsFlow ? ROUTES.SETTINGS_TAGS_ROOT.getRoute(policyID, backTo) : undefined)} /> @@ -139,10 +147,10 @@ function TagSettingsPage({route, navigation}: TagSettingsPageProps) { /> Tag.clearPolicyTagErrors(policyID, tagName, orderWeight)} + onClose={() => clearPolicyTagErrors(policyID, tagName, orderWeight)} > @@ -157,7 +165,7 @@ function TagSettingsPage({route, navigation}: TagSettingsPageProps) { - {!!policy?.areRulesEnabled && !isMultiLevelTags && ( + {!!policy?.areRulesEnabled && !policyHasMultiLevelTags && ( <> {translate('workspace.tags.tagRules')} From 2c420b5d4e41bebe59f28269fce9a36149086a70 Mon Sep 17 00:00:00 2001 From: Alex Beaman Date: Wed, 12 Feb 2025 10:38:11 -0700 Subject: [PATCH 5/6] Fix a few more lint things --- src/pages/workspace/tags/TagSettingsPage.tsx | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/src/pages/workspace/tags/TagSettingsPage.tsx b/src/pages/workspace/tags/TagSettingsPage.tsx index 2c8ace4492c3..bc4e9ecd9a21 100644 --- a/src/pages/workspace/tags/TagSettingsPage.tsx +++ b/src/pages/workspace/tags/TagSettingsPage.tsx @@ -18,20 +18,11 @@ import {getLatestErrorMessageField} from '@libs/ErrorUtils'; import Navigation from '@libs/Navigation/Navigation'; import type {PlatformStackScreenProps} from '@libs/Navigation/PlatformStackNavigation/types'; import {getPersonalDetailByEmail} from '@libs/PersonalDetailsUtils'; -import { - getCleanedTagName, - getTagApproverRule, - getTagList, - getWorkflowApprovalsUnavailable, - hasAccountingConnections, - isControlPolicy, - isMultiLevelTags, -} from '@libs/PolicyUtils'; +import {getCleanedTagName, getTagApproverRule, getTagList, getWorkflowApprovalsUnavailable, hasAccountingConnections, isControlPolicy, isMultiLevelTags} from '@libs/PolicyUtils'; import type {SettingsNavigatorParamList} from '@navigation/types'; import NotFoundPage from '@pages/ErrorPage/NotFoundPage'; import AccessOrNotFoundWrapper from '@pages/workspace/AccessOrNotFoundWrapper'; -import {setWorkspaceTagEnabled} from '@userActions/Policy/Tag'; -import {clearPolicyTagErrors, deletePolicyTags} from '@userActions/Policy/Tag'; +import {clearPolicyTagErrors, deletePolicyTags, setWorkspaceTagEnabled} from '@userActions/Policy/Tag'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; @@ -90,8 +81,8 @@ function TagSettingsPage({route, navigation}: TagSettingsPageProps) { policyID, CONST.UPGRADE_FEATURE_INTRO_MAPPING.glCodes.alias, isQuickSettingsFlow - ? ROUTES.SETTINGS_TAG_GL_CODE.getRoute(policy?.id ?? '', orderWeight, tagName, backTo) - : ROUTES.WORKSPACE_TAG_GL_CODE.getRoute(policy?.id ?? '', orderWeight, tagName), + ? ROUTES.SETTINGS_TAG_GL_CODE.getRoute(policy?.id ?? `${CONST.DEFAULT_NUMBER_ID}`, orderWeight, tagName, backTo) + : ROUTES.WORKSPACE_TAG_GL_CODE.getRoute(policy?.id ?? `${CONST.DEFAULT_NUMBER_ID}`, orderWeight, tagName), ), ); return; From 5165d3fe7e2eb09a87da7707dff828637d9177df Mon Sep 17 00:00:00 2001 From: Alex Beaman Date: Wed, 12 Feb 2025 11:11:29 -0700 Subject: [PATCH 6/6] Use correct approach for changing fn names --- src/pages/workspace/tags/TagSettingsPage.tsx | 23 +++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/pages/workspace/tags/TagSettingsPage.tsx b/src/pages/workspace/tags/TagSettingsPage.tsx index bc4e9ecd9a21..5615d13985d4 100644 --- a/src/pages/workspace/tags/TagSettingsPage.tsx +++ b/src/pages/workspace/tags/TagSettingsPage.tsx @@ -18,7 +18,15 @@ import {getLatestErrorMessageField} from '@libs/ErrorUtils'; import Navigation from '@libs/Navigation/Navigation'; import type {PlatformStackScreenProps} from '@libs/Navigation/PlatformStackNavigation/types'; import {getPersonalDetailByEmail} from '@libs/PersonalDetailsUtils'; -import {getCleanedTagName, getTagApproverRule, getTagList, getWorkflowApprovalsUnavailable, hasAccountingConnections, isControlPolicy, isMultiLevelTags} from '@libs/PolicyUtils'; +import { + getCleanedTagName, + getTagApproverRule, + getTagList, + getWorkflowApprovalsUnavailable, + hasAccountingConnections as hasAccountingConnectionsPolicyUtils, + isControlPolicy, + isMultiLevelTags as isMultiLevelTagsPolicyUtils, +} from '@libs/PolicyUtils'; import type {SettingsNavigatorParamList} from '@navigation/types'; import NotFoundPage from '@pages/ErrorPage/NotFoundPage'; import AccessOrNotFoundWrapper from '@pages/workspace/AccessOrNotFoundWrapper'; @@ -37,7 +45,7 @@ function TagSettingsPage({route, navigation}: TagSettingsPageProps) { const {translate} = useLocalize(); const policyTag = useMemo(() => getTagList(policyTags, orderWeight), [policyTags, orderWeight]); const policy = usePolicy(policyID); - const policyHasAccountingConnections = hasAccountingConnections(policy); + const hasAccountingConnections = hasAccountingConnectionsPolicyUtils(policy); const [isDeleteTagModalOpen, setIsDeleteTagModalOpen] = React.useState(false); const isQuickSettingsFlow = !!backTo; const tagApprover = getTagApproverRule(policyID, route.params?.tagName)?.approver ?? ''; @@ -103,9 +111,9 @@ function TagSettingsPage({route, navigation}: TagSettingsPageProps) { }; const isThereAnyAccountingConnection = Object.keys(policy?.connections ?? {}).length !== 0; - const policyHasMultiLevelTags = isMultiLevelTags(policyTags); + const isMultiLevelTags = isMultiLevelTagsPolicyUtils(policyTags); - const shouldShowDeleteMenuItem = !isThereAnyAccountingConnection && !policyHasMultiLevelTags; + const shouldShowDeleteMenuItem = !isThereAnyAccountingConnection && !isMultiLevelTags; const workflowApprovalsUnavailable = getWorkflowApprovalsUnavailable(policy); const approverDisabled = !policy?.areWorkflowsEnabled || workflowApprovalsUnavailable; @@ -164,16 +172,15 @@ function TagSettingsPage({route, navigation}: TagSettingsPageProps) { - {!!policy?.areRulesEnabled && !policyHasMultiLevelTags && ( + {!!policy?.areRulesEnabled && !isMultiLevelTags && ( <> {translate('workspace.tags.tagRules')}