From 057378513fae9fc2c9c28118febd20d52c708f7b Mon Sep 17 00:00:00 2001 From: Sachin Chavda Date: Mon, 30 Dec 2024 03:33:18 +0530 Subject: [PATCH 1/5] refactor shareTrackedExpense function --- .../lib/ContactsModule.nitro.d.ts | 23 ++++ .../lib/ContactsModule.nitro.js | 1 + modules/ContactsNitroModule/lib/index.d.ts | 5 + modules/ContactsNitroModule/lib/index.js | 3 + .../parameters/ShareTrackedExpenseParams.ts | 4 + src/libs/actions/IOU.ts | 119 ++++++++---------- 6 files changed, 90 insertions(+), 65 deletions(-) create mode 100644 modules/ContactsNitroModule/lib/ContactsModule.nitro.d.ts create mode 100644 modules/ContactsNitroModule/lib/ContactsModule.nitro.js create mode 100644 modules/ContactsNitroModule/lib/index.d.ts create mode 100644 modules/ContactsNitroModule/lib/index.js diff --git a/modules/ContactsNitroModule/lib/ContactsModule.nitro.d.ts b/modules/ContactsNitroModule/lib/ContactsModule.nitro.d.ts new file mode 100644 index 000000000000..5a470ba95345 --- /dev/null +++ b/modules/ContactsNitroModule/lib/ContactsModule.nitro.d.ts @@ -0,0 +1,23 @@ +import type {HybridObject} from 'react-native-nitro-modules'; + +interface StringHolder { + value: string; +} +export interface Contact { + firstName?: string; + lastName?: string; + middleName?: string; + phoneNumbers?: StringHolder[]; + emailAddresses?: StringHolder[]; + imageData?: string; + thumbnailImageData?: string; +} +export type ContactFields = 'FIRST_NAME' | 'LAST_NAME' | 'MIDDLE_NAME' | 'PHONE_NUMBERS' | 'EMAIL_ADDRESSES' | 'IMAGE_DATA' | 'THUMBNAIL_IMAGE_DATA' | 'GIVEN_NAME_KEY'; +export interface ContactsModule + extends HybridObject<{ + ios: 'swift'; + android: 'kotlin'; + }> { + getAll(keys: ContactFields[]): Promise; +} +export {}; diff --git a/modules/ContactsNitroModule/lib/ContactsModule.nitro.js b/modules/ContactsNitroModule/lib/ContactsModule.nitro.js new file mode 100644 index 000000000000..cb0ff5c3b541 --- /dev/null +++ b/modules/ContactsNitroModule/lib/ContactsModule.nitro.js @@ -0,0 +1 @@ +export {}; diff --git a/modules/ContactsNitroModule/lib/index.d.ts b/modules/ContactsNitroModule/lib/index.d.ts new file mode 100644 index 000000000000..c305e9cd822f --- /dev/null +++ b/modules/ContactsNitroModule/lib/index.d.ts @@ -0,0 +1,5 @@ +import type {ContactsModule} from './ContactsModule.nitro'; +import type {Contact} from './ContactsModule.nitro'; + +export declare const ContactsNitroModule: ContactsModule; +export type {Contact}; diff --git a/modules/ContactsNitroModule/lib/index.js b/modules/ContactsNitroModule/lib/index.js new file mode 100644 index 000000000000..f82f6cdd43b3 --- /dev/null +++ b/modules/ContactsNitroModule/lib/index.js @@ -0,0 +1,3 @@ +import {NitroModules} from 'react-native-nitro-modules'; + +export const ContactsNitroModule = NitroModules.createHybridObject('ContactsModule'); diff --git a/src/libs/API/parameters/ShareTrackedExpenseParams.ts b/src/libs/API/parameters/ShareTrackedExpenseParams.ts index cee4bc40d9ac..dac75ae5c5d5 100644 --- a/src/libs/API/parameters/ShareTrackedExpenseParams.ts +++ b/src/libs/API/parameters/ShareTrackedExpenseParams.ts @@ -20,6 +20,10 @@ type ShareTrackedExpenseParams = { taxCode: string; taxAmount: number; billable?: boolean; + policyExpenseChatReportID?: string; + policyExpenseCreatedReportActionID?: string; + adminsChatReportID?: string; + adminsCreatedReportActionID?: string; }; export default ShareTrackedExpenseParams; diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts index 2658f8925e5c..212407b6aee7 100644 --- a/src/libs/actions/IOU.ts +++ b/src/libs/actions/IOU.ts @@ -21,6 +21,7 @@ import type { SendInvoiceParams, SendMoneyParams, SetNameValuePairParams, + ShareTrackedExpenseParams, SplitBillParams, StartSplitBillParams, SubmitReportParams, @@ -113,7 +114,7 @@ type TrackExpenseInformation = { actionableWhisperReportActionIDParam?: string; onyxData: OnyxData; }; -type CategorizeTrackedExpenseTransactionParams = { +type TrackedExpenseTransactionParams = { transactionID: string; amount: number; currency: string; @@ -127,11 +128,11 @@ type CategorizeTrackedExpenseTransactionParams = { billable?: boolean; receipt?: Receipt; }; -type CategorizeTrackedExpensePolicyParams = { +type TrackedExpensePolicyParams = { policyID: string; - isDraftPolicy: boolean; + isDraftPolicy?: boolean; }; -type CategorizeTrackedExpenseReportInformation = { +type TrackedExpenseReportInformation = { moneyRequestPreviewReportActionID: string; moneyRequestReportID: string; moneyRequestCreatedReportActionID: string; @@ -141,13 +142,14 @@ type CategorizeTrackedExpenseReportInformation = { transactionThreadReportID: string; reportPreviewReportActionID: string; }; -type CategorizeTrackedExpenseParams = { - onyxData: OnyxData | undefined; - reportInformation: CategorizeTrackedExpenseReportInformation; - transactionParams: CategorizeTrackedExpenseTransactionParams; - policyParams: CategorizeTrackedExpensePolicyParams; +type TrackedExpenseParams = { + onyxData?: OnyxData; + reportInformation: TrackedExpenseReportInformation; + transactionParams: TrackedExpenseTransactionParams; + policyParams: TrackedExpensePolicyParams; createdWorkspaceParams?: CreateWorkspaceParams; }; + type SendInvoiceInformation = { senderWorkspaceID: string; receiver: Partial; @@ -3660,7 +3662,7 @@ function convertTrackedExpenseToRequest( API.write(WRITE_COMMANDS.CONVERT_TRACKED_EXPENSE_TO_REQUEST, parameters, {optimisticData, successData, failureData}); } -function categorizeTrackedExpense(trackedExpenseParams: CategorizeTrackedExpenseParams) { +function categorizeTrackedExpense(trackedExpenseParams: TrackedExpenseParams) { const {onyxData, reportInformation, transactionParams, policyParams, createdWorkspaceParams} = trackedExpenseParams; const {optimisticData, successData, failureData} = onyxData ?? {}; const {transactionID} = transactionParams; @@ -3705,32 +3707,20 @@ function categorizeTrackedExpense(trackedExpenseParams: CategorizeTrackedExpense } } -function shareTrackedExpense( - policyID: string, - transactionID: string, - moneyRequestPreviewReportActionID: string, - moneyRequestReportID: string, - moneyRequestCreatedReportActionID: string, - actionableWhisperReportActionID: string, - linkedTrackedExpenseReportAction: OnyxTypes.ReportAction, - linkedTrackedExpenseReportID: string, - transactionThreadReportID: string, - reportPreviewReportActionID: string, - onyxData: OnyxData | undefined, - amount: number, - currency: string, - comment: string, - merchant: string, - created: string, - category?: string, - tag?: string, - taxCode = '', - taxAmount = 0, - billable?: boolean, - receipt?: Receipt, - createdWorkspaceParams?: CreateWorkspaceParams, -) { +function shareTrackedExpense(trackedExpenseParams: TrackedExpenseParams) { + const {onyxData, reportInformation, transactionParams, policyParams, createdWorkspaceParams} = trackedExpenseParams; const {optimisticData, successData, failureData} = onyxData ?? {}; + const {transactionID} = transactionParams; + const { + actionableWhisperReportActionID, + moneyRequestPreviewReportActionID, + moneyRequestCreatedReportActionID, + reportPreviewReportActionID, + moneyRequestReportID, + linkedTrackedExpenseReportAction, + linkedTrackedExpenseReportID, + transactionThreadReportID, + } = reportInformation; const { optimisticData: moveTransactionOptimisticData, @@ -3751,26 +3741,15 @@ function shareTrackedExpense( successData?.push(...moveTransactionSuccessData); failureData?.push(...moveTransactionFailureData); - const parameters = { - policyID, - transactionID, + const parameters: ShareTrackedExpenseParams = { + ...transactionParams, + policyID: policyParams?.policyID, moneyRequestPreviewReportActionID, moneyRequestReportID, moneyRequestCreatedReportActionID, actionableWhisperReportActionID, modifiedExpenseReportActionID, reportPreviewReportActionID, - amount, - currency, - comment, - merchant, - created, - category, - tag, - taxCode, - taxAmount, - billable, - receipt, policyExpenseChatReportID: createdWorkspaceParams?.expenseChatReportID, policyExpenseCreatedReportActionID: createdWorkspaceParams?.expenseCreatedReportActionID, adminsChatReportID: createdWorkspaceParams?.adminsChatReportID, @@ -4105,31 +4084,41 @@ function trackExpense( if (!linkedTrackedExpenseReportAction || !actionableWhisperReportActionID || !linkedTrackedExpenseReportID) { return; } - shareTrackedExpense( - chatReport?.policyID ?? '-1', - transaction?.transactionID ?? '-1', - iouAction?.reportActionID ?? '-1', - iouReport?.reportID ?? '-1', - createdIOUReportActionID ?? '-1', - actionableWhisperReportActionID, - linkedTrackedExpenseReportAction, - linkedTrackedExpenseReportID, - transactionThreadReportID ?? '-1', - reportPreviewAction?.reportActionID ?? '-1', - onyxData, + const transactionParams = { + transactionID: transaction?.transactionID ?? '-1', amount, currency, comment, merchant, created, + taxCode: taxCode ?? '', + taxAmount: taxAmount ?? 0, category, tag, - taxCode, - taxAmount, billable, - trackedReceipt, + receipt: trackedReceipt, + }; + const policyParams = { + policyID: chatReport?.policyID ?? '-1', + }; + const reportInformation = { + moneyRequestPreviewReportActionID: iouAction?.reportActionID ?? '-1', + moneyRequestReportID: iouReport?.reportID ?? '-1', + moneyRequestCreatedReportActionID: createdIOUReportActionID ?? '-1', + actionableWhisperReportActionID, + linkedTrackedExpenseReportAction, + linkedTrackedExpenseReportID, + transactionThreadReportID: transactionThreadReportID ?? '-1', + reportPreviewReportActionID: reportPreviewAction?.reportActionID ?? '-1', + }; + const trackedExpenseParams = { + onyxData, + reportInformation, + transactionParams, + policyParams, createdWorkspaceParams, - ); + }; + shareTrackedExpense(trackedExpenseParams); break; } default: { From 3888e8118ba43671f073f35e6d3adde2e699eb93 Mon Sep 17 00:00:00 2001 From: Chavda Sachin <81917707+ChavdaSachin@users.noreply.github.com> Date: Mon, 30 Dec 2024 04:18:07 +0530 Subject: [PATCH 2/5] Delete accidentally added file --- .../lib/ContactsModule.nitro.d.ts | 23 ------------------- 1 file changed, 23 deletions(-) delete mode 100644 modules/ContactsNitroModule/lib/ContactsModule.nitro.d.ts diff --git a/modules/ContactsNitroModule/lib/ContactsModule.nitro.d.ts b/modules/ContactsNitroModule/lib/ContactsModule.nitro.d.ts deleted file mode 100644 index 5a470ba95345..000000000000 --- a/modules/ContactsNitroModule/lib/ContactsModule.nitro.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -import type {HybridObject} from 'react-native-nitro-modules'; - -interface StringHolder { - value: string; -} -export interface Contact { - firstName?: string; - lastName?: string; - middleName?: string; - phoneNumbers?: StringHolder[]; - emailAddresses?: StringHolder[]; - imageData?: string; - thumbnailImageData?: string; -} -export type ContactFields = 'FIRST_NAME' | 'LAST_NAME' | 'MIDDLE_NAME' | 'PHONE_NUMBERS' | 'EMAIL_ADDRESSES' | 'IMAGE_DATA' | 'THUMBNAIL_IMAGE_DATA' | 'GIVEN_NAME_KEY'; -export interface ContactsModule - extends HybridObject<{ - ios: 'swift'; - android: 'kotlin'; - }> { - getAll(keys: ContactFields[]): Promise; -} -export {}; From c7f830a02f9fa9967814a25a3e503d7943fadf31 Mon Sep 17 00:00:00 2001 From: Chavda Sachin <81917707+ChavdaSachin@users.noreply.github.com> Date: Mon, 30 Dec 2024 04:18:21 +0530 Subject: [PATCH 3/5] Delete accidentally added file --- modules/ContactsNitroModule/lib/ContactsModule.nitro.js | 1 - 1 file changed, 1 deletion(-) delete mode 100644 modules/ContactsNitroModule/lib/ContactsModule.nitro.js diff --git a/modules/ContactsNitroModule/lib/ContactsModule.nitro.js b/modules/ContactsNitroModule/lib/ContactsModule.nitro.js deleted file mode 100644 index cb0ff5c3b541..000000000000 --- a/modules/ContactsNitroModule/lib/ContactsModule.nitro.js +++ /dev/null @@ -1 +0,0 @@ -export {}; From df6460ed79f4d135b2205b451d6a3735270efa43 Mon Sep 17 00:00:00 2001 From: Chavda Sachin <81917707+ChavdaSachin@users.noreply.github.com> Date: Mon, 30 Dec 2024 04:18:42 +0530 Subject: [PATCH 4/5] Delete accidentally added file --- modules/ContactsNitroModule/lib/index.d.ts | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 modules/ContactsNitroModule/lib/index.d.ts diff --git a/modules/ContactsNitroModule/lib/index.d.ts b/modules/ContactsNitroModule/lib/index.d.ts deleted file mode 100644 index c305e9cd822f..000000000000 --- a/modules/ContactsNitroModule/lib/index.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import type {ContactsModule} from './ContactsModule.nitro'; -import type {Contact} from './ContactsModule.nitro'; - -export declare const ContactsNitroModule: ContactsModule; -export type {Contact}; From ad9034a2ba080e97803eec5e07cdee684f526853 Mon Sep 17 00:00:00 2001 From: Chavda Sachin <81917707+ChavdaSachin@users.noreply.github.com> Date: Mon, 30 Dec 2024 04:18:56 +0530 Subject: [PATCH 5/5] Delete accidentally added file --- modules/ContactsNitroModule/lib/index.js | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 modules/ContactsNitroModule/lib/index.js diff --git a/modules/ContactsNitroModule/lib/index.js b/modules/ContactsNitroModule/lib/index.js deleted file mode 100644 index f82f6cdd43b3..000000000000 --- a/modules/ContactsNitroModule/lib/index.js +++ /dev/null @@ -1,3 +0,0 @@ -import {NitroModules} from 'react-native-nitro-modules'; - -export const ContactsNitroModule = NitroModules.createHybridObject('ContactsModule');