diff --git a/src/pages/workspace/tags/WorkspaceTagsSettingsPage.tsx b/src/pages/workspace/tags/WorkspaceTagsSettingsPage.tsx index 8401ea31f448a..23153aedef03c 100644 --- a/src/pages/workspace/tags/WorkspaceTagsSettingsPage.tsx +++ b/src/pages/workspace/tags/WorkspaceTagsSettingsPage.tsx @@ -12,19 +12,19 @@ import Text from '@components/Text'; import useLocalize from '@hooks/useLocalize'; import useNetwork from '@hooks/useNetwork'; import useThemeStyles from '@hooks/useThemeStyles'; -import * as Tag from '@libs/actions/Policy/Tag'; +import {disableWorkspaceBillableExpenses, setPolicyBillableMode} from '@libs/actions/Policy/Policy'; +import {clearPolicyTagListErrors, setPolicyRequiresTag} from '@libs/actions/Policy/Tag'; import Navigation from '@libs/Navigation/Navigation'; import type {PlatformStackScreenProps} from '@libs/Navigation/PlatformStackNavigation/types'; -import * as OptionsListUtils from '@libs/OptionsListUtils'; -import * as PolicyUtils from '@libs/PolicyUtils'; +import {hasEnabledOptions as hasEnabledOptionsUtil} from '@libs/OptionsListUtils'; +import {getTagLists as getTagListsUtil, isMultiLevelTags as isMultiLevelTagsUtil} from '@libs/PolicyUtils'; import type {SettingsNavigatorParamList} from '@navigation/types'; import AccessOrNotFoundWrapper from '@pages/workspace/AccessOrNotFoundWrapper'; -import * as Policy from '@userActions/Policy/Policy'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; import type SCREENS from '@src/SCREENS'; -import type * as OnyxTypes from '@src/types/onyx'; +import type {Policy} from '@src/types/onyx'; type WorkspaceTagsSettingsPageProps = PlatformStackScreenProps; @@ -33,45 +33,45 @@ type WorkspaceTagsSettingsPageProps = PlatformStackScreenProps) { +function billableExpensesPending(policy: OnyxEntry) { if (policy?.disabledFields?.defaultBillable) { return policy?.pendingFields?.disabledFields ?? policy?.pendingFields?.defaultBillable; } return policy?.pendingFields?.disabledFields; } -function toggleBillableExpenses(policy: OnyxEntry) { +function toggleBillableExpenses(policy: OnyxEntry) { if (policy?.disabledFields?.defaultBillable) { - Policy.setPolicyBillableMode(policy.id, false); + setPolicyBillableMode(policy.id, false); } else if (policy) { - Policy.disableWorkspaceBillableExpenses(policy.id); + disableWorkspaceBillableExpenses(policy.id); } } function WorkspaceTagsSettingsPage({route}: WorkspaceTagsSettingsPageProps) { - const policyID = route.params.policyID ?? '-1'; + const policyID = route.params.policyID; const backTo = route.params.backTo; const [policyTags] = useOnyx(`${ONYXKEYS.COLLECTION.POLICY_TAGS}${policyID}`); const styles = useThemeStyles(); const {translate} = useLocalize(); - const [policyTagLists, isMultiLevelTags] = useMemo(() => [PolicyUtils.getTagLists(policyTags), PolicyUtils.isMultiLevelTags(policyTags)], [policyTags]); - const isLoading = !PolicyUtils.getTagLists(policyTags)?.at(0) || Object.keys(policyTags ?? {}).at(0) === 'undefined'; + const [policyTagLists, isMultiLevelTags] = useMemo(() => [getTagListsUtil(policyTags), isMultiLevelTagsUtil(policyTags)], [policyTags]); + const isLoading = !getTagListsUtil(policyTags)?.at(0) || Object.keys(policyTags ?? {}).at(0) === 'undefined'; const {isOffline} = useNetwork(); - const hasEnabledOptions = OptionsListUtils.hasEnabledOptions(Object.values(policyTags ?? {}).flatMap(({tags}) => Object.values(tags))); + const hasEnabledOptions = hasEnabledOptionsUtil(Object.values(policyTags ?? {}).flatMap(({tags}) => Object.values(tags))); const updateWorkspaceRequiresTag = useCallback( (value: boolean) => { - Tag.setPolicyRequiresTag(policyID, value); + setPolicyRequiresTag(policyID, value); }, [policyID], ); const isQuickSettingsFlow = !!backTo; - const getTagsSettings = (policy: OnyxEntry) => ( + const getTagsSettings = (policy: OnyxEntry) => ( {!isMultiLevelTags && ( Tag.clearPolicyTagListErrors(policyID, policyTagLists.at(0)?.orderWeight ?? 0)} + onClose={() => clearPolicyTagListErrors(policyID, policyTagLists.at(0)?.orderWeight ?? 0)} pendingAction={policyTags?.[policyTagLists.at(0)?.name ?? '']?.pendingAction} errorRowStyles={styles.mh5} > @@ -104,18 +104,17 @@ function WorkspaceTagsSettingsPage({route}: WorkspaceTagsSettingsPageProps) { /> - {!!policy?.areRulesEnabled && ( - - - {translate('workspace.tags.trackBillable')} - toggleBillableExpenses(policy)} - /> - - - )} + + + {translate('workspace.tags.trackBillable')} + toggleBillableExpenses(policy)} + disabled={!policy?.areTagsEnabled} + /> + + ); return (