From faf6155bdc45576bbdfbaa87625572ee48914fac Mon Sep 17 00:00:00 2001 From: Jakub Butkiewicz Date: Thu, 16 May 2024 09:53:48 +0200 Subject: [PATCH 01/30] feat: add confirm screen --- src/ROUTES.ts | 8 +-- src/SCREENS.ts | 2 +- .../ModalStackNavigators/index.tsx | 1 + src/libs/Navigation/linkingConfig/config.ts | 5 +- src/pages/TransactionDuplicate/Confirm.tsx | 64 +++++++++++++++++++ 5 files changed, 74 insertions(+), 6 deletions(-) create mode 100644 src/pages/TransactionDuplicate/Confirm.tsx diff --git a/src/ROUTES.ts b/src/ROUTES.ts index a5f35962b67eb..fe1e08d208d1d 100644 --- a/src/ROUTES.ts +++ b/src/ROUTES.ts @@ -815,10 +815,10 @@ const ROUTES = { route: 'r/:threadReportID/duplicates/review/billable', getRoute: (threadReportID: string) => `r/${threadReportID}/duplicates/review/billable` as const, }, - // TRANSACTION_DUPLICATE_CONFIRM: { - // route: 'r/:threadReportID/duplicates/review/description', - // getRoute: (threadReportID: string) => `r/${threadReportID}/duplicates/review/description` as const, - // }, + TRANSACTION_DUPLICATE_CONFIRM_PAGE: { + route: 'r/:threadReportID/duplicates/review/description', + getRoute: (threadReportID: string) => `r/${threadReportID}/duplicates/review/description` as const, + }, POLICY_ACCOUNTING_XERO_IMPORT: { route: 'settings/workspaces/:policyID/accounting/xero/import', getRoute: (policyID: string) => `settings/workspaces/${policyID}/accounting/xero/import` as const, diff --git a/src/SCREENS.ts b/src/SCREENS.ts index fae7c11ba21ca..7ccef92176356 100644 --- a/src/SCREENS.ts +++ b/src/SCREENS.ts @@ -186,7 +186,7 @@ const SCREENS = { TAX_CODE: 'Transaction_Duplicate_Tax_Code', REIMBURSABLE: 'Transaction_Duplicate_Reimburable', BILLABLE: 'Transaction_Duplicate_Billable', - // CONFIRM: 'Transaction_Duplicate_Confirm', + CONFIRM: 'Transaction_Duplicate_Confirm', }, IOU_SEND: { diff --git a/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx b/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx index 0448c4ed96477..d50188343b875 100644 --- a/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx +++ b/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx @@ -375,6 +375,7 @@ const TransactionDuplicateStackNavigator = createModalStackNavigator require('../../../../pages/TransactionDuplicate/ReviewTaxCode').default as React.ComponentType, [SCREENS.TRANSACTION_DUPLICATE.BILLABLE]: () => require('../../../../pages/TransactionDuplicate/ReviewBillable').default as React.ComponentType, [SCREENS.TRANSACTION_DUPLICATE.REIMBURSABLE]: () => require('../../../../pages/TransactionDuplicate/ReviewReimbursable').default as React.ComponentType, + [SCREENS.TRANSACTION_DUPLICATE.CONFIRM]: () => require('../../../../pages/TransactionDuplicate/Confirm').default as React.ComponentType, }); const SearchReportModalStackNavigator = createModalStackNavigator({ diff --git a/src/libs/Navigation/linkingConfig/config.ts b/src/libs/Navigation/linkingConfig/config.ts index 9da05b572b0df..03f2cc80f7e5e 100644 --- a/src/libs/Navigation/linkingConfig/config.ts +++ b/src/libs/Navigation/linkingConfig/config.ts @@ -692,7 +692,10 @@ const config: LinkingOptions['config'] = { path: ROUTES.TRANSACTION_DUPLICATE_REVIEW_BILLABLE_PAGE.route, exact: true, }, - // [SCREENS.TRANSACTION_DUPLICATE.CONFIRM]: ROUTES.TRANSACTION_DUPLICATE_CONFIRM.route, + [SCREENS.TRANSACTION_DUPLICATE.CONFIRM]: { + path: ROUTES.TRANSACTION_DUPLICATE_CONFIRM_PAGE.route, + exact: true, + }, }, }, [SCREENS.RIGHT_MODAL.SPLIT_DETAILS]: { diff --git a/src/pages/TransactionDuplicate/Confirm.tsx b/src/pages/TransactionDuplicate/Confirm.tsx new file mode 100644 index 0000000000000..b503abf45450b --- /dev/null +++ b/src/pages/TransactionDuplicate/Confirm.tsx @@ -0,0 +1,64 @@ +import type {RouteProp} from '@react-navigation/native'; +import {useRoute} from '@react-navigation/native'; +import React from 'react'; +import {View} from 'react-native'; +import {useOnyx} from 'react-native-onyx'; +import Button from '@components/Button'; +import HeaderWithBackButton from '@components/HeaderWithBackButton'; +import MoneyRequestView from '@components/ReportActionItem/MoneyRequestView'; +import ScreenWrapper from '@components/ScreenWrapper'; +import Text from '@components/Text'; +import useThemeStyles from '@hooks/useThemeStyles'; +import type {TransactionDuplicateNavigatorParamList} from '@libs/Navigation/types'; +import variables from '@styles/variables'; +import ONYXKEYS from '@src/ONYXKEYS'; +import type SCREENS from '@src/SCREENS'; +import type {Transaction} from '@src/types/onyx'; + +function Confirm() { + const styles = useThemeStyles(); + const route = useRoute>(); + const [report] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT}${route.params.threadReportID}`); + const [reviewDuplicates] = useOnyx(ONYXKEYS.FORMS.REVIEW_DUPLICATES_FORM); + const [originalTransaction] = useOnyx(`${ONYXKEYS.COLLECTION.TRANSACTION}${reviewDuplicates?.transactionID}`); + const transaction: Transaction = { + ...originalTransaction, + category: reviewDuplicates?.category, + comment: {comment: reviewDuplicates?.description}, + billable: reviewDuplicates?.billable, + reimbursable: reviewDuplicates?.reimbursable, + tag: reviewDuplicates?.tag, + taxCode: reviewDuplicates?.taxCode, + }; + + return ( + + + + + Confirm the details you're keeping + + The duplicate requests you don't keep will be held for the member to delete + + +