From 09f4b6a495dcc3130cc128006516e2dca8e5d4e8 Mon Sep 17 00:00:00 2001 From: Srikar Parsi Date: Sun, 21 Apr 2024 15:19:27 -0400 Subject: [PATCH 01/12] Add ReportNameValuePairs key to Report Type --- src/types/onyx/Report.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/types/onyx/Report.ts b/src/types/onyx/Report.ts index 7b9e7de3ca8..1026384970d 100644 --- a/src/types/onyx/Report.ts +++ b/src/types/onyx/Report.ts @@ -30,6 +30,8 @@ type Participant = { type Participants = Record; +type ReportNameKeys = 'isArchived' | 'isPinned' | 'isUnread' | 'isUnreadMention' | 'isUnreadAction' | 'isUnreadActionMention'; + type Report = OnyxCommon.OnyxValueWithOfflineFeedback< { /** The URL of the Group Chat report custom avatar */ @@ -186,6 +188,9 @@ type Report = OnyxCommon.OnyxValueWithOfflineFeedback< transactionThreadReportID?: string; fieldList?: Record; + + /** The reports name value pairs */ + reportNameValuePairs?: Record; }, PolicyReportField['fieldID'] >; From 90e68d20a8748b551144ed269678a60789f04039 Mon Sep 17 00:00:00 2001 From: Srikar Parsi Date: Sun, 21 Apr 2024 16:57:00 -0400 Subject: [PATCH 02/12] move to const --- src/CONST.ts | 7 ++++++- src/types/onyx/Report.ts | 3 +-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/CONST.ts b/src/CONST.ts index 2cd614b7481..d1cdc9f725d 100755 --- a/src/CONST.ts +++ b/src/CONST.ts @@ -850,6 +850,9 @@ const CONST = { // The minimum number of typed lines needed to enable the full screen composer FULL_COMPOSER_MIN_LINES: 3, }, + REPORT_NAME_KEYS: { + isArchived: 'isArchived', + }, MODAL: { MODAL_TYPE: { CONFIRM: 'confirm', @@ -4352,6 +4355,8 @@ type Country = keyof typeof CONST.ALL_COUNTRIES; type IOUType = ValueOf; type IOUAction = ValueOf; -export type {Country, IOUAction, IOUType, RateAndUnit}; +type ReportNameKeys = keyof typeof CONST.REPORT_NAME_KEYS; + +export type {Country, IOUAction, IOUType, RateAndUnit, ReportNameKeys}; export default CONST; diff --git a/src/types/onyx/Report.ts b/src/types/onyx/Report.ts index 1026384970d..3ba10973a21 100644 --- a/src/types/onyx/Report.ts +++ b/src/types/onyx/Report.ts @@ -5,6 +5,7 @@ import type CollectionDataSet from '@src/types/utils/CollectionDataSet'; import type * as OnyxCommon from './OnyxCommon'; import type PersonalDetails from './PersonalDetails'; import type {PolicyReportField} from './Policy'; +import { ReportNameKeys } from '@src/CONST'; type NotificationPreference = ValueOf; @@ -30,8 +31,6 @@ type Participant = { type Participants = Record; -type ReportNameKeys = 'isArchived' | 'isPinned' | 'isUnread' | 'isUnreadMention' | 'isUnreadAction' | 'isUnreadActionMention'; - type Report = OnyxCommon.OnyxValueWithOfflineFeedback< { /** The URL of the Group Chat report custom avatar */ From d55a329cd7eced66a0877c3b78518de4a1f9efb2 Mon Sep 17 00:00:00 2001 From: Srikar Parsi Date: Mon, 22 Apr 2024 00:15:43 -0400 Subject: [PATCH 03/12] prettier --- src/types/onyx/Report.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/types/onyx/Report.ts b/src/types/onyx/Report.ts index 3ba10973a21..4f96cb39cbc 100644 --- a/src/types/onyx/Report.ts +++ b/src/types/onyx/Report.ts @@ -1,11 +1,11 @@ import type {ValueOf} from 'type-fest'; import type CONST from '@src/CONST'; +import {ReportNameKeys} from '@src/CONST'; import type ONYXKEYS from '@src/ONYXKEYS'; import type CollectionDataSet from '@src/types/utils/CollectionDataSet'; import type * as OnyxCommon from './OnyxCommon'; import type PersonalDetails from './PersonalDetails'; import type {PolicyReportField} from './Policy'; -import { ReportNameKeys } from '@src/CONST'; type NotificationPreference = ValueOf; From a8694d1939833ead0fb5bc199c8211f38bbb60dd Mon Sep 17 00:00:00 2001 From: Srikar Parsi Date: Wed, 24 Apr 2024 21:36:06 -0400 Subject: [PATCH 04/12] inline type --- src/CONST.ts | 7 +------ src/types/onyx/Report.ts | 4 +++- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/CONST.ts b/src/CONST.ts index e1d73b22976..ab5a6727495 100755 --- a/src/CONST.ts +++ b/src/CONST.ts @@ -852,9 +852,6 @@ const CONST = { // The minimum number of typed lines needed to enable the full screen composer FULL_COMPOSER_MIN_LINES: 3, }, - REPORT_NAME_KEYS: { - isArchived: 'isArchived', - }, MODAL: { MODAL_TYPE: { CONFIRM: 'confirm', @@ -4623,8 +4620,6 @@ type Country = keyof typeof CONST.ALL_COUNTRIES; type IOUType = ValueOf; type IOUAction = ValueOf; -type ReportNameKeys = keyof typeof CONST.REPORT_NAME_KEYS; - -export type {Country, IOUAction, IOUType, RateAndUnit, OnboardingPurposeType, ReportNameKeys}; +export type {Country, IOUAction, IOUType, RateAndUnit, OnboardingPurposeType}; export default CONST; diff --git a/src/types/onyx/Report.ts b/src/types/onyx/Report.ts index 4f96cb39cbc..be374355ad8 100644 --- a/src/types/onyx/Report.ts +++ b/src/types/onyx/Report.ts @@ -189,7 +189,9 @@ type Report = OnyxCommon.OnyxValueWithOfflineFeedback< fieldList?: Record; /** The reports name value pairs */ - reportNameValuePairs?: Record; + reportNameValuePairs?: { + isArchived: boolean; + }; }, PolicyReportField['fieldID'] >; From 2990a7d4105a086bcd6c0cb70c570b221c52409b Mon Sep 17 00:00:00 2001 From: Srikar Parsi Date: Wed, 24 Apr 2024 22:21:13 -0400 Subject: [PATCH 05/12] remove uneeded import --- src/types/onyx/Report.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/types/onyx/Report.ts b/src/types/onyx/Report.ts index be374355ad8..364b320c114 100644 --- a/src/types/onyx/Report.ts +++ b/src/types/onyx/Report.ts @@ -1,6 +1,5 @@ import type {ValueOf} from 'type-fest'; import type CONST from '@src/CONST'; -import {ReportNameKeys} from '@src/CONST'; import type ONYXKEYS from '@src/ONYXKEYS'; import type CollectionDataSet from '@src/types/utils/CollectionDataSet'; import type * as OnyxCommon from './OnyxCommon'; From c80ef8bc8e95cfc400ebdb3f0e9c41ddaaf12dbe Mon Sep 17 00:00:00 2001 From: Srikar Parsi Date: Mon, 13 May 2024 02:12:30 -0400 Subject: [PATCH 06/12] move report actions to own onyx structure --- src/ONYXKEYS.ts | 2 ++ src/types/onyx/ReportNameValuePairs.ts | 7 +++++++ src/types/onyx/index.ts | 2 ++ 3 files changed, 11 insertions(+) create mode 100644 src/types/onyx/ReportNameValuePairs.ts diff --git a/src/ONYXKEYS.ts b/src/ONYXKEYS.ts index 804c8dadd55..0405edbd418 100755 --- a/src/ONYXKEYS.ts +++ b/src/ONYXKEYS.ts @@ -336,6 +336,7 @@ const ONYXKEYS = { WORKSPACE_INVITE_MEMBERS_DRAFT: 'workspaceInviteMembersDraft_', WORKSPACE_INVITE_MESSAGE_DRAFT: 'workspaceInviteMessageDraft_', REPORT: 'report_', + REPORT_NAME_VALUE_PAIRS: 'reportNameValuePairs_', REPORT_DRAFT: 'reportDraft_', // REPORT_METADATA is a perf optimization used to hold loading states (isLoadingInitialReportActions, isLoadingOlderReportActions, isLoadingNewerReportActions). // A lot of components are connected to the Report entity and do not care about the actions. Setting the loading state @@ -548,6 +549,7 @@ type OnyxCollectionValuesMapping = { [ONYXKEYS.COLLECTION.WORKSPACE_INVITE_MEMBERS_DRAFT]: OnyxTypes.InvitedEmailsToAccountIDs; [ONYXKEYS.COLLECTION.WORKSPACE_INVITE_MESSAGE_DRAFT]: string; [ONYXKEYS.COLLECTION.REPORT]: OnyxTypes.Report; + [ONYXKEYS.COLLECTION.REPORT_NAME_VALUE_PAIRS]: OnyxTypes.ReportNameValuePairs; [ONYXKEYS.COLLECTION.REPORT_DRAFT]: OnyxTypes.Report; [ONYXKEYS.COLLECTION.REPORT_METADATA]: OnyxTypes.ReportMetadata; [ONYXKEYS.COLLECTION.REPORT_ACTIONS]: OnyxTypes.ReportActions; diff --git a/src/types/onyx/ReportNameValuePairs.ts b/src/types/onyx/ReportNameValuePairs.ts new file mode 100644 index 00000000000..53a6ac70a05 --- /dev/null +++ b/src/types/onyx/ReportNameValuePairs.ts @@ -0,0 +1,7 @@ +type ReportNameValuePair = { + isArchived: boolean; +} + +type ReportNameValuePairs = Record; + +export default ReportNameValuePairs; \ No newline at end of file diff --git a/src/types/onyx/index.ts b/src/types/onyx/index.ts index 1695daebace..640e4044ad1 100644 --- a/src/types/onyx/index.ts +++ b/src/types/onyx/index.ts @@ -52,6 +52,7 @@ import type RecentlyUsedTags from './RecentlyUsedTags'; import type RecentWaypoint from './RecentWaypoint'; import type ReimbursementAccount from './ReimbursementAccount'; import type Report from './Report'; +import type ReportNameValuePairs from './ReportNameValuePairs'; import type {ReportActionBase, ReportActions} from './ReportAction'; import type ReportAction from './ReportAction'; import type ReportActionReactions from './ReportActionReactions'; @@ -134,6 +135,7 @@ export type { RecentlyUsedTags, ReimbursementAccount, Report, + ReportNameValuePairs, ReportAction, ReportActionReactions, ReportActions, From 675f944ed8f845b26ec6cde0bc89083c7224e6a9 Mon Sep 17 00:00:00 2001 From: Srikar Parsi Date: Mon, 13 May 2024 02:13:54 -0400 Subject: [PATCH 07/12] remove uneeded isArchived in Report --- src/types/onyx/Report.ts | 5 ----- src/types/onyx/ReportNameValuePairs.ts | 2 +- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/src/types/onyx/Report.ts b/src/types/onyx/Report.ts index e2b243d27a6..e3f67bc3c9d 100644 --- a/src/types/onyx/Report.ts +++ b/src/types/onyx/Report.ts @@ -202,11 +202,6 @@ type Report = OnyxCommon.OnyxValueWithOfflineFeedback< transactionThreadReportID?: string; fieldList?: Record; - - /** The reports name value pairs */ - reportNameValuePairs?: { - isArchived: boolean; - }; permissions?: Array>; }, diff --git a/src/types/onyx/ReportNameValuePairs.ts b/src/types/onyx/ReportNameValuePairs.ts index 53a6ac70a05..5888bf85301 100644 --- a/src/types/onyx/ReportNameValuePairs.ts +++ b/src/types/onyx/ReportNameValuePairs.ts @@ -4,4 +4,4 @@ type ReportNameValuePair = { type ReportNameValuePairs = Record; -export default ReportNameValuePairs; \ No newline at end of file +export default ReportNameValuePairs; From 64544aa29efaa50ba97ec27518e2b89cb282d186 Mon Sep 17 00:00:00 2001 From: Srikar Parsi Date: Mon, 13 May 2024 02:14:38 -0400 Subject: [PATCH 08/12] style --- src/types/onyx/Report.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/types/onyx/Report.ts b/src/types/onyx/Report.ts index e3f67bc3c9d..4a7cc42587a 100644 --- a/src/types/onyx/Report.ts +++ b/src/types/onyx/Report.ts @@ -202,7 +202,7 @@ type Report = OnyxCommon.OnyxValueWithOfflineFeedback< transactionThreadReportID?: string; fieldList?: Record; - + permissions?: Array>; }, PolicyReportField['fieldID'] From 85e93752c0d53a22f898b82dcec1461eef02b22c Mon Sep 17 00:00:00 2001 From: Srikar Parsi Date: Tue, 14 May 2024 03:34:13 -0400 Subject: [PATCH 09/12] incorporate isArchived and bug fixes --- src/libs/ReportUtils.ts | 11 ++++++++--- src/pages/home/ReportScreen.tsx | 8 ++++++++ src/pages/home/report/ReportFooter.tsx | 15 +++++++++++++-- src/types/onyx/ReportNameValuePairs.ts | 8 ++++---- 4 files changed, 33 insertions(+), 9 deletions(-) diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index 51c797937b1..e15711fcde3 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -29,6 +29,7 @@ import type { Report, ReportAction, ReportMetadata, + ReportNameValuePairs, Session, Task, TaxRate, @@ -1223,7 +1224,11 @@ function isClosedExpenseReportWithNoExpenses(report: OnyxEntry): boolean /** * Whether the provided report is an archived room */ -function isArchivedRoom(report: OnyxEntry | EmptyObject): boolean { +function isArchivedRoom(report: OnyxEntry | EmptyObject, reportNameValuePairs?: OnyxEntry | EmptyObject): boolean { + if (reportNameValuePairs) { + return reportNameValuePairs.isArchived; + } + return report?.statusNum === CONST.REPORT.STATUS_NUM.CLOSED && report?.stateNum === CONST.REPORT.STATE_NUM.APPROVED; } @@ -5729,7 +5734,7 @@ function isMoneyRequestReportPendingDeletion(report: OnyxEntry | EmptyOb return parentReportAction?.pendingAction === CONST.RED_BRICK_ROAD_PENDING_ACTION.DELETE; } -function canUserPerformWriteAction(report: OnyxEntry) { +function canUserPerformWriteAction(report: OnyxEntry, reportNameValuePairs?: ReportNameValuePairs) { const reportErrors = getAddWorkspaceRoomOrChatReportErrors(report); // If the expense report is marked for deletion, let us prevent any further write action. @@ -5737,7 +5742,7 @@ function canUserPerformWriteAction(report: OnyxEntry) { return false; } - return !isArchivedRoom(report) && isEmptyObject(reportErrors) && report && isAllowedToComment(report) && !isAnonymousUser && canWriteInReport(report); + return !isArchivedRoom(report, reportNameValuePairs) && isEmptyObject(reportErrors) && report && isAllowedToComment(report) && !isAnonymousUser && canWriteInReport(report); } /** diff --git a/src/pages/home/ReportScreen.tsx b/src/pages/home/ReportScreen.tsx index 54e7ab923aa..b4d3dfeab38 100644 --- a/src/pages/home/ReportScreen.tsx +++ b/src/pages/home/ReportScreen.tsx @@ -81,6 +81,8 @@ type ReportScreenOnyxPropsWithoutParentReportAction = { /** The report currently being looked at */ report: OnyxEntry; + reportNameValuePairs: OnyxEntry; + /** The report metadata loading states */ reportMetadata: OnyxEntry; }; @@ -133,6 +135,7 @@ function ReportScreen({ betas = [], route, report: reportProp, + reportNameValuePairs, sortedAllReportActions, reportMetadata = { isLoadingInitialReportActions: true, @@ -725,6 +728,7 @@ function ReportScreen({ onComposerFocus={() => setIsComposerFocus(true)} onComposerBlur={() => setIsComposerFocus(false)} report={report} + reportNameValuePairs={reportNameValuePairs} pendingAction={reportPendingAction} isComposerFullSize={!!isComposerFullSize} listHeight={listHeight} @@ -761,6 +765,10 @@ export default withCurrentReportID( key: ({route}) => `${ONYXKEYS.COLLECTION.REPORT}${getReportID(route)}`, allowStaleData: true, }, + reportNameValuePairs: { + key: ({route}) => `${ONYXKEYS.COLLECTION.REPORT_NAME_VALUE_PAIRS}${getReportID(route)}`, + allowStaleData: true, + }, reportMetadata: { key: ({route}) => `${ONYXKEYS.COLLECTION.REPORT_METADATA}${getReportID(route)}`, initialValue: { diff --git a/src/pages/home/report/ReportFooter.tsx b/src/pages/home/report/ReportFooter.tsx index b128b83f88f..64df4b10365 100644 --- a/src/pages/home/report/ReportFooter.tsx +++ b/src/pages/home/report/ReportFooter.tsx @@ -36,6 +36,8 @@ type ReportFooterProps = ReportFooterOnyxProps & { /** Report object for the current report */ report?: OnyxTypes.Report; + reportNameValuePairs?: OnyxEntry; + /** The last report action */ lastReportAction?: OnyxEntry; @@ -66,6 +68,7 @@ function ReportFooter({ pendingAction, session, report = {reportID: '0'}, + reportNameValuePairs, shouldShowComposeInput = false, isEmptyChat = true, isReportReadyForDisplay = true, @@ -74,15 +77,19 @@ function ReportFooter({ onComposerBlur, onComposerFocus, }: ReportFooterProps) { + + console.log("LOOK HERE"); + console.log(reportNameValuePairs); + const styles = useThemeStyles(); const {isOffline} = useNetwork(); const {windowWidth, isSmallScreenWidth} = useWindowDimensions(); const chatFooterStyles = {...styles.chatFooter, minHeight: !isOffline ? CONST.CHAT_FOOTER_MIN_HEIGHT : 0}; - const isArchivedRoom = ReportUtils.isArchivedRoom(report); + const isArchivedRoom = ReportUtils.isArchivedRoom(report, reportNameValuePairs); const isAnonymousUser = session?.authTokenType === CONST.AUTH_TOKEN_TYPES.ANONYMOUS; const isSmallSizeLayout = windowWidth - (isSmallScreenWidth ? 0 : variables.sideBarWidth) < variables.anonymousReportFooterBreakpoint; - const hideComposer = !ReportUtils.canUserPerformWriteAction(report); + const hideComposer = !ReportUtils.canUserPerformWriteAction(report, reportNameValuePairs); const canWriteInReport = ReportUtils.canWriteInReport(report); const isSystemChat = ReportUtils.isSystemChat(report); @@ -139,6 +146,10 @@ function ReportFooter({ [report.reportID, handleCreateTask], ); + if (isArchivedRoom) { + return + } + return ( <> {hideComposer && ( diff --git a/src/types/onyx/ReportNameValuePairs.ts b/src/types/onyx/ReportNameValuePairs.ts index 5888bf85301..667e511ae78 100644 --- a/src/types/onyx/ReportNameValuePairs.ts +++ b/src/types/onyx/ReportNameValuePairs.ts @@ -1,7 +1,7 @@ -type ReportNameValuePair = { - isArchived: boolean; -} +import type * as OnyxCommon from './OnyxCommon'; -type ReportNameValuePairs = Record; +type ReportNameValuePairs = OnyxCommon.OnyxValueWithOfflineFeedback<{ + isArchived: boolean; +}> export default ReportNameValuePairs; From 01b7d31a2a909e0f9de52ae0fd797f8e4fd7ee25 Mon Sep 17 00:00:00 2001 From: Srikar Parsi Date: Tue, 14 May 2024 03:35:50 -0400 Subject: [PATCH 10/12] remove testing view --- src/pages/home/report/ReportFooter.tsx | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/pages/home/report/ReportFooter.tsx b/src/pages/home/report/ReportFooter.tsx index 64df4b10365..654f19b5e2d 100644 --- a/src/pages/home/report/ReportFooter.tsx +++ b/src/pages/home/report/ReportFooter.tsx @@ -146,10 +146,6 @@ function ReportFooter({ [report.reportID, handleCreateTask], ); - if (isArchivedRoom) { - return - } - return ( <> {hideComposer && ( From f8805245a45e262fa8e7e8e74f0cf8b6de005650 Mon Sep 17 00:00:00 2001 From: Srikar Parsi Date: Tue, 14 May 2024 03:41:38 -0400 Subject: [PATCH 11/12] fix type and cleanup logs --- src/libs/ReportUtils.ts | 2 +- src/pages/home/report/ReportFooter.tsx | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index e15711fcde3..cd20a5d548c 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -5734,7 +5734,7 @@ function isMoneyRequestReportPendingDeletion(report: OnyxEntry | EmptyOb return parentReportAction?.pendingAction === CONST.RED_BRICK_ROAD_PENDING_ACTION.DELETE; } -function canUserPerformWriteAction(report: OnyxEntry, reportNameValuePairs?: ReportNameValuePairs) { +function canUserPerformWriteAction(report: OnyxEntry, reportNameValuePairs?: OnyxEntry) { const reportErrors = getAddWorkspaceRoomOrChatReportErrors(report); // If the expense report is marked for deletion, let us prevent any further write action. diff --git a/src/pages/home/report/ReportFooter.tsx b/src/pages/home/report/ReportFooter.tsx index 654f19b5e2d..30f32cf240a 100644 --- a/src/pages/home/report/ReportFooter.tsx +++ b/src/pages/home/report/ReportFooter.tsx @@ -78,9 +78,6 @@ function ReportFooter({ onComposerFocus, }: ReportFooterProps) { - console.log("LOOK HERE"); - console.log(reportNameValuePairs); - const styles = useThemeStyles(); const {isOffline} = useNetwork(); const {windowWidth, isSmallScreenWidth} = useWindowDimensions(); From 1f01ef67d6e6beb63f7f3c092153970cbdd3e163 Mon Sep 17 00:00:00 2001 From: Srikar Parsi Date: Tue, 14 May 2024 03:53:54 -0400 Subject: [PATCH 12/12] prettier --- src/pages/home/report/ReportFooter.tsx | 1 - src/types/onyx/ReportNameValuePairs.ts | 2 +- src/types/onyx/index.ts | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/pages/home/report/ReportFooter.tsx b/src/pages/home/report/ReportFooter.tsx index 30f32cf240a..359d6ba93c1 100644 --- a/src/pages/home/report/ReportFooter.tsx +++ b/src/pages/home/report/ReportFooter.tsx @@ -77,7 +77,6 @@ function ReportFooter({ onComposerBlur, onComposerFocus, }: ReportFooterProps) { - const styles = useThemeStyles(); const {isOffline} = useNetwork(); const {windowWidth, isSmallScreenWidth} = useWindowDimensions(); diff --git a/src/types/onyx/ReportNameValuePairs.ts b/src/types/onyx/ReportNameValuePairs.ts index 667e511ae78..1cf56c300f0 100644 --- a/src/types/onyx/ReportNameValuePairs.ts +++ b/src/types/onyx/ReportNameValuePairs.ts @@ -2,6 +2,6 @@ import type * as OnyxCommon from './OnyxCommon'; type ReportNameValuePairs = OnyxCommon.OnyxValueWithOfflineFeedback<{ isArchived: boolean; -}> +}>; export default ReportNameValuePairs; diff --git a/src/types/onyx/index.ts b/src/types/onyx/index.ts index 640e4044ad1..eb3ef2eefc8 100644 --- a/src/types/onyx/index.ts +++ b/src/types/onyx/index.ts @@ -52,13 +52,13 @@ import type RecentlyUsedTags from './RecentlyUsedTags'; import type RecentWaypoint from './RecentWaypoint'; import type ReimbursementAccount from './ReimbursementAccount'; import type Report from './Report'; -import type ReportNameValuePairs from './ReportNameValuePairs'; import type {ReportActionBase, ReportActions} from './ReportAction'; import type ReportAction from './ReportAction'; import type ReportActionReactions from './ReportActionReactions'; import type ReportActionsDraft from './ReportActionsDraft'; import type ReportActionsDrafts from './ReportActionsDrafts'; import type ReportMetadata from './ReportMetadata'; +import type ReportNameValuePairs from './ReportNameValuePairs'; import type ReportNextStep from './ReportNextStep'; import type ReportUserIsTyping from './ReportUserIsTyping'; import type Request from './Request';