diff --git a/src/libs/OptionsListUtils.ts b/src/libs/OptionsListUtils.ts index 50242435ed36..2a25178f26a6 100644 --- a/src/libs/OptionsListUtils.ts +++ b/src/libs/OptionsListUtils.ts @@ -1945,9 +1945,11 @@ function getOptions( reportOption.isPolicyExpenseChat && reportOption.ownerAccountID === currentUserAccountID && includeOwnedWorkspaceChats && !reportOption.private_isArchived; const shouldShowInvoiceRoom = - includeInvoiceRooms && ReportUtils.isInvoiceRoom(reportOption.item) && ReportUtils.isPolicyAdmin(reportOption.policyID ?? '', policies) && !reportOption.private_isArchived; - // TODO: Uncomment the following line when the invoices screen is ready - https://github.com/Expensify/App/issues/45175. - // && PolicyUtils.canSendInvoiceFromWorkspace(reportOption.policyID); + includeInvoiceRooms && + ReportUtils.isInvoiceRoom(reportOption.item) && + ReportUtils.isPolicyAdmin(reportOption.policyID ?? '', policies) && + !reportOption.private_isArchived && + PolicyUtils.canSendInvoiceFromWorkspace(reportOption.policyID); /** Exclude the report option if it doesn't meet any of the following conditions: diff --git a/src/libs/PolicyUtils.ts b/src/libs/PolicyUtils.ts index d276909103cb..4d13051d107c 100644 --- a/src/libs/PolicyUtils.ts +++ b/src/libs/PolicyUtils.ts @@ -588,9 +588,7 @@ function canSendInvoiceFromWorkspace(policyID: string | undefined): boolean { /** Whether the user can send invoice */ function canSendInvoice(policies: OnyxCollection | null, currentUserLogin: string | undefined): boolean { - return getActiveAdminWorkspaces(policies, currentUserLogin).length > 0; - // TODO: Uncomment the following line when the invoices screen is ready - https://github.com/Expensify/App/issues/45175. - // return getActiveAdminWorkspaces(policies).some((policy) => canSendInvoiceFromWorkspace(policy.id)); + return getActiveAdminWorkspaces(policies, currentUserLogin).some((policy) => canSendInvoiceFromWorkspace(policy.id)); } function hasDependentTags(policy: OnyxEntry, policyTagList: OnyxEntry) { diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index f4391a1171ac..d009435f95c1 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -6439,9 +6439,7 @@ function getMoneyRequestOptions(report: OnyxEntry, policy: OnyxEntry { /** * Returns a primary policy for the user */ -// TODO: Use getInvoicePrimaryWorkspace when the invoices screen is ready - https://github.com/Expensify/App/issues/45175. function getPrimaryPolicy(activePolicyID: OnyxEntry, currentUserLogin: string | undefined): Policy | undefined { const activeAdminWorkspaces = PolicyUtils.getActiveAdminWorkspaces(allPolicies, currentUserLogin); const primaryPolicy: Policy | null | undefined = activeAdminWorkspaces.find((policy) => policy.id === activePolicyID); diff --git a/src/pages/iou/request/MoneyRequestParticipantsSelector.tsx b/src/pages/iou/request/MoneyRequestParticipantsSelector.tsx index f10575f8c1d0..a83819afdfb4 100644 --- a/src/pages/iou/request/MoneyRequestParticipantsSelector.tsx +++ b/src/pages/iou/request/MoneyRequestParticipantsSelector.tsx @@ -257,8 +257,7 @@ function MoneyRequestParticipantsSelector({participants = CONST.EMPTY_ARRAY, onF ]; if (iouType === CONST.IOU.TYPE.INVOICE) { - // TODO: Use getInvoicePrimaryWorkspace when the invoices screen is ready - https://github.com/Expensify/App/issues/45175. - const policyID = option.item && ReportUtils.isInvoiceRoom(option.item) ? option.policyID : Policy.getPrimaryPolicy(activePolicyID, currentUserLogin)?.id; + const policyID = option.item && ReportUtils.isInvoiceRoom(option.item) ? option.policyID : Policy.getInvoicePrimaryWorkspace(activePolicyID, currentUserLogin)?.id; newParticipants.push({ policyID, isSender: true, diff --git a/src/pages/iou/request/step/IOURequestStepSendFrom.tsx b/src/pages/iou/request/step/IOURequestStepSendFrom.tsx index a5279bd14bdb..40699d5f8d2b 100644 --- a/src/pages/iou/request/step/IOURequestStepSendFrom.tsx +++ b/src/pages/iou/request/step/IOURequestStepSendFrom.tsx @@ -1,6 +1,5 @@ import React, {useMemo} from 'react'; -import {useOnyx, withOnyx} from 'react-native-onyx'; -import type {OnyxCollection} from 'react-native-onyx'; +import {useOnyx} from 'react-native-onyx'; import * as Expensicons from '@components/Icon/Expensicons'; import SelectionList from '@components/SelectionList'; import type {ListItem} from '@components/SelectionList/types'; @@ -14,7 +13,6 @@ import * as IOU from '@userActions/IOU'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import type SCREENS from '@src/SCREENS'; -import type {Policy} from '@src/types/onyx'; import StepScreenWrapper from './StepScreenWrapper'; import withFullTransactionOrNotFound from './withFullTransactionOrNotFound'; import type {WithFullTransactionOrNotFoundProps} from './withFullTransactionOrNotFound'; @@ -25,26 +23,19 @@ type WorkspaceListItem = ListItem & { value: string; }; -type IOURequestStepSendFromOnyxProps = { - /** The list of all policies */ - allPolicies: OnyxCollection; -}; - -type IOURequestStepSendFromProps = IOURequestStepSendFromOnyxProps & - WithWritableReportOrNotFoundProps & +type IOURequestStepSendFromProps = WithWritableReportOrNotFoundProps & WithFullTransactionOrNotFoundProps; -function IOURequestStepSendFrom({route, transaction, allPolicies}: IOURequestStepSendFromProps) { +function IOURequestStepSendFrom({route, transaction}: IOURequestStepSendFromProps) { const {translate} = useLocalize(); const {transactionID, backTo} = route.params; const [currentUserLogin] = useOnyx(ONYXKEYS.SESSION, {selector: (session) => session?.email}); + const [allPolicies] = useOnyx(ONYXKEYS.COLLECTION.POLICY); const selectedWorkspace = useMemo(() => transaction?.participants?.find((participant) => participant.isSender), [transaction]); const workspaceOptions: WorkspaceListItem[] = useMemo(() => { - const availableWorkspaces = PolicyUtils.getActiveAdminWorkspaces(allPolicies, currentUserLogin); - // TODO: Uncomment the following line when the invoices screen is ready - https://github.com/Expensify/App/issues/45175. - // .filter((policy) => PolicyUtils.canSendInvoiceFromWorkspace(policy.id)); + const availableWorkspaces = PolicyUtils.getActiveAdminWorkspaces(allPolicies, currentUserLogin).filter((policy) => PolicyUtils.canSendInvoiceFromWorkspace(policy.id)); return availableWorkspaces .sort((policy1, policy2) => sortWorkspacesBySelected({policyID: policy1.id, name: policy1.name}, {policyID: policy2.id, name: policy2.name}, selectedWorkspace?.policyID)) @@ -103,12 +94,4 @@ function IOURequestStepSendFrom({route, transaction, allPolicies}: IOURequestSte IOURequestStepSendFrom.displayName = 'IOURequestStepSendFrom'; -export default withWritableReportOrNotFound( - withFullTransactionOrNotFound( - withOnyx({ - allPolicies: { - key: ONYXKEYS.COLLECTION.POLICY, - }, - })(IOURequestStepSendFrom), - ), -); +export default withWritableReportOrNotFound(withFullTransactionOrNotFound(IOURequestStepSendFrom));