diff --git a/src/CONST/index.ts b/src/CONST/index.ts index b270d62582b08..d04e91705423c 100644 --- a/src/CONST/index.ts +++ b/src/CONST/index.ts @@ -1736,6 +1736,17 @@ const CONST = { FAB_OUT: 200, }, }, + FAB_MENU_ITEM_IDS: { + QUICK_ACTION: 'quick-action', + EXPENSE: 'expense', + TRACK_DISTANCE: 'track-distance', + CREATE_REPORT: 'create-report', + NEW_CHAT: 'new-chat', + INVOICE: 'invoice', + TRAVEL: 'travel', + TEST_DRIVE: 'test-drive', + NEW_WORKSPACE: 'new-workspace', + }, TIMING: { REPORT_ACTION_ITEM_LAYOUT_DEBOUNCE_TIME: 1500, SHOW_LOADING_SPINNER_DEBOUNCE_TIME: 250, diff --git a/src/components/FloatingCameraButton/BaseFloatingCameraButton.tsx b/src/components/FloatingCameraButton/BaseFloatingCameraButton.tsx index e21ba453c89a8..84501f9906448 100644 --- a/src/components/FloatingCameraButton/BaseFloatingCameraButton.tsx +++ b/src/components/FloatingCameraButton/BaseFloatingCameraButton.tsx @@ -1,6 +1,6 @@ -import React, {useCallback, useMemo} from 'react'; +import React, {useState} from 'react'; import {View} from 'react-native'; -import type {OnyxCollection, OnyxEntry} from 'react-native-onyx'; +import type {OnyxCollection} from 'react-native-onyx'; import Icon from '@components/Icon'; import {PressableWithoutFeedback} from '@components/Pressable'; import useLocalize from '@hooks/useLocalize'; @@ -18,13 +18,12 @@ import Tab from '@userActions/Tab'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; +import {sessionEmailAndAccountIDSelector} from '@src/selectors/Session'; import {validTransactionDraftIDsSelector} from '@src/selectors/TransactionDraft'; import type * as OnyxTypes from '@src/types/onyx'; import {isEmptyObject} from '@src/types/utils/EmptyObject'; import type IconAsset from '@src/types/utils/IconAsset'; -const sessionSelector = (session: OnyxEntry) => ({email: session?.email, accountID: session?.accountID}); - type BaseFloatingCameraButtonProps = { icon: IconAsset; }; @@ -36,23 +35,20 @@ function BaseFloatingCameraButton({icon}: BaseFloatingCameraButtonProps) { const [activePolicyID] = useOnyx(ONYXKEYS.NVP_ACTIVE_POLICY_ID); const [activePolicy] = useOnyx(`${ONYXKEYS.COLLECTION.POLICY}${activePolicyID}`); - const [session] = useOnyx(ONYXKEYS.SESSION, {selector: sessionSelector}); + const [session] = useOnyx(ONYXKEYS.SESSION, {selector: sessionEmailAndAccountIDSelector}); const [draftTransactionIDs] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION_DRAFT, {selector: validTransactionDraftIDsSelector}); const [userBillingGraceEndPeriods] = useOnyx(ONYXKEYS.COLLECTION.SHARED_NVP_PRIVATE_USER_BILLING_GRACE_PERIOD_END); const [ownerBillingGraceEndPeriod] = useOnyx(ONYXKEYS.NVP_PRIVATE_OWNER_BILLING_GRACE_PERIOD_END); - const reportID = useMemo(() => generateReportID(), []); + const [reportID] = useState(() => generateReportID()); - const policyChatForActivePolicySelector = useCallback( - (reports: OnyxCollection) => { - if (isEmptyObject(activePolicy) || !activePolicy?.isPolicyExpenseChatEnabled) { - return undefined; - } - const policyChatsForActivePolicy = getWorkspaceChats(activePolicyID, [session?.accountID ?? CONST.DEFAULT_NUMBER_ID], reports); - return policyChatsForActivePolicy.at(0); - }, - [activePolicy, activePolicyID, session?.accountID], - ); - const [policyChatForActivePolicy] = useOnyx(ONYXKEYS.COLLECTION.REPORT, {selector: policyChatForActivePolicySelector}, [policyChatForActivePolicySelector]); + const policyChatForActivePolicySelector = (reports: OnyxCollection) => { + if (isEmptyObject(activePolicy) || !activePolicy?.isPolicyExpenseChatEnabled) { + return undefined; + } + const policyChatsForActivePolicy = getWorkspaceChats(activePolicyID, [session?.accountID ?? CONST.DEFAULT_NUMBER_ID], reports); + return policyChatsForActivePolicy.at(0); + }; + const [policyChatForActivePolicy] = useOnyx(ONYXKEYS.COLLECTION.REPORT, {selector: policyChatForActivePolicySelector}); const onPress = () => { interceptAnonymousUser(() => { diff --git a/src/components/Navigation/QuickCreationActionsBar/index.tsx b/src/components/Navigation/QuickCreationActionsBar/index.tsx index f0221755df0e4..a4601176ac5bc 100644 --- a/src/components/Navigation/QuickCreationActionsBar/index.tsx +++ b/src/components/Navigation/QuickCreationActionsBar/index.tsx @@ -129,7 +129,7 @@ function QuickCreationActionsBar() { [currentUserPersonalDetails, hasViolations, defaultChatEnabledPolicy, isASAPSubmitBetaEnabled, allBetas], ); - const {openCreateReportConfirmation, CreateReportConfirmationModal} = useCreateEmptyReportConfirmation({ + const {openCreateReportConfirmation} = useCreateEmptyReportConfirmation({ policyID: defaultChatEnabledPolicyID, policyName: defaultChatEnabledPolicy?.name ?? '', onConfirm: handleCreateWorkspaceReport, @@ -229,45 +229,42 @@ function QuickCreationActionsBar() { ); return ( - <> - {CreateReportConfirmationModal} - + +