From b1d72f8f31daf81bb23d5cf4b3cb0b5eabff637e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A1bio=20Henriques?= Date: Mon, 23 Feb 2026 09:43:05 +0000 Subject: [PATCH 1/6] Bump Onyx to 3.0.38 --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index dfdf6fd288363..e38bb6d953dd6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -117,7 +117,7 @@ "react-native-localize": "^3.5.4", "react-native-nitro-modules": "0.29.4", "react-native-nitro-sqlite": "9.2.0", - "react-native-onyx": "3.0.35", + "react-native-onyx": "3.0.38", "react-native-pager-view": "8.0.0", "react-native-pdf": "7.0.2", "react-native-performance": "^6.0.0", @@ -34210,9 +34210,9 @@ } }, "node_modules/react-native-onyx": { - "version": "3.0.35", - "resolved": "https://registry.npmjs.org/react-native-onyx/-/react-native-onyx-3.0.35.tgz", - "integrity": "sha512-YlDoiN7IGi/Mj0UUwv/cPz33IOITNeQFohlNL8RdEppC88aA/Xv4vmoTs9AC71AleDx0OPOoDW/lm5jbxkzphQ==", + "version": "3.0.38", + "resolved": "https://registry.npmjs.org/react-native-onyx/-/react-native-onyx-3.0.38.tgz", + "integrity": "sha512-hy1DqpBUtsHMgr6EUGA8Qbg2m4mq8Ki+dlAM9uj8z/wi5SA4wJCucxezYNg1fuknh0adaydRzP7QEA42awi38w==", "license": "MIT", "dependencies": { "ascii-table": "0.0.9", diff --git a/package.json b/package.json index 73067434d8274..6dbcfee8c1222 100644 --- a/package.json +++ b/package.json @@ -180,7 +180,7 @@ "react-native-localize": "^3.5.4", "react-native-nitro-modules": "0.29.4", "react-native-nitro-sqlite": "9.2.0", - "react-native-onyx": "3.0.35", + "react-native-onyx": "3.0.38", "react-native-pager-view": "8.0.0", "react-native-pdf": "7.0.2", "react-native-performance": "^6.0.0", From 85907f742051a564af9ad157e48f8fce3113e443 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A1bio=20Henriques?= Date: Mon, 23 Feb 2026 09:43:51 +0000 Subject: [PATCH 2/6] Remove canBeMissing ESLint rule --- eslint.changed.config.mjs | 1 - 1 file changed, 1 deletion(-) diff --git a/eslint.changed.config.mjs b/eslint.changed.config.mjs index 070731296949c..79114b59a65eb 100644 --- a/eslint.changed.config.mjs +++ b/eslint.changed.config.mjs @@ -43,7 +43,6 @@ const config = defineConfig([ rules: { '@typescript-eslint/no-deprecated': 'error', 'rulesdir/no-default-id-values': 'error', - 'rulesdir/provide-canBeMissing-in-useOnyx': 'error', 'rulesdir/no-unstable-hook-defaults': 'error', 'no-restricted-syntax': [ 'error', From 127a4b743e3228c4cb158fdb18e5605a7c4d7881 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A1bio=20Henriques?= Date: Mon, 23 Feb 2026 09:44:50 +0000 Subject: [PATCH 3/6] Remove canBeMissing from documentation --- .github/PULL_REQUEST_TEMPLATE.md | 1 - contributingGuides/REVIEWER_CHECKLIST.md | 1 - .../philosophies/ONYX-DATA-MANAGEMENT.md | 22 ------------------- 3 files changed, 24 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 033342db30b99..622ccff5d27da 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -86,7 +86,6 @@ This is a checklist for PR authors. Please make sure to complete all tasks and c - [ ] iOS: mWeb Safari - [ ] MacOS: Chrome / Safari - [ ] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed) -- [ ] I verified there are no new alerts related to the `canBeMissing` param for `useOnyx` - [ ] I followed proper code patterns (see [Reviewing the code](https://github.com/Expensify/App/blob/main/contributingGuides/PR_REVIEW_GUIDELINES.md#reviewing-the-code)) - [ ] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. `toggleReport` and not `onIconClick`) - [ ] I verified that comments were added to code that is not self explanatory diff --git a/contributingGuides/REVIEWER_CHECKLIST.md b/contributingGuides/REVIEWER_CHECKLIST.md index 08d033144f1c3..d200111e495b4 100644 --- a/contributingGuides/REVIEWER_CHECKLIST.md +++ b/contributingGuides/REVIEWER_CHECKLIST.md @@ -17,7 +17,6 @@ - [ ] iOS: mWeb Safari - [ ] MacOS: Chrome / Safari - [ ] If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack -- [ ] I verified there are no new alerts related to the `canBeMissing` param for `useOnyx` - [ ] I verified proper code patterns were followed (see [Reviewing the code](https://github.com/Expensify/App/blob/main/contributingGuides/PR_REVIEW_GUIDELINES.md#reviewing-the-code)) - [ ] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. `toggleReport` and not `onIconClick`). - [ ] I verified that comments were added to code that is not self explanatory diff --git a/contributingGuides/philosophies/ONYX-DATA-MANAGEMENT.md b/contributingGuides/philosophies/ONYX-DATA-MANAGEMENT.md index e0bf8b5c48f4a..24131557c5915 100644 --- a/contributingGuides/philosophies/ONYX-DATA-MANAGEMENT.md +++ b/contributingGuides/philosophies/ONYX-DATA-MANAGEMENT.md @@ -9,7 +9,6 @@ This is how the application manages all the data stored in Onyx. - **Actions** - The files stored in `/src/libs/actions` - **Derived Values** - Special Onyx keys containing values computed from other Onyx values - **Collections** - Multiple related data objects stored as individual keys with IDs -- **canBeMissing** - Parameter indicating whether a component expects Onyx data to be present ## Rules ### - Actions MUST be the only means to write or read data from the server @@ -126,24 +125,3 @@ compute: ([reports, personalDetails]) => { - Explain the purpose and dependencies - Document any special cases or performance considerations - Include type annotations for better developer experience - -## canBeMissing Parameter - -The `canBeMissing` parameter indicates whether a component connecting to Onyx expects the data to be present or if it can handle missing data gracefully. - -### - Components MUST use the `canBeMissing` parameter appropriately -This parameter was added because in some places we are assuming some data will be there, but actually we never load it, which leads to hard to debug bugs. - -The linter error exists until we add the param to all callers. Once that happens we can make the param mandatory and remove the linter. - -### - `canBeMissing` SHOULD be set to `false` when data is guaranteed to be present -The main criteria for setting `canBeMissing` to `false`: - -- **Data is always loaded before component renders**: If the data is always ensured to be loaded before this component renders, then `canBeMissing` SHOULD be set to `false` -- **Always returned by OpenApp**: Any data that is always returned by `OpenApp` used in a component where we have a user (so not in the homepage for example) will have `canBeMissing` set to `false` -- **User always has data**: Maybe we always try to load a piece of data, but the data can be missing/empty, in this case `canBeMissing` would be set to `false` - -### - `canBeMissing` SHOULD be set to `true` for potentially missing data -If neither of the above conditions apply, then the param SHOULD probably be `true`, but additionally we MUST make sure that the code using the data manages correctly the fact that the data might be missing. - -Context: [Slack discussion](https://expensify.slack.com/archives/C03TQ48KC/p1741208342513379) From 445848a9538b296ca31b7238edfa7f3403431854 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A1bio=20Henriques?= Date: Mon, 23 Feb 2026 09:59:47 +0000 Subject: [PATCH 4/6] Remove canBeMissing from TS files --- src/Expensify.tsx | 44 +++++------ src/HybridAppHandler.tsx | 2 +- src/components/AccountSwitcher.tsx | 16 ++-- .../AddPaymentCard/PaymentCardForm.tsx | 2 +- src/components/AddPaymentMethodMenu.tsx | 4 +- src/components/AddPlaidBankAccount.tsx | 4 +- src/components/AddUnreportedExpenseFooter.tsx | 12 +-- .../BaseAnchorForAttachmentsOnly.tsx | 2 +- src/components/ApprovalWorkflowSection.tsx | 1 - src/components/ApproverSelectionList.tsx | 2 +- src/components/ArchivedReportFooter.tsx | 4 +- .../AttachmentCarousel/CarouselItem.tsx | 2 +- .../Attachments/AttachmentCarousel/index.tsx | 4 +- .../Attachments/AttachmentView/index.tsx | 2 +- src/components/AutoSubmitModal.tsx | 2 +- src/components/AvatarWithDisplayName.tsx | 8 +- ...BaseVacationDelegateSelectionComponent.tsx | 4 +- src/components/BookTravelButton.tsx | 8 +- src/components/CardPreview.tsx | 4 +- src/components/CategoryPicker.tsx | 6 +- ...seConfirmNavigateExpensifyClassicModal.tsx | 4 +- src/components/ConfirmedRoute.tsx | 2 +- .../ConnectToNetSuiteFlow/index.tsx | 2 +- .../index.native.tsx | 2 +- .../ConnectToXeroFlow/index.native.tsx | 4 +- src/components/ConnectToXeroFlow/index.tsx | 2 +- src/components/ConnectionLayout.tsx | 2 +- .../ContactPermissionModal/index.native.tsx | 2 +- .../CurrencyListContextProvider/index.tsx | 2 +- .../CurrentUserPersonalDetailsProvider.tsx | 2 +- .../CustomStatusBarAndBackground/index.tsx | 2 +- .../DelegateNoAccessModalProvider/index.tsx | 2 +- src/components/DestinationPicker.tsx | 2 +- .../DistanceRequest/DistanceRequestFooter.tsx | 6 +- src/components/EReceipt.tsx | 2 +- src/components/EReceiptThumbnail.tsx | 4 +- .../EmojiPickerMenu/useEmojiPickerMenu.ts | 2 +- src/components/FeedbackSurvey.tsx | 2 +- .../BaseFloatingCameraButton.tsx | 10 +-- .../FloatingGPSButton/index.native.tsx | 2 +- src/components/Form/FormProvider.tsx | 6 +- src/components/Form/FormWrapper.tsx | 2 +- .../GPSInProgressModal/index.native.tsx | 2 +- .../GPSTripStateChecker/index.native.tsx | 2 +- .../useUpdateGpsTripOnReconnect.ts | 2 +- .../AccountManagerLinkRenderer.tsx | 2 +- .../HTMLRenderers/ConciergeLinkRenderer.tsx | 2 +- .../HTMLRenderers/ImageRenderer.tsx | 2 +- .../MentionReportRenderer/index.tsx | 4 +- src/components/ImportColumn.tsx | 2 +- .../ImportOnyxState/index.native.tsx | 4 +- src/components/ImportOnyxState/index.tsx | 4 +- src/components/ImportSpreadsheet.tsx | 2 +- src/components/ImportSpreadsheetColumns.tsx | 2 +- .../ImportSpreadsheetConfirmModal.tsx | 2 +- src/components/KYCWall/BaseKYCWall.tsx | 18 ++--- .../KeyboardDismissibleFlatListContext.tsx | 2 +- .../LHNOptionsList/LHNOptionsList.tsx | 26 +++---- .../LHNOptionsList/OptionRowLHN.tsx | 2 +- .../LHNOptionsList/OptionRowLHNData.tsx | 6 +- src/components/LocaleContextProvider.tsx | 6 +- src/components/LocalePicker.tsx | 4 +- src/components/LockedAccountModalProvider.tsx | 2 +- src/components/MapView/MapView.tsx | 2 +- .../MapView/MapViewImpl.website.tsx | 2 +- src/components/MigratedUserWelcomeModal.tsx | 3 +- src/components/MoneyReportHeader.tsx | 74 +++++++++---------- .../MoneyRequestConfirmationList.tsx | 14 ++-- .../MoneyRequestConfirmationListFooter.tsx | 12 ++- src/components/MoneyRequestHeader.tsx | 44 ++++++----- .../MoneyRequestReportActionsList.tsx | 26 +++---- .../MoneyRequestReportNavigation.tsx | 14 ++-- .../MoneyRequestReportTransactionList.tsx | 6 +- ...neyRequestReportTransactionsNavigation.tsx | 12 +-- .../MoneyRequestReportView.tsx | 10 +-- .../MoneyRequestViewReportFields.tsx | 2 +- .../SearchMoneyRequestReportEmptyState.tsx | 6 +- .../Context/useNativeBiometrics.ts | 2 +- .../Context/usePromptContent.ts | 2 +- src/components/Navigation/DebugTabView.tsx | 2 +- .../NavigationTabBar/SearchTabButton.tsx | 4 +- .../NavigationTabBar/WorkspacesTabButton.tsx | 2 - .../Navigation/NavigationTabBar/index.tsx | 4 +- src/components/Navigation/TopBar.tsx | 2 +- .../OnboardingHelpDropdownButton.tsx | 3 +- .../OnboardingMergingAccountBlockedView.tsx | 2 +- .../BaseOpenAppFailureModal.tsx | 2 +- src/components/OptionListContextProvider.tsx | 6 +- src/components/PDFView/index.native.tsx | 2 +- src/components/PDFView/index.tsx | 6 +- src/components/ParentNavigationSubtitle.tsx | 4 +- src/components/PerDiemEReceipt.tsx | 4 +- src/components/PriorityModeController.tsx | 10 +-- .../ProactiveAppReviewModalManager.tsx | 2 +- src/components/ProcessMoneyReportHoldMenu.tsx | 8 +- .../ProductTrainingContext/index.tsx | 15 ++-- .../Reactions/MiniQuickEmojiReactions.tsx | 4 +- .../BaseQuickEmojiReactions.tsx | 4 +- .../ReportActionItemEmojiReactions.tsx | 2 +- .../ReportActionAvatar.tsx | 4 +- src/components/ReportActionAvatars/index.tsx | 2 +- .../useReportActionAvatars.ts | 12 +-- .../useReportPreviewSenderID.ts | 6 +- .../ExportWithDropdownMenu.tsx | 2 +- .../ReportActionItem/IssueCardMessage.tsx | 2 +- .../ReportActionItem/MoneyReportView.tsx | 2 +- .../ReportActionItem/MoneyRequestAction.tsx | 2 +- .../MoneyRequestReceiptView.tsx | 9 +-- .../MoneyRequestReportPreviewContent.tsx | 24 +++--- .../ReportActionItem/MoneyRequestView.tsx | 25 +++---- src/components/ReportActionItem/TaskView.tsx | 2 +- .../TransactionPreviewContent.tsx | 12 ++- .../TransactionPreview/index.tsx | 14 ++-- src/components/ReportWelcomeText.tsx | 10 +-- src/components/Rule/RuleBooleanBase.tsx | 2 +- .../Rule/RuleNotFoundPageWrapper.tsx | 2 +- src/components/Rule/TextBase.tsx | 2 +- src/components/ScreenWrapper/index.tsx | 2 +- .../ScrollOffsetContextProvider.tsx | 2 +- .../FilterComponents/DateFilterBase.tsx | 2 +- .../FilterComponents/TextFilterBase.tsx | 2 +- .../Search/FilterDropdowns/DropdownButton.tsx | 2 +- .../FilterDropdowns/UserSelectPopup.tsx | 12 +-- .../Search/SearchAutocompleteInput.tsx | 6 +- .../Search/SearchAutocompleteList.tsx | 24 +++--- .../Search/SearchBooleanFilterBasePage.tsx | 2 +- src/components/Search/SearchContext.tsx | 2 +- .../Search/SearchFiltersAmountBase.tsx | 2 +- .../Search/SearchFiltersChatsSelector.tsx | 14 ++-- .../Search/SearchFiltersCurrencyBase.tsx | 2 +- .../SearchFiltersParticipantsSelector.tsx | 14 ++-- src/components/Search/SearchList/index.tsx | 12 ++- .../SearchPageHeader/SearchFiltersBar.tsx | 16 ++-- .../SearchPageHeader/SearchPageHeader.tsx | 4 +- .../SearchPageHeaderInput.tsx | 12 +-- .../Search/SearchRouter/SearchRouter.tsx | 12 +-- src/components/Search/index.tsx | 26 +++---- .../ListItem/InviteMemberListItem.tsx | 2 +- .../SelectionList/ListItem/UserListItem.tsx | 1 - .../InviteMemberListItem.tsx | 2 +- .../Search/ActionCell.tsx | 4 +- .../Search/ExpenseReportListItem.tsx | 12 +-- .../Search/ReportListItemHeader.tsx | 6 +- .../Search/TransactionGroupListExpanded.tsx | 4 +- .../Search/TransactionGroupListItem.tsx | 24 +++--- .../Search/TransactionListItem.tsx | 25 +++---- .../Search/UserInfoAndActionButtonRow.tsx | 2 +- .../UserListItem.tsx | 1 - src/components/SelectionScreen.tsx | 2 +- src/components/SentryDebugToolMenu.tsx | 4 +- src/components/SettlementButton/index.tsx | 26 +++---- .../SidePanel/HelpComponents/HelpContent.tsx | 11 ++- .../SidePanel/SidePanelContextProvider.tsx | 9 +-- .../SidePanel/SidePanelModal/index.tsx | 2 +- .../AppleAuthWrapper/index.ios.tsx | 4 +- .../AppleSignIn/index.android.tsx | 2 +- .../SignInButtons/AppleSignIn/index.ios.tsx | 2 +- .../SignInButtons/AppleSignIn/index.tsx | 2 +- .../GoogleSignIn/index.native.tsx | 2 +- .../SignInButtons/GoogleSignIn/index.tsx | 2 +- .../SubStepForms/CountryFullStep.tsx | 6 +- ...SupportalPermissionDeniedModalProvider.tsx | 2 +- src/components/TagPicker.tsx | 4 +- src/components/TaxPicker.tsx | 6 +- .../TestDrive/Modal/AdminTestDriveModal.tsx | 4 +- .../Modal/EmployeeTestDriveModal.tsx | 10 +-- src/components/TestDrive/Modal/index.tsx | 2 +- src/components/TestDrive/TestDriveDemo.tsx | 7 +- src/components/TestToolMenu.tsx | 12 +-- src/components/ThreeDotsMenu/index.tsx | 2 +- .../DataCells/ChatBubbleCell.tsx | 9 +-- .../TransactionItemRow/DataCells/TypeCell.tsx | 2 +- .../TransactionItemRowRBR.tsx | 18 ++--- .../BaseUserDetailsTooltip/index.tsx | 2 +- .../ValidateCode/ExpiredValidateCodeModal.tsx | 2 +- .../ValidateCode/ValidateCodeModal.tsx | 4 +- .../ValidateCodeActionContent.tsx | 2 +- .../ValidateCodeForm/BaseValidateCodeForm.tsx | 6 +- src/components/ViolationMessages.tsx | 2 +- .../WalletStatementModal/index.native.tsx | 4 +- src/components/WalletStatementModal/index.tsx | 4 +- .../WideRHPContextProvider/index.tsx | 2 +- src/components/WorkspaceConfirmationForm.tsx | 4 +- .../WorkspaceMembersSelectionList.tsx | 2 +- src/components/createOnyxContext.tsx | 4 +- src/hooks/useActionLoadingReportIDs.ts | 2 +- src/hooks/useActiveAdminPolicies.ts | 2 +- src/hooks/useActivePolicy.ts | 2 +- src/hooks/useAdvancedSearchFilters.ts | 11 ++- src/hooks/useAgentZeroStatusIndicator.ts | 2 +- src/hooks/useAllTransactions.ts | 2 +- src/hooks/useAncestors/index.ts | 6 +- src/hooks/useArchivedReportsIdSet.ts | 4 +- src/hooks/useAssignCard.ts | 2 +- src/hooks/useAutoFocusInput.ts | 2 +- src/hooks/useBulkPayOptions.ts | 10 +-- src/hooks/useCancellationType.ts | 2 +- src/hooks/useCardFeedErrors.ts | 2 +- src/hooks/useCardFeeds.tsx | 2 +- src/hooks/useCardFeedsForDisplay.ts | 5 +- src/hooks/useCardsList.tsx | 1 - src/hooks/useCompanyCards.ts | 2 +- ...onditionalCreateEmptyReportConfirmation.ts | 2 +- src/hooks/useContactImport.ts | 4 +- src/hooks/useDefaultExpensePolicy.tsx | 6 +- src/hooks/useDefaultFundID.ts | 5 +- src/hooks/useDefaultSearchQuery.ts | 3 +- src/hooks/useDeleteTransactions.ts | 20 ++--- .../useDuplicateTransactionsAndViolations.ts | 2 - src/hooks/useExpensifyCardFeeds.ts | 1 - src/hooks/useFeedKeysWithAssignedCards.ts | 2 +- src/hooks/useFilterFormValues.tsx | 12 +-- src/hooks/useFilteredOptions.ts | 4 +- src/hooks/useGetIOUReportFromReportAction.ts | 4 +- src/hooks/useHasEmptyReportsForPolicy.ts | 3 +- src/hooks/useHasLoggedIntoMobileApp.ts | 8 +- src/hooks/useHasOutstandingChildTask.ts | 4 +- src/hooks/useHasPerDiemTransactions.ts | 1 - src/hooks/useHasPhoneNumberLogin.ts | 4 +- src/hooks/useHasTeam2025Pricing.tsx | 4 +- src/hooks/useImportPlaidAccounts.ts | 4 +- src/hooks/useIsAllowedToIssueCompanyCard.ts | 4 +- src/hooks/useIsAnonymousUser.ts | 2 +- src/hooks/useIsAuthenticated.tsx | 2 +- src/hooks/useIsPaidPolicyAdmin.ts | 1 - src/hooks/useLoadingBarVisibility.ts | 4 +- src/hooks/useMappedPolicies.ts | 2 +- src/hooks/useMergeTransactions.ts | 24 ++---- src/hooks/useMobileSelectionMode.ts | 2 +- src/hooks/useMultipleSnapshots.ts | 1 - .../useNavigationTabBarIndicatorChecks.ts | 38 +++++----- src/hooks/useNetwork.ts | 1 - src/hooks/useNonPersonalCardList.ts | 2 +- src/hooks/useOnboardingFlow.ts | 15 ++-- src/hooks/useOnboardingTaskInformation.ts | 6 +- src/hooks/useOriginalReportID.ts | 8 +- src/hooks/useOutstandingReports.ts | 8 +- src/hooks/usePaginatedReportActions.ts | 5 +- src/hooks/useParentReport.ts | 4 +- src/hooks/useParentReportAction.ts | 2 +- src/hooks/useParticipantsInvoiceReport.ts | 6 +- src/hooks/usePayAndDowngrade.ts | 4 +- src/hooks/usePaymentOptions.ts | 11 ++- src/hooks/usePendingConciergeResponse.ts | 2 +- src/hooks/usePersonalDetailsByLogin.ts | 2 +- src/hooks/usePersonalPolicy.ts | 4 +- src/hooks/usePoliciesWithCardFeedErrors.ts | 4 +- src/hooks/usePolicyData/index.ts | 6 +- src/hooks/usePolicyForMovingExpenses.ts | 5 +- src/hooks/usePolicyForTransaction.ts | 4 +- src/hooks/usePreferredEmojiSkinTone.ts | 2 +- src/hooks/usePreferredPolicy.ts | 6 +- src/hooks/usePriorityChange.ts | 4 +- src/hooks/usePrivateIsArchivedMap.ts | 4 +- src/hooks/usePrivateSubscription.ts | 2 +- src/hooks/useProactiveAppReview.ts | 2 +- src/hooks/useReceiptScanDrop.tsx | 18 ++--- src/hooks/useReportAttributes.ts | 4 +- src/hooks/useReportIsArchived.ts | 2 +- src/hooks/useReportTransactions.ts | 1 - .../useReportWithTransactionsAndViolations.ts | 2 +- src/hooks/useSearchBackPress/index.android.ts | 2 +- src/hooks/useSearchHighlightAndScroll.ts | 1 - src/hooks/useSearchSelector.base.ts | 14 ++-- src/hooks/useSearchShouldCalculateTotals.ts | 2 +- src/hooks/useSearchTypeMenu.tsx | 14 ++-- src/hooks/useSearchTypeMenuSections.ts | 6 +- src/hooks/useSelectedTransactionsActions.ts | 12 +-- src/hooks/useSelfDMReport.ts | 4 +- src/hooks/useShowNotFoundPageInIOUStep.ts | 7 +- src/hooks/useSidePanelDisplayStatus.tsx | 3 +- src/hooks/useSidebarOrderedReports.tsx | 16 ++-- src/hooks/useStrictPolicyRules.ts | 6 +- src/hooks/useSubscriptionPlan.ts | 4 +- src/hooks/useThemePreference.ts | 2 +- src/hooks/useTodos.ts | 12 +-- src/hooks/useTransactionDraftReceipts.ts | 2 +- src/hooks/useTransactionDraftValues.ts | 2 +- src/hooks/useTransactionViolation.ts | 1 - .../useTransactionViolationOfWorkspace.tsx | 3 +- src/hooks/useTransactionViolations.ts | 16 +--- .../useTransactionsAndViolationsForReport.ts | 4 +- src/hooks/useTransactionsByID.ts | 1 - src/hooks/useTripTransactions.ts | 2 - src/hooks/useWorkspaceAccountID.ts | 2 +- src/languages/de.ts | 6 +- .../AppNavigator/AppNavigator.native.tsx | 2 +- .../Navigation/AppNavigator/AuthScreens.tsx | 20 +++-- .../Navigators/OnboardingModalNavigator.tsx | 7 +- .../usePreloadFullScreenNavigators.ts | 2 +- src/libs/Navigation/NavigationRoot.tsx | 3 +- src/libs/Navigation/OnyxTabNavigator.tsx | 2 +- src/pages/AddPersonalBankAccountPage.tsx | 2 +- src/pages/AddUnreportedExpense.tsx | 15 ++-- src/pages/ConciergePage.tsx | 6 +- src/pages/CurrencySelectionPage.tsx | 2 +- src/pages/Debug/DebugDetails.tsx | 2 +- src/pages/Debug/DebugTagPicker.tsx | 4 +- src/pages/Debug/Report/DebugReportActions.tsx | 9 +-- src/pages/Debug/Report/DebugReportPage.tsx | 19 +++-- .../DebugReportActionCreatePage.tsx | 16 ++-- .../ReportAction/DebugReportActionPage.tsx | 1 - .../ReportAction/DebugReportActionPreview.tsx | 12 +-- .../Transaction/DebugTransactionPage.tsx | 12 +-- src/pages/EditReportFieldDropdown.tsx | 2 +- src/pages/EditReportFieldPage.tsx | 9 +-- src/pages/EnablePayments/ActivateStep.tsx | 2 +- .../AddBankAccount/AddBankAccount.tsx | 8 +- .../AddBankAccount/SetupMethod.tsx | 2 +- .../substeps/ConfirmationStep.tsx | 4 +- .../AddBankAccount/substeps/PlaidStep.tsx | 4 +- src/pages/EnablePayments/EnablePayments.tsx | 6 +- .../EnablePayments/EnablePaymentsPage.tsx | 1 - .../FeesAndTerms/substeps/TermsStep.tsx | 4 +- src/pages/EnablePayments/OnfidoStep.tsx | 1 - .../PersonalInfo/PersonalInfo.tsx | 4 +- .../PersonalInfo/substeps/AddressStep.tsx | 2 +- .../substeps/ConfirmationStep.tsx | 4 +- .../PersonalInfo/substeps/DateOfBirthStep.tsx | 2 +- .../PersonalInfo/substeps/LegalNameStep.tsx | 2 +- .../PersonalInfo/substeps/PhoneNumberStep.tsx | 4 +- .../substeps/SocialSecurityNumberStep.tsx | 2 +- src/pages/EnablePayments/TermsStep.tsx | 4 +- .../VerifyIdentity/VerifyIdentity.tsx | 2 +- src/pages/ErrorPage/NotFoundPage.tsx | 2 +- src/pages/FlagCommentPage.tsx | 6 +- src/pages/GroupChatNameEditPage.tsx | 2 +- src/pages/InviteReportParticipantsPage.tsx | 2 +- .../LogInWithShortLivedAuthTokenPage.tsx | 2 +- src/pages/LogOutPreviousUserPage.tsx | 4 +- .../MissingPersonalDetailsMagicCodePage.tsx | 12 +-- src/pages/MissingPersonalDetails/index.tsx | 4 +- .../subPages/PhoneNumber.tsx | 2 +- .../MultifactorAuthentication/RevokePage.tsx | 4 +- .../ValidateCodePage.tsx | 4 +- src/pages/NewChatConfirmPage.tsx | 4 +- src/pages/NewChatPage.tsx | 18 ++--- src/pages/NewReportWorkspaceSelectionPage.tsx | 21 +++--- .../BaseOnboardingAccounting.tsx | 10 +-- .../BaseOnboardingEmployees.tsx | 6 +- .../BaseOnboardingInterestedFeatures.tsx | 20 ++--- .../BaseOnboardingPersonalDetails.tsx | 20 ++--- .../BaseOnboardingPrivateDomain.tsx | 10 +-- .../BaseOnboardingPurpose.tsx | 16 ++-- .../BaseOnboardingWorkEmail.tsx | 6 +- .../BaseOnboardingWorkEmailValidation.tsx | 12 +-- .../BaseOnboardingWorkspaceConfirmation.tsx | 16 ++-- .../OnboardingCurrencyPicker.tsx | 2 +- .../BaseOnboardingWorkspaceCurrency.tsx | 2 +- .../BaseOnboardingWorkspaceInvite.tsx | 18 ++--- .../BaseOnboardingWorkspaceOptional.tsx | 12 +-- .../BaseOnboardingWorkspaces.tsx | 18 ++--- .../PrivateNotes/PrivateNotesEditPage.tsx | 2 +- .../PrivateNotes/PrivateNotesListPage.tsx | 2 +- src/pages/ProfilePage.tsx | 12 +-- src/pages/ReferralDetailsPage.tsx | 2 +- .../EnterSignerInfo/index.tsx | 6 +- .../EnterSignerInfo/subSteps/Address.tsx | 2 +- .../EnterSignerInfo/subSteps/Confirmation.tsx | 6 +- .../EnterSignerInfo/subSteps/DateOfBirth.tsx | 2 +- .../EnterSignerInfo/subSteps/JobTitle.tsx | 2 +- .../EnterSignerInfo/subSteps/Name.tsx | 2 +- .../subSteps/UploadDocuments.tsx | 4 +- .../NonUSD/Agreements/index.tsx | 4 +- .../NonUSD/BankInfo/BankInfo.tsx | 8 +- .../subSteps/AccountHolderDetails.tsx | 4 +- .../BankInfo/subSteps/BankAccountDetails.tsx | 4 +- .../NonUSD/BankInfo/subSteps/Confirmation.tsx | 4 +- .../Address.tsx | 2 +- .../Confirmation.tsx | 6 +- .../Documents.tsx | 6 +- .../Nationality.tsx | 2 +- .../BeneficialOwnerInfo.tsx | 4 +- .../BeneficialOwnersList.tsx | 4 +- .../NonUSD/BusinessInfo/BusinessInfo.tsx | 6 +- .../subSteps/AverageReimbursement.tsx | 6 +- .../BusinessInfo/subSteps/BusinessType.tsx | 6 +- .../BusinessInfo/subSteps/Confirmation.tsx | 6 +- .../subSteps/ContactInformation.tsx | 4 +- .../BusinessInfo/subSteps/PaymentVolume.tsx | 6 +- .../subSteps/RegistrationNumber.tsx | 4 +- .../BusinessInfo/subSteps/TaxIDEINNumber.tsx | 4 +- .../NonUSD/BusinessInfo/subSteps/Website.tsx | 8 +- .../NonUSD/Docusign/index.tsx | 4 +- .../NonUSD/Finish/index.tsx | 4 +- .../NonUSD/SignerInfo/EnterEmail.tsx | 2 +- .../NonUSD/SignerInfo/HangTight.tsx | 2 +- .../NonUSD/SignerInfo/index.tsx | 8 +- .../NonUSD/SignerInfo/subSteps/Address.tsx | 2 +- .../SignerInfo/subSteps/Confirmation.tsx | 6 +- .../SignerInfo/subSteps/DateOfBirth.tsx | 4 +- .../SignerInfo/subSteps/UploadDocuments.tsx | 6 +- .../ReimbursementAccountPage.tsx | 10 +-- .../USD/BankInfo/BankInfo.tsx | 6 +- .../USD/BankInfo/subSteps/Manual.tsx | 4 +- .../USD/BankInfo/subSteps/Plaid.tsx | 6 +- .../BeneficialOwnersStep.tsx | 4 +- .../subSteps/CompanyOwnersListUBO.tsx | 4 +- .../USD/BusinessInfo/BusinessInfo.tsx | 4 +- .../BusinessInfo/subSteps/AddressBusiness.tsx | 2 +- .../subSteps/IncorporationCode.tsx | 2 +- .../subSteps/IncorporationDateBusiness.tsx | 4 +- .../BusinessInfo/subSteps/NameBusiness.tsx | 2 +- .../BusinessInfo/subSteps/TaxIdBusiness.tsx | 2 +- .../BusinessInfo/subSteps/WebsiteBusiness.tsx | 6 +- .../CompleteVerification.tsx | 6 +- .../subSteps/ConfirmAgreements.tsx | 4 +- .../ConnectBankAccount/ConnectBankAccount.tsx | 8 +- .../components/FinishChatCard.tsx | 2 +- .../Requestor/PersonalInfo/PersonalInfo.tsx | 4 +- .../PersonalInfo/subSteps/Address.tsx | 2 +- .../VerifyIdentity/VerifyIdentity.tsx | 6 +- .../USD/USDVerifiedBankAccountFlow.tsx | 2 +- .../VerifiedBankAccountFlowEntryPoint.tsx | 8 +- src/pages/ReportAddApproverPage.tsx | 6 +- src/pages/ReportChangeApproverPage.tsx | 4 +- src/pages/ReportChangeWorkspacePage.tsx | 14 ++-- src/pages/ReportDetailsPage.tsx | 26 +++---- src/pages/ReportParticipantDetailsPage.tsx | 2 +- src/pages/ReportParticipantsPage.tsx | 8 +- .../RequireTwoFactorAuthenticationPage.tsx | 6 +- src/pages/RoomInvitePage.tsx | 10 +-- src/pages/RoomMemberDetailsPage.tsx | 2 +- src/pages/RoomMembersPage.tsx | 6 +- .../ScheduleCallConfirmationPage.tsx | 2 +- src/pages/ScheduleCall/ScheduleCallPage.tsx | 3 +- src/pages/Search/AdvancedSearchFilters.tsx | 12 +-- src/pages/Search/EmptySearchView.tsx | 21 +++--- .../Search/SearchAdvancedFiltersPage.tsx | 2 +- .../SearchFiltersAssigneePage.tsx | 2 +- .../SearchFiltersAttendeePage.tsx | 2 +- .../SearchFiltersCardPage.tsx | 8 +- .../SearchFiltersCategoryPage.tsx | 5 +- .../SearchFiltersExpenseTypePage.tsx | 2 +- .../SearchFiltersFromPage.tsx | 2 +- .../SearchFiltersGroupByPage.tsx | 2 +- .../SearchFiltersHasPage.tsx | 2 +- .../SearchFiltersInPage.tsx | 2 +- .../SearchFiltersIsPage.tsx | 2 +- .../ReportFieldList.tsx | 2 +- .../SearchFiltersReportFieldPage/index.tsx | 3 +- .../SearchFiltersStatusPage.tsx | 2 +- .../SearchFiltersTagPage.tsx | 4 +- .../SearchFiltersTaxRatePage.tsx | 4 +- .../SearchFiltersToPage.tsx | 2 +- .../SearchFiltersTypePage.tsx | 6 +- .../SearchFiltersViewPage.tsx | 2 +- .../SearchFiltersWithdrawalTypePage.tsx | 2 +- .../SearchFiltersWorkspacePage.tsx | 8 +- src/pages/Search/SearchColumnsPage.tsx | 2 +- src/pages/Search/SearchHoldReasonPage.tsx | 6 +- .../Search/SearchMoneyRequestReportPage.tsx | 14 ++-- src/pages/Search/SearchPage.tsx | 22 +++--- src/pages/Search/SearchRejectReasonPage.tsx | 6 +- src/pages/Search/SearchSelectedNarrow.tsx | 6 +- .../Search/SearchTransactionsChangeReport.tsx | 12 +-- src/pages/Search/SearchTypeMenu.tsx | 14 ++-- src/pages/SetDefaultWorkspacePage.tsx | 6 +- src/pages/Share/ShareDetailsPage.tsx | 8 +- src/pages/Share/ShareRootPage.tsx | 2 +- src/pages/Share/ShareTab.tsx | 14 ++-- src/pages/Share/SubmitDetailsPage.tsx | 46 ++++++------ .../IntroSchoolPrincipalPage.tsx | 4 +- src/pages/TeachersUnite/KnowATeacherPage.tsx | 4 +- src/pages/TrackExpensePage.tsx | 2 +- .../TransactionDuplicate/Confirmation.tsx | 24 +++--- .../DuplicateTransactionItem.tsx | 19 ++--- .../DuplicateTransactionsList.tsx | 4 +- src/pages/TransactionDuplicate/Review.tsx | 16 ++-- .../TransactionDuplicate/ReviewBillable.tsx | 18 ++--- .../TransactionDuplicate/ReviewCategory.tsx | 18 ++--- .../ReviewDescription.tsx | 18 ++--- .../TransactionDuplicate/ReviewMerchant.tsx | 18 ++--- .../ReviewReimbursable.tsx | 18 ++--- src/pages/TransactionDuplicate/ReviewTag.tsx | 18 ++--- .../TransactionDuplicate/ReviewTaxCode.tsx | 16 ++-- .../TransactionMerge/ConfirmationPage.tsx | 20 ++--- .../TransactionMerge/DetailsReviewPage.tsx | 2 +- .../MergeTransactionsListContent.tsx | 4 +- .../MergeTransactionsListPage.tsx | 2 +- .../TransactionMerge/ReceiptReviewPage.tsx | 2 +- src/pages/Travel/DomainSelectorPage.tsx | 2 +- src/pages/Travel/PublicDomainErrorPage.tsx | 2 +- src/pages/Travel/TravelTerms.tsx | 8 +- src/pages/Travel/TravelUpgrade.tsx | 2 +- src/pages/Travel/TripDetailsPage.tsx | 10 +-- src/pages/Travel/TripSummaryPage.tsx | 4 +- src/pages/Travel/VerifyAccountPage.tsx | 2 +- .../Travel/WorkspaceAddressForTravelPage.tsx | 2 +- .../WorkspaceConfirmationForTravelPage.tsx | 4 +- src/pages/UnlinkLoginPage.tsx | 2 +- src/pages/ValidateLoginPage/index.tsx | 4 +- src/pages/ValidateLoginPage/index.website.tsx | 10 +-- src/pages/domain/AddDomainPage.tsx | 6 +- .../domain/Admins/DomainAddAdminPage.tsx | 6 +- .../Admins/DomainAddPrimaryContactPage.tsx | 8 +- .../domain/Admins/DomainAdminDetailsPage.tsx | 3 - src/pages/domain/Admins/DomainAdminsPage.tsx | 9 +-- .../Admins/DomainAdminsSettingsPage.tsx | 11 +-- .../BaseDomainMemberDetailsComponent.tsx | 1 - src/pages/domain/BaseDomainMembersPage.tsx | 2 +- src/pages/domain/BaseDomainVerifiedPage.tsx | 4 +- src/pages/domain/BaseVerifyDomainPage.tsx | 2 +- .../domain/DomainAccessRestrictedPage.tsx | 2 +- src/pages/domain/DomainAddedPage.tsx | 2 +- src/pages/domain/DomainInitialPage.tsx | 6 +- .../domain/DomainNotFoundPageWrapper.tsx | 3 +- src/pages/domain/DomainResetPage.tsx | 2 +- src/pages/domain/DomainSamlPage.tsx | 5 +- src/pages/domain/Groups/DomainGroupsPage.tsx | 2 +- .../domain/Members/DomainAddMemberPage.tsx | 5 +- .../Members/DomainMemberDetailsPage.tsx | 11 +-- .../DomainMemberVacationDelegatePage.tsx | 2 - .../domain/Members/DomainMembersPage.tsx | 13 ++-- .../Members/DomainMembersSettingsPage.tsx | 13 +--- .../DomainRequireTwoFactorAuthPage.tsx | 11 +-- ...SamlConfigurationDetailsSectionContent.tsx | 2 +- .../domain/Saml/SamlLoginSectionContent.tsx | 4 +- src/pages/home/AssignedCardsSection/index.tsx | 2 +- src/pages/home/DiscoverSection.tsx | 4 +- src/pages/home/ForYouSection/index.tsx | 6 +- .../hooks/useTimeSensitiveCards.ts | 2 +- .../hooks/useTimeSensitiveOffers.ts | 6 +- src/pages/home/TimeSensitiveSection/index.tsx | 4 +- .../items/FixCompanyCardConnection.tsx | 2 +- src/pages/inbox/HeaderView.tsx | 30 ++++---- src/pages/inbox/ReportScreen.tsx | 44 ++++++----- .../AgentZeroProcessingRequestIndicator.tsx | 2 +- .../BaseReportActionContextMenu.tsx | 51 +++++++------ .../PopoverReportActionContextMenu.tsx | 24 +++--- .../BasePopoverReactionList.tsx | 2 +- .../AttachmentPickerWithMenuItems.tsx | 12 +-- .../ComposerWithSuggestions.tsx | 8 +- .../ReportActionCompose.tsx | 23 +++--- .../SilentCommentUpdater/index.android.tsx | 2 +- .../SilentCommentUpdater/index.tsx | 2 +- .../ReportActionCompose/SuggestionEmoji.tsx | 2 +- .../ReportActionCompose/SuggestionMention.tsx | 4 +- .../useAttachmentUploadValidation.ts | 6 +- src/pages/inbox/report/ReportActionItem.tsx | 16 ++-- .../report/ReportActionItemContentCreated.tsx | 2 +- .../inbox/report/ReportActionItemCreated.tsx | 6 +- .../inbox/report/ReportActionItemDate.tsx | 2 +- .../inbox/report/ReportActionItemMessage.tsx | 4 +- .../report/ReportActionItemMessageEdit.tsx | 10 +-- .../report/ReportActionItemParentAction.tsx | 6 +- .../inbox/report/ReportActionItemSingle.tsx | 4 +- .../inbox/report/ReportActionItemThread.tsx | 2 +- src/pages/inbox/report/ReportActionsList.tsx | 24 +++--- src/pages/inbox/report/ReportActionsView.tsx | 5 +- .../inbox/report/ReportDetailsExportPage.tsx | 4 +- src/pages/inbox/report/ReportFooter.tsx | 7 +- .../inbox/report/ReportTypingIndicator.tsx | 2 +- .../report/SystemChatReportFooterMessage.tsx | 10 +-- .../inbox/report/UserTypingEventListener.tsx | 2 +- .../withReportAndReportActionOrNotFound.tsx | 14 ++-- .../inbox/report/withReportOrNotFound.tsx | 12 +-- .../sidebar/AvatarWithDelegateAvatar.tsx | 2 +- .../FloatingActionButtonAndPopover.tsx | 43 +++++------ .../inbox/sidebar/NavigationTabBarAvatar.tsx | 2 +- .../sidebar/ProfileAvatarWithIndicator.tsx | 2 +- src/pages/inbox/sidebar/SidebarLinksData.tsx | 4 +- src/pages/iou/HoldReasonPage.tsx | 2 +- src/pages/iou/RejectReasonPage.tsx | 4 +- src/pages/iou/SplitBillDetailsPage.tsx | 16 ++-- .../iou/SplitExpenseCreateDateRagePage.tsx | 2 +- src/pages/iou/SplitExpenseEditPage.tsx | 10 +-- src/pages/iou/SplitExpensePage.tsx | 28 +++---- .../iou/request/DistanceRequestStartPage.tsx | 18 ++--- src/pages/iou/request/IOURequestStartPage.tsx | 18 ++--- .../MoneyRequestAccountantSelector.tsx | 14 ++-- .../request/MoneyRequestAttendeeSelector.tsx | 10 +-- .../MoneyRequestParticipantsSelector.tsx | 12 +-- .../request/step/BaseRequestStepWorkspace.tsx | 2 +- .../iou/request/step/IOURequestEditReport.tsx | 16 ++-- .../step/IOURequestEditReportCommon.tsx | 6 +- .../request/step/IOURequestStepAccountant.tsx | 4 +- .../iou/request/step/IOURequestStepAmount.tsx | 32 ++++---- .../request/step/IOURequestStepAttendees.tsx | 14 ++-- .../request/step/IOURequestStepCategory.tsx | 14 ++-- .../step/IOURequestStepCompanyInfo.tsx | 14 ++-- .../step/IOURequestStepConfirmation.tsx | 44 +++++------ .../step/IOURequestStepCurrencyModal.tsx | 2 +- .../iou/request/step/IOURequestStepDate.tsx | 10 +-- .../step/IOURequestStepDescription.tsx | 16 ++-- .../step/IOURequestStepDestination.tsx | 8 +- .../request/step/IOURequestStepDistance.tsx | 34 ++++----- .../Disclaimer/index.tsx | 2 +- .../TripStatusIndicator/index.tsx | 2 +- .../DistanceCounter/index.tsx | 2 +- .../GPSButtons/index.tsx | 2 +- .../Waypoints/index.tsx | 4 +- .../index.native.tsx | 22 +++--- .../step/IOURequestStepDistanceManual.tsx | 32 ++++---- .../step/IOURequestStepDistanceMap.tsx | 34 ++++----- .../step/IOURequestStepDistanceOdometer.tsx | 32 ++++---- .../step/IOURequestStepDistanceRate.tsx | 12 +-- .../iou/request/step/IOURequestStepHours.tsx | 4 +- .../request/step/IOURequestStepMerchant.tsx | 10 +-- .../step/IOURequestStepParticipants.tsx | 12 +-- .../step/IOURequestStepPerDiemWorkspace.tsx | 2 +- .../iou/request/step/IOURequestStepReport.tsx | 16 ++-- .../IOURequestStepScan/ReceiptView/index.tsx | 2 +- .../step/IOURequestStepScan/index.native.tsx | 4 +- .../request/step/IOURequestStepScan/index.tsx | 2 +- .../step/IOURequestStepScan/useReceiptScan.ts | 23 +++--- .../request/step/IOURequestStepSendFrom.tsx | 4 +- .../iou/request/step/IOURequestStepTag.tsx | 12 +-- .../step/IOURequestStepTaxAmountPage.tsx | 10 +-- .../step/IOURequestStepTaxRatePage.tsx | 10 +-- .../iou/request/step/IOURequestStepTime.tsx | 2 +- .../request/step/IOURequestStepUpgrade.tsx | 10 +-- .../request/step/IOURequestStepWaypoint.tsx | 6 +- .../step/withFullTransactionOrNotFound.tsx | 6 +- .../step/withWritableReportOrNotFound.tsx | 8 +- .../AttachmentModalBaseContent/index.tsx | 2 +- .../routes/ProfileAvatarModalContent.tsx | 6 +- .../routes/TransactionReceiptModalContent.tsx | 16 ++-- .../routes/WorkspaceAvatarModalContent.tsx | 2 +- .../ReportAddAttachmentModalContent/index.tsx | 11 +-- .../report/ReportAttachmentModalContent.tsx | 11 +-- .../report/ReportAvatarModalContent.tsx | 6 +- src/pages/settings/AboutPage/AboutPage.tsx | 2 +- .../ExitSurvey/ExitSurveyConfirmPage.tsx | 3 +- .../ExitSurvey/ExitSurveyReasonPage.tsx | 2 +- src/pages/settings/InitialSettingsPage.tsx | 44 +++++------ .../Preferences/PaymentCurrencyPage.tsx | 2 +- .../settings/Preferences/PreferencesPage.tsx | 12 +-- .../settings/Preferences/PriorityModePage.tsx | 2 +- src/pages/settings/Preferences/ThemePage.tsx | 2 +- .../Contacts/ContactMethodDetailsPage.tsx | 10 +-- .../Profile/Contacts/ContactMethodsPage.tsx | 6 +- .../NewContactMethodConfirmMagicCodePage.tsx | 6 +- .../Profile/Contacts/NewContactMethodPage.tsx | 8 +- .../Profile/CustomStatus/SetDatePage.tsx | 2 +- .../Profile/CustomStatus/SetTimePage.tsx | 2 +- .../CustomStatus/StatusClearAfterPage.tsx | 4 +- .../Profile/CustomStatus/StatusPage.tsx | 6 +- .../CustomStatus/VacationDelegatePage.tsx | 2 +- .../settings/Profile/DisplayNamePage.tsx | 2 +- .../PersonalDetails/DateOfBirthPage.tsx | 4 +- .../Profile/PersonalDetails/LegalNamePage.tsx | 4 +- .../PersonalDetails/PersonalAddressPage.tsx | 6 +- .../PersonalDetails/PhoneNumberPage.tsx | 6 +- src/pages/settings/Profile/ProfilePage.tsx | 10 +-- src/pages/settings/Profile/PronounsPage.tsx | 2 +- .../settings/Report/ReportLayoutPage.tsx | 2 +- src/pages/settings/Report/RoomNamePage.tsx | 2 +- src/pages/settings/Rules/ExpenseRulesPage.tsx | 2 +- .../settings/Rules/Fields/AddCategoryPage.tsx | 5 +- .../settings/Rules/Fields/AddTagPage.tsx | 6 +- .../settings/Rules/Fields/AddTaxRatePage.tsx | 4 +- src/pages/settings/Rules/RulePageBase.tsx | 11 +-- .../Security/AddDelegate/AddDelegatePage.tsx | 6 +- .../ConfirmDelegateMagicCodePage.tsx | 6 +- .../UpdateDelegateMagicCodePage.tsx | 6 +- .../UpdateDelegateRolePage.tsx | 2 +- .../ValidateCodeForm/BaseValidateCodeForm.tsx | 2 +- .../settings/Security/CloseAccountPage.tsx | 6 +- .../Security/LockAccount/LockAccountPage.tsx | 2 +- .../MergeAccounts/AccountDetailsPage.tsx | 6 +- .../MergeAccounts/AccountValidatePage.tsx | 3 +- .../MergeAccounts/MergeResultPage.tsx | 4 +- .../Security/SecuritySettingsPage.tsx | 2 +- .../Security/TwoFactorAuth/CopyCodesPage.tsx | 2 +- .../Security/TwoFactorAuth/DisablePage.tsx | 2 +- .../Security/TwoFactorAuth/EnabledPage.tsx | 2 +- .../Security/TwoFactorAuth/SuccessPage.tsx | 1 - .../TwoFactorAuth/ToggleTwoFactorAuthForm.tsx | 2 +- .../TwoFactorAuth/TwoFactorAuthWrapper.tsx | 2 +- .../Security/TwoFactorAuth/VerifyPage.tsx | 4 +- .../CardAuthenticationModal/index.tsx | 4 +- .../BillingBanner/EarlyDiscountBanner.tsx | 4 +- .../BillingBanner/PreTrialBillingBanner.tsx | 4 +- .../BillingBanner/TrialEndedBillingBanner.tsx | 2 +- .../TrialStartedBillingBanner.tsx | 4 +- .../Subscription/CardSection/CardSection.tsx | 34 ++++----- .../Subscription/ExpensifyCodePage/index.tsx | 2 +- src/pages/settings/Subscription/FreeTrial.tsx | 8 +- .../Subscription/PaymentCard/index.tsx | 6 +- .../AddMembersButton/index.tsx | 2 +- .../SubscriptionPlanCardActionButton.tsx | 4 +- .../SubscriptionPlanDowngradeBlockedPage.tsx | 2 +- .../SubscriptionSettings/index.native.tsx | 4 +- .../SubscriptionSettings/index.tsx | 8 +- .../Subscription/SubscriptionSettingsPage.tsx | 2 +- .../Subscription/SubscriptionSize/index.tsx | 2 +- .../subPages/Confirmation.tsx | 2 +- .../Subscription/TaxExemptActions/index.tsx | 2 +- .../Troubleshoot/TroubleshootPage.tsx | 6 +- src/pages/settings/VerifyAccountPageBase.tsx | 4 +- .../settings/Wallet/AddDebitCardPage.tsx | 4 +- .../substeps/CountrySelection.tsx | 2 +- .../Wallet/ChooseTransferAccountPage.tsx | 4 +- .../Agreements/index.tsx | 2 +- .../subSteps/AverageReimbursement.tsx | 4 +- .../BusinessInfo/subSteps/BusinessType.tsx | 4 +- .../BusinessInfo/subSteps/Confirmation.tsx | 4 +- .../BusinessInfo/subSteps/PaymentVolume.tsx | 4 +- .../subSteps/RegistrationNumber.tsx | 2 +- .../Docusign/index.tsx | 4 +- .../EnableGlobalReimbursements/index.tsx | 6 +- ...pensifyCardMissingDetailsMagicCodePage.tsx | 10 +-- .../ExpensifyCardMissingDetailsPage.tsx | 4 +- .../ExpensifyCardVerifyAccountPage.tsx | 2 +- .../ExpensifyCardPage/FrozenCardIndicator.tsx | 6 +- .../Wallet/ExpensifyCardPage/index.tsx | 4 +- .../Wallet/ImportTransactionsCardNamePage.tsx | 2 +- .../Wallet/ImportTransactionsCurrencyPage.tsx | 2 +- .../Wallet/ImportTransactionsPage.tsx | 2 +- .../PersonalInfo/PersonalInfo.tsx | 10 +-- .../PersonalInfo/substeps/AddressStep.tsx | 6 +- .../substeps/ConfirmationStep.tsx | 10 +-- .../PersonalInfo/substeps/LegalNameStep.tsx | 2 +- .../substeps/ManualBankAccountDetailsStep.tsx | 2 +- .../PersonalInfo/substeps/PhoneNumberStep.tsx | 4 +- .../substeps/PlaidBankAccountStep.tsx | 4 +- .../InternationalDepositAccount/index.tsx | 12 +-- .../substeps/AccountFlowEntryPoint.tsx | 2 +- .../substeps/Confirmation.tsx | 4 +- .../substeps/CountrySelection.tsx | 2 +- .../NewBankAccountVerifyAccountPage.tsx | 2 +- .../settings/Wallet/PaymentMethodList.tsx | 10 +-- .../Wallet/PersonalCardDetailsPage.tsx | 8 +- .../Wallet/PersonalCardEditNamePage.tsx | 6 +- ...rsonalCardEditTransactionStartDatePage.tsx | 2 +- .../ReportCardLostConfirmMagicCodePage.tsx | 6 +- .../settings/Wallet/ReportCardLostPage.tsx | 4 +- .../Wallet/ReportVirtualCardFraudPage.tsx | 2 +- ...eportVirtualCardFraudVerifyAccountPage.tsx | 6 +- .../ShareBankAccount/ShareBankAccount.tsx | 6 +- .../Wallet/TransactionsImportedPage.tsx | 2 +- .../settings/Wallet/TransferBalancePage.tsx | 8 +- .../Wallet/TravelCVVPage/TravelCVVPage.tsx | 6 +- .../TravelCVVVerifyAccountPage.tsx | 4 +- .../TravelCVVPage/WalletTravelCVVSection.tsx | 2 +- .../UnshareBankAccount/UnshareBankAccount.tsx | 6 +- .../Wallet/WalletPage/CardDetails.tsx | 2 +- .../settings/Wallet/WalletPage/index.tsx | 25 +++---- src/pages/signin/ChangeExpensifyLoginLink.tsx | 2 +- src/pages/signin/ChooseSSOOrMagicCode.tsx | 4 +- src/pages/signin/EmailDeliveryFailurePage.tsx | 2 +- src/pages/signin/LoginForm/BaseLoginForm.tsx | 6 +- .../signin/SAMLSignInPage/index.native.tsx | 4 +- src/pages/signin/SMSDeliveryFailurePage.tsx | 4 +- src/pages/signin/SignInLoginContext/index.tsx | 2 +- src/pages/signin/SignInPage.tsx | 6 +- src/pages/signin/SignUpWelcomeForm.tsx | 4 +- src/pages/signin/UnlinkLoginForm.tsx | 4 +- .../ValidateCodeForm/BaseValidateCodeForm.tsx | 8 +- src/pages/tasks/NewTaskDetailsPage.tsx | 6 +- src/pages/tasks/NewTaskPage.tsx | 8 +- src/pages/tasks/TaskAssigneeSelectorModal.tsx | 10 +-- .../TaskShareDestinationSelectorModal.tsx | 4 +- src/pages/wallet/WalletStatementPage.tsx | 2 +- .../workspace/AccessOrNotFoundWrapper.tsx | 12 +-- ...ConnectExistingBusinessBankAccountPage.tsx | 4 +- .../workspace/WorkspaceConfirmationPage.tsx | 6 +- src/pages/workspace/WorkspaceInitialPage.tsx | 6 +- .../WorkspaceInviteMessageRolePage.tsx | 4 +- src/pages/workspace/WorkspaceInvitePage.tsx | 10 +-- src/pages/workspace/WorkspaceJoinUserPage.tsx | 2 +- src/pages/workspace/WorkspaceMembersPage.tsx | 4 +- .../workspace/WorkspaceMoreFeaturesPage.tsx | 9 +-- src/pages/workspace/WorkspaceNewRoomPage.tsx | 8 +- .../WorkspaceOverviewCurrencyPage.tsx | 4 +- src/pages/workspace/WorkspaceOverviewPage.tsx | 25 +++---- .../workspace/WorkspacePageWithSections.tsx | 5 +- .../WorkspaceResetBankAccountModal.tsx | 5 +- src/pages/workspace/WorkspacesListPage.tsx | 35 +++++---- .../workspace/accounting/ClaimOfferPage.tsx | 2 +- .../accounting/PolicyAccountingPage.tsx | 6 +- .../reconciliation/CardReconciliationPage.tsx | 6 +- .../ReconciliationAccountSettingsPage.tsx | 4 +- .../CategoryDescriptionHintPage.tsx | 2 +- .../CategoryFlagAmountsOverPage.tsx | 2 +- .../categories/CategoryGLCodePage.tsx | 2 +- .../categories/CategoryPayrollCodePage.tsx | 2 +- .../categories/CategoryRequiredFieldsPage.tsx | 4 +- .../categories/CategorySettingsPage.tsx | 2 +- .../categories/CreateCategoryPage.tsx | 4 +- .../categories/ImportedCategoriesPage.tsx | 4 +- .../categories/WorkspaceCategoriesPage.tsx | 4 +- .../BankConnection/index.native.tsx | 6 +- .../companyCards/BankConnection/index.tsx | 4 +- .../BrokenCardFeedConnectionPage.tsx | 2 +- .../WorkspaceCompanyCardDetailsPage.tsx | 10 +-- .../WorkspaceCompanyCardEditCardNamePage.tsx | 2 +- .../WorkspaceCompanyCardFeedSelectorPage.tsx | 2 +- .../WorkspaceCompanyCardPageEmptyState.tsx | 2 +- ...spaceCompanyCardStatementCloseDatePage.tsx | 2 +- .../WorkspaceCompanyCardsFeedPendingPage.tsx | 2 +- ...kspaceCompanyCardsSettingsFeedNamePage.tsx | 2 +- .../WorkspaceCompanyCardsSettingsPage.tsx | 2 +- ...orkspaceCompanyCardsTableHeaderButtons.tsx | 4 +- .../WorkspaceCompanyCardsTable/index.tsx | 6 +- .../companyCards/addNew/AddNewCardPage.tsx | 6 +- .../companyCards/addNew/AmexCustomFeed.tsx | 2 +- .../addNew/CardInstructionsStep.tsx | 2 +- .../companyCards/addNew/CardNameStep.tsx | 2 +- .../companyCards/addNew/CardTypeStep.tsx | 2 +- .../companyCards/addNew/DetailsStep.tsx | 2 +- .../addNew/DirectStatementCloseDatePage.tsx | 2 +- .../addNew/PlaidConnectionStep.tsx | 8 +- .../companyCards/addNew/SelectBankStep.tsx | 2 +- .../companyCards/addNew/SelectCountryStep.tsx | 4 +- .../companyCards/addNew/SelectFeedType.tsx | 2 +- .../addNew/StatementCloseDateStep.tsx | 4 +- .../companyCards/assignCard/AssigneeStep.tsx | 10 +-- .../companyCards/assignCard/CardNameStep.tsx | 2 +- .../assignCard/CardSelectionStep.tsx | 4 +- .../assignCard/ConfirmationStep.tsx | 6 +- .../assignCard/InviteNewMemberStep.tsx | 6 +- .../assignCard/TransactionStartDateStep.tsx | 2 +- .../PolicyDistanceRateDetailsPage.tsx | 4 +- .../distanceRates/PolicyDistanceRatesPage.tsx | 2 - .../PolicyDistanceRatesSettingsPage.tsx | 4 +- .../downgrade/DowngradeConfirmation.tsx | 2 +- .../downgrade/PayAndDowngradePage.tsx | 2 +- .../downgrade/WorkspaceDowngradePage.tsx | 4 +- .../WorkspaceDuplicateSelectFeaturesForm.tsx | 8 +- .../expensifyCard/WorkspaceCardListLabels.tsx | 2 +- .../WorkspaceCardSettingsPage.tsx | 4 +- .../expensifyCard/WorkspaceCardsListLabel.tsx | 8 +- .../WorkspaceEditCardLimitPage.tsx | 2 +- .../WorkspaceEditCardLimitTypePage.tsx | 2 +- .../WorkspaceEditCardNamePage.tsx | 2 +- .../WorkspaceExpensifyCardBankAccounts.tsx | 6 +- .../WorkspaceExpensifyCardDetailsPage.tsx | 4 +- .../WorkspaceExpensifyCardListPage.tsx | 6 +- .../WorkspaceExpensifyCardPage.tsx | 4 +- .../WorkspaceExpensifyCardPageEmptyState.tsx | 4 +- .../WorkspaceExpensifyCardSelectorPage.tsx | 2 +- .../WorkspaceSettlementAccountPage.tsx | 10 +-- .../WorkspaceSettlementFrequencyPage.tsx | 2 +- .../expensifyCard/issueNew/AssigneeStep.tsx | 10 +-- .../expensifyCard/issueNew/CardNameStep.tsx | 2 +- .../expensifyCard/issueNew/CardTypeStep.tsx | 2 +- .../issueNew/ConfirmationStep.tsx | 6 +- .../issueNew/InviteNewMemberStep.tsx | 2 +- .../IssueNewCardConfirmMagicCodePage.tsx | 4 +- .../issueNew/IssueNewCardPage.tsx | 4 +- .../expensifyCard/issueNew/LimitStep.tsx | 2 +- .../expensifyCard/issueNew/LimitTypeStep.tsx | 2 +- .../issueNew/SetExpiryOptionsStep.tsx | 2 +- .../invoices/WorkspaceInvoiceVBASection.tsx | 8 +- .../WorkspaceInvoicingDetailsSection.tsx | 2 +- .../ImportedMembersConfirmationPage.tsx | 4 +- .../workspace/members/ImportedMembersPage.tsx | 2 +- .../WorkspaceInviteMessageComponent.tsx | 14 ++-- .../members/WorkspaceMemberDetailsPage.tsx | 6 +- .../WorkspaceOwnerChangeWrapperPage.tsx | 4 +- .../perDiem/EditPerDiemAmountPage.tsx | 2 +- .../perDiem/EditPerDiemCurrencyPage.tsx | 2 +- .../workspace/perDiem/ImportedPerDiemPage.tsx | 2 +- .../perDiem/WorkspacePerDiemDetailsPage.tsx | 2 +- .../perDiem/WorkspacePerDiemPage.tsx | 2 +- .../ChangeReceiptBillingAccountPage.tsx | 2 +- .../EditInviteReceiptPartnerPolicyPage.tsx | 2 +- .../InviteReceiptPartnerPolicyPage.tsx | 2 +- .../reports/CreateReportFieldsPage.tsx | 3 +- .../InitialListValueSelectorModal.tsx | 2 +- .../InitialListValueSelector/index.tsx | 2 +- .../reports/ReportFieldsAddListValuePage.tsx | 2 +- .../reports/ReportFieldsEditValuePage.tsx | 2 +- .../reports/ReportFieldsListValuesPage.tsx | 2 +- .../reports/ReportFieldsValueSettingsPage.tsx | 2 +- .../reports/WorkspaceReportsPage.tsx | 2 +- .../rules/IndividualExpenseRulesSection.tsx | 2 +- .../rules/MerchantRules/AddCategoryPage.tsx | 4 +- .../rules/MerchantRules/AddMatchTypePage.tsx | 2 +- .../MerchantRules/AddMerchantToMatchPage.tsx | 2 +- .../rules/MerchantRules/AddTagPage.tsx | 4 +- .../rules/MerchantRules/AddTaxPage.tsx | 4 +- .../MerchantRules/MerchantRulePageBase.tsx | 6 +- .../MerchantRules/PreviewMatchesPage.tsx | 6 +- .../tags/ImportMultiLevelTagsSettingsPage.tsx | 2 +- .../workspace/tags/ImportTagsOptionsPage.tsx | 2 +- src/pages/workspace/tags/ImportTagsPage.tsx | 2 +- .../tags/ImportedMultiLevelTagsPage.tsx | 2 +- src/pages/workspace/tags/ImportedTagsPage.tsx | 4 +- src/pages/workspace/tags/TagGLCodePage.tsx | 2 +- .../workspace/tags/WorkspaceCreateTagPage.tsx | 4 +- .../workspace/tags/WorkspaceEditTagsPage.tsx | 2 +- .../workspace/tags/WorkspaceTagsPage.tsx | 2 +- .../workspace/taxes/WorkspaceTaxesPage.tsx | 2 +- .../WorkspaceTimeTrackingDefaultRatePage.tsx | 2 +- ...orkspaceTimeTrackingDefaultRateSection.tsx | 1 - .../workspace/travel/PolicyTravelPage.tsx | 4 +- .../WorkspaceTravelInvoicingSection.tsx | 8 +- ...ceTravelInvoicingSettlementAccountPage.tsx | 4 +- ...TravelInvoicingSettlementFrequencyPage.tsx | 2 +- .../upgrade/WorkspaceUpgradePage.tsx | 4 +- src/pages/workspace/withPolicy.tsx | 6 +- .../withPolicyAndFullscreenLoading.tsx | 4 +- src/pages/workspace/withPolicyConnections.tsx | 4 +- .../workflows/WorkspaceWorkflowsPage.tsx | 16 ++-- .../workflows/WorkspaceWorkflowsPayerPage.tsx | 2 +- .../approvals/ApprovalWorkflowEditor.tsx | 1 - ...aceWorkflowsApprovalsApprovalLimitPage.tsx | 3 +- ...orkspaceWorkflowsApprovalsApproverPage.tsx | 3 +- .../WorkspaceWorkflowsApprovalsCreatePage.tsx | 6 +- .../WorkspaceWorkflowsApprovalsEditPage.tsx | 4 +- ...paceWorkflowsApprovalsExpensesFromPage.tsx | 2 +- ...orkflowsApprovalsOverLimitApproverPage.tsx | 3 +- tests/actions/IOUTest.ts | 2 +- tests/actions/PolicyTagTest.ts | 4 +- tests/unit/TransactionTest.ts | 2 +- 908 files changed, 2661 insertions(+), 2955 deletions(-) diff --git a/src/Expensify.tsx b/src/Expensify.tsx index 5847395a6fab5..5e8796b05842b 100644 --- a/src/Expensify.tsx +++ b/src/Expensify.tsx @@ -33,9 +33,8 @@ import {hasAuthToken} from './libs/actions/Session'; import * as User from './libs/actions/User'; import * as ActiveClientManager from './libs/ActiveClientManager'; import {isSafari} from './libs/Browser'; -import * as Environment from './libs/Environment/Environment'; import FS from './libs/Fullstory'; -import Growl, {growlRef} from './libs/Growl'; +import {growlRef} from './libs/Growl'; import Log from './libs/Log'; import migrateOnyx from './libs/migrateOnyx'; import Navigation from './libs/Navigation/Navigation'; @@ -62,13 +61,6 @@ Onyx.registerLogger(({level, message, parameters}) => { if (level === 'alert') { Log.alert(message, parameters); console.error(message); - - // useOnyx() calls with "canBeMissing" config set to false will display a visual alert in dev environment - // when they don't return data. - const shouldShowAlert = typeof parameters === 'object' && !Array.isArray(parameters) && 'showAlert' in parameters && 'key' in parameters; - if (Environment.isDevelopment() && shouldShowAlert) { - Growl.error(`${message} Key: ${parameters.key as string}`, 10000); - } } else if (level === 'hmmm') { Log.hmmm(message, parameters); } else { @@ -106,24 +98,24 @@ function Expensify() { const {setSplashScreenState} = useSplashScreenActions(); const [hasAttemptedToOpenPublicRoom, setAttemptedToOpenPublicRoom] = useState(false); const {translate, preferredLocale} = useLocalize(); - const [account] = useOnyx(ONYXKEYS.ACCOUNT, {canBeMissing: true}); - const [session, sessionMetadata] = useOnyx(ONYXKEYS.SESSION, {canBeMissing: true}); - const [lastRoute] = useOnyx(ONYXKEYS.LAST_ROUTE, {canBeMissing: true}); - const [userMetadata] = useOnyx(ONYXKEYS.USER_METADATA, {canBeMissing: true}); - const [isCheckingPublicRoom = true] = useOnyx(ONYXKEYS.IS_CHECKING_PUBLIC_ROOM, {initWithStoredValues: false, canBeMissing: true}); - const [updateAvailable] = useOnyx(ONYXKEYS.UPDATE_AVAILABLE, {initWithStoredValues: false, canBeMissing: true}); - const [updateRequired] = useOnyx(ONYXKEYS.UPDATE_REQUIRED, {initWithStoredValues: false, canBeMissing: true}); - const [isSidebarLoaded] = useOnyx(ONYXKEYS.IS_SIDEBAR_LOADED, {canBeMissing: true}); - const [screenShareRequest] = useOnyx(ONYXKEYS.SCREEN_SHARE_REQUEST, {canBeMissing: true}); - const [lastVisitedPath] = useOnyx(ONYXKEYS.LAST_VISITED_PATH, {canBeMissing: true}); - const [allReports] = useOnyx(ONYXKEYS.COLLECTION.REPORT, {canBeMissing: false}); - const [hasLoadedApp] = useOnyx(ONYXKEYS.HAS_LOADED_APP, {canBeMissing: true}); - const [isLoadingApp] = useOnyx(ONYXKEYS.IS_LOADING_APP, {canBeMissing: true}); + const [account] = useOnyx(ONYXKEYS.ACCOUNT, {}); + const [session, sessionMetadata] = useOnyx(ONYXKEYS.SESSION, {}); + const [lastRoute] = useOnyx(ONYXKEYS.LAST_ROUTE, {}); + const [userMetadata] = useOnyx(ONYXKEYS.USER_METADATA, {}); + const [isCheckingPublicRoom = true] = useOnyx(ONYXKEYS.IS_CHECKING_PUBLIC_ROOM, {initWithStoredValues: false}); + const [updateAvailable] = useOnyx(ONYXKEYS.UPDATE_AVAILABLE, {initWithStoredValues: false}); + const [updateRequired] = useOnyx(ONYXKEYS.UPDATE_REQUIRED, {initWithStoredValues: false}); + const [isSidebarLoaded] = useOnyx(ONYXKEYS.IS_SIDEBAR_LOADED, {}); + const [screenShareRequest] = useOnyx(ONYXKEYS.SCREEN_SHARE_REQUEST, {}); + const [lastVisitedPath] = useOnyx(ONYXKEYS.LAST_VISITED_PATH, {}); + const [allReports] = useOnyx(ONYXKEYS.COLLECTION.REPORT, {}); + const [hasLoadedApp] = useOnyx(ONYXKEYS.HAS_LOADED_APP, {}); + const [isLoadingApp] = useOnyx(ONYXKEYS.IS_LOADING_APP, {}); const {isOffline} = useNetwork(); - const [stashedCredentials = CONST.EMPTY_OBJECT] = useOnyx(ONYXKEYS.STASHED_CREDENTIALS, {canBeMissing: true}); - const [stashedSession] = useOnyx(ONYXKEYS.STASHED_SESSION, {canBeMissing: true}); - const [introSelected] = useOnyx(ONYXKEYS.NVP_INTRO_SELECTED, {canBeMissing: true}); - const [conciergeReportID] = useOnyx(ONYXKEYS.CONCIERGE_REPORT_ID, {canBeMissing: true}); + const [stashedCredentials = CONST.EMPTY_OBJECT] = useOnyx(ONYXKEYS.STASHED_CREDENTIALS, {}); + const [stashedSession] = useOnyx(ONYXKEYS.STASHED_SESSION, {}); + const [introSelected] = useOnyx(ONYXKEYS.NVP_INTRO_SELECTED, {}); + const [conciergeReportID] = useOnyx(ONYXKEYS.CONCIERGE_REPORT_ID, {}); useDebugShortcut(); usePriorityMode(); diff --git a/src/HybridAppHandler.tsx b/src/HybridAppHandler.tsx index fbf52568bb9c9..68bd9f8d60d4d 100644 --- a/src/HybridAppHandler.tsx +++ b/src/HybridAppHandler.tsx @@ -14,7 +14,7 @@ import isLoadingOnyxValue from './types/utils/isLoadingOnyxValue'; function HybridAppHandler() { const {splashScreenState} = useSplashScreenState(); const {setSplashScreenState} = useSplashScreenActions(); - const [tryNewDot, tryNewDotMetadata] = useOnyx(ONYXKEYS.NVP_TRY_NEW_DOT, {canBeMissing: true}); + const [tryNewDot, tryNewDotMetadata] = useOnyx(ONYXKEYS.NVP_TRY_NEW_DOT, {}); const isLoadingTryNewDot = isLoadingOnyxValue(tryNewDotMetadata); const finalizeTransitionFromOldDot = useCallback( diff --git a/src/components/AccountSwitcher.tsx b/src/components/AccountSwitcher.tsx index fea10add66b7f..be60072dc9184 100644 --- a/src/components/AccountSwitcher.tsx +++ b/src/components/AccountSwitcher.tsx @@ -47,14 +47,14 @@ function AccountSwitcher({isScreenFocused}: AccountSwitcherProps) { const {localeCompare, translate, formatPhoneNumber} = useLocalize(); const {isOffline} = useNetwork(); const {shouldUseNarrowLayout} = useResponsiveLayout(); - const [account] = useOnyx(ONYXKEYS.ACCOUNT, {canBeMissing: true}); - const [accountID] = useOnyx(ONYXKEYS.SESSION, {canBeMissing: false, selector: accountIDSelector}); - const [isDebugModeEnabled] = useOnyx(ONYXKEYS.IS_DEBUG_MODE_ENABLED, {canBeMissing: true}); - const [credentials] = useOnyx(ONYXKEYS.CREDENTIALS, {canBeMissing: true}); - const [stashedCredentials = CONST.EMPTY_OBJECT] = useOnyx(ONYXKEYS.STASHED_CREDENTIALS, {canBeMissing: true}); - const [session] = useOnyx(ONYXKEYS.SESSION, {canBeMissing: true}); - const [stashedSession] = useOnyx(ONYXKEYS.STASHED_SESSION, {canBeMissing: true}); - const [activePolicyID] = useOnyx(ONYXKEYS.NVP_ACTIVE_POLICY_ID, {canBeMissing: true}); + const [account] = useOnyx(ONYXKEYS.ACCOUNT, {}); + const [accountID] = useOnyx(ONYXKEYS.SESSION, {selector: accountIDSelector}); + const [isDebugModeEnabled] = useOnyx(ONYXKEYS.IS_DEBUG_MODE_ENABLED, {}); + const [credentials] = useOnyx(ONYXKEYS.CREDENTIALS, {}); + const [stashedCredentials = CONST.EMPTY_OBJECT] = useOnyx(ONYXKEYS.STASHED_CREDENTIALS, {}); + const [session] = useOnyx(ONYXKEYS.SESSION, {}); + const [stashedSession] = useOnyx(ONYXKEYS.STASHED_SESSION, {}); + const [activePolicyID] = useOnyx(ONYXKEYS.NVP_ACTIVE_POLICY_ID, {}); const buttonRef = useRef(null); const {windowHeight} = useWindowDimensions(); diff --git a/src/components/AddPaymentCard/PaymentCardForm.tsx b/src/components/AddPaymentCard/PaymentCardForm.tsx index 12491ac1afea1..24adbf61cd5ae 100644 --- a/src/components/AddPaymentCard/PaymentCardForm.tsx +++ b/src/components/AddPaymentCard/PaymentCardForm.tsx @@ -126,7 +126,7 @@ function PaymentCardForm({ currencySelectorRoute, }: PaymentCardFormProps) { const styles = useThemeStyles(); - const [data, metadata] = useOnyx(ONYXKEYS.FORMS.ADD_PAYMENT_CARD_FORM, {canBeMissing: true}); + const [data, metadata] = useOnyx(ONYXKEYS.FORMS.ADD_PAYMENT_CARD_FORM, {}); const {translate} = useLocalize(); const route = useRoute(); diff --git a/src/components/AddPaymentMethodMenu.tsx b/src/components/AddPaymentMethodMenu.tsx index 26801e3a0a464..ac64dd798870e 100644 --- a/src/components/AddPaymentMethodMenu.tsx +++ b/src/components/AddPaymentMethodMenu.tsx @@ -60,8 +60,8 @@ function AddPaymentMethodMenu({ const icons = useMemoizedLazyExpensifyIcons(['Building', 'Bank']); const {translate} = useLocalize(); const [restoreFocusType, setRestoreFocusType] = useState(); - const [session] = useOnyx(ONYXKEYS.SESSION, {canBeMissing: true}); - const [introSelected, introSelectedStatus] = useOnyx(ONYXKEYS.NVP_INTRO_SELECTED, {canBeMissing: true}); + const [session] = useOnyx(ONYXKEYS.SESSION, {}); + const [introSelected, introSelectedStatus] = useOnyx(ONYXKEYS.NVP_INTRO_SELECTED, {}); // Users can choose to pay with business bank account in case of Expense reports or in case of P2P IOU report // which then starts a bottom up flow and creates a Collect workspace where the payer is an admin and payee is an employee. diff --git a/src/components/AddPlaidBankAccount.tsx b/src/components/AddPlaidBankAccount.tsx index 1a53f0a9d1e9e..ff14a21cb1194 100644 --- a/src/components/AddPlaidBankAccount.tsx +++ b/src/components/AddPlaidBankAccount.tsx @@ -82,8 +82,8 @@ function AddPlaidBankAccount({ const subscribedKeyboardShortcuts = useRef void>>([]); const previousNetworkState = useRef(undefined); const [selectedPlaidAccountMask, setSelectedPlaidAccountMask] = useState(defaultSelectedPlaidAccountMask); - const [plaidLinkToken] = useOnyx(ONYXKEYS.PLAID_LINK_TOKEN, {canBeMissing: true, initWithStoredValues: false}); - const [isPlaidDisabled] = useOnyx(ONYXKEYS.IS_PLAID_DISABLED, {canBeMissing: true}); + const [plaidLinkToken] = useOnyx(ONYXKEYS.PLAID_LINK_TOKEN, {initWithStoredValues: false}); + const [isPlaidDisabled] = useOnyx(ONYXKEYS.IS_PLAID_DISABLED, {}); const {translate} = useLocalize(); const {isOffline} = useNetwork(); diff --git a/src/components/AddUnreportedExpenseFooter.tsx b/src/components/AddUnreportedExpenseFooter.tsx index 9042b0b022b41..f6578f44ba0bc 100644 --- a/src/components/AddUnreportedExpenseFooter.tsx +++ b/src/components/AddUnreportedExpenseFooter.tsx @@ -42,12 +42,12 @@ function AddUnreportedExpenseFooter({selectedIds, report, reportToConfirm, repor const isASAPSubmitBetaEnabled = isBetaEnabled(CONST.BETAS.ASAP_SUBMIT); const session = useSession(); const personalDetails = usePersonalDetails(); - const [allTransactions] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION, {canBeMissing: true}); - const [transactionViolations] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS, {canBeMissing: true}); - const [policyRecentlyUsedCurrencies] = useOnyx(ONYXKEYS.RECENTLY_USED_CURRENCIES, {canBeMissing: true}); - const [quickAction] = useOnyx(ONYXKEYS.NVP_QUICK_ACTION_GLOBAL_CREATE, {canBeMissing: true}); - const [betas] = useOnyx(ONYXKEYS.BETAS, {canBeMissing: true}); - const [chatReport] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT}${report?.chatReportID}`, {canBeMissing: true}); + const [allTransactions] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION, {}); + const [transactionViolations] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS, {}); + const [policyRecentlyUsedCurrencies] = useOnyx(ONYXKEYS.RECENTLY_USED_CURRENCIES, {}); + const [quickAction] = useOnyx(ONYXKEYS.NVP_QUICK_ACTION_GLOBAL_CREATE, {}); + const [betas] = useOnyx(ONYXKEYS.BETAS, {}); + const [chatReport] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT}${report?.chatReportID}`, {}); const handleConfirm = () => { if (selectedIds.size === 0) { diff --git a/src/components/AnchorForAttachmentsOnly/BaseAnchorForAttachmentsOnly.tsx b/src/components/AnchorForAttachmentsOnly/BaseAnchorForAttachmentsOnly.tsx index 03159e30cf5c8..e49edb48d4ef7 100644 --- a/src/components/AnchorForAttachmentsOnly/BaseAnchorForAttachmentsOnly.tsx +++ b/src/components/AnchorForAttachmentsOnly/BaseAnchorForAttachmentsOnly.tsx @@ -28,7 +28,7 @@ function BaseAnchorForAttachmentsOnly({style, source = '', displayName = '', onP const sourceURLWithAuth = addEncryptedAuthTokenToURL(source); const sourceID = (source.match(CONST.REGEX.ATTACHMENT_ID) ?? [])[1]; - const [download] = useOnyx(`${ONYXKEYS.COLLECTION.DOWNLOAD}${sourceID}`, {canBeMissing: true}); + const [download] = useOnyx(`${ONYXKEYS.COLLECTION.DOWNLOAD}${sourceID}`, {}); const {translate} = useLocalize(); const {isOffline} = useNetwork(); diff --git a/src/components/ApprovalWorkflowSection.tsx b/src/components/ApprovalWorkflowSection.tsx index e5849c7eaf009..44dc9b1a1d02a 100644 --- a/src/components/ApprovalWorkflowSection.tsx +++ b/src/components/ApprovalWorkflowSection.tsx @@ -36,7 +36,6 @@ function ApprovalWorkflowSection({approvalWorkflow, onPress, currency = CONST.CU const {translate, toLocaleOrdinal, localeCompare} = useLocalize(); const {shouldUseNarrowLayout} = useResponsiveLayout(); const [personalDetailsByEmail] = useOnyx(ONYXKEYS.PERSONAL_DETAILS_LIST, { - canBeMissing: true, selector: personalDetailsByEmailSelector, }); diff --git a/src/components/ApproverSelectionList.tsx b/src/components/ApproverSelectionList.tsx index 897efe88be60d..c0e399436e7aa 100644 --- a/src/components/ApproverSelectionList.tsx +++ b/src/components/ApproverSelectionList.tsx @@ -71,7 +71,7 @@ function ApproverSelectionList({ const styles = useThemeStyles(); const {translate, localeCompare} = useLocalize(); const [searchTerm, debouncedSearchTerm, setSearchTerm] = useDebouncedState(''); - const [countryCode = CONST.DEFAULT_COUNTRY_CODE] = useOnyx(ONYXKEYS.COUNTRY_CODE, {canBeMissing: false}); + const [countryCode = CONST.DEFAULT_COUNTRY_CODE] = useOnyx(ONYXKEYS.COUNTRY_CODE, {}); const shouldShowTextInput = shouldShowTextInputProp ?? allApprovers?.length >= CONST.STANDARD_LIST_ITEM_LIMIT; const lazyIllustrations = useMemoizedLazyIllustrations(['TurtleInShell']); diff --git a/src/components/ArchivedReportFooter.tsx b/src/components/ArchivedReportFooter.tsx index ff472f3308416..29c3a76d9b990 100644 --- a/src/components/ArchivedReportFooter.tsx +++ b/src/components/ArchivedReportFooter.tsx @@ -24,8 +24,8 @@ function ArchivedReportFooter({report, currentUserAccountID}: ArchivedReportFoot const styles = useThemeStyles(); const {translate} = useLocalize(); - const [personalDetails = getEmptyObject()] = useOnyx(ONYXKEYS.PERSONAL_DETAILS_LIST, {canBeMissing: false}); - const [reportClosedAction] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${report.reportID}`, {canEvict: false, selector: getLastClosedReportAction, canBeMissing: true}); + const [personalDetails = getEmptyObject()] = useOnyx(ONYXKEYS.PERSONAL_DETAILS_LIST, {}); + const [reportClosedAction] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${report.reportID}`, {canEvict: false, selector: getLastClosedReportAction}); const originalMessage = isClosedAction(reportClosedAction) ? getOriginalMessage(reportClosedAction) : null; const archiveReason = originalMessage?.reason ?? CONST.REPORT.ARCHIVE_REASON.DEFAULT; const actorPersonalDetails = personalDetails?.[reportClosedAction?.actorAccountID ?? CONST.DEFAULT_NUMBER_ID]; diff --git a/src/components/Attachments/AttachmentCarousel/CarouselItem.tsx b/src/components/Attachments/AttachmentCarousel/CarouselItem.tsx index 161dd5d8a488d..b94f823494f6c 100644 --- a/src/components/Attachments/AttachmentCarousel/CarouselItem.tsx +++ b/src/components/Attachments/AttachmentCarousel/CarouselItem.tsx @@ -38,7 +38,7 @@ function CarouselItem({item, onPress, isFocused, isModalHovered, reportID}: Caro const {translate} = useLocalize(); const {isAttachmentHidden} = useContext(AttachmentModalContext); const [isHidden, setIsHidden] = useState(() => (item.reportActionID && isAttachmentHidden(item.reportActionID)) ?? item.hasBeenFlagged); - const [report] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT}${reportID}`, {canBeMissing: true}); + const [report] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT}${reportID}`, {}); const renderButton = (style: StyleProp) => (