Skip to content

refactor shareTrackedExpense function #54650

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions src/libs/API/parameters/ShareTrackedExpenseParams.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@ type ShareTrackedExpenseParams = {
taxCode: string;
taxAmount: number;
billable?: boolean;
policyExpenseChatReportID?: string;
policyExpenseCreatedReportActionID?: string;
adminsChatReportID?: string;
adminsCreatedReportActionID?: string;
};

export default ShareTrackedExpenseParams;
127 changes: 58 additions & 69 deletions src/libs/actions/IOU.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import type {
SendInvoiceParams,
SendMoneyParams,
SetNameValuePairParams,
ShareTrackedExpenseParams,
SplitBillParams,
StartSplitBillParams,
SubmitReportParams,
Expand Down Expand Up @@ -208,7 +209,7 @@ type TrackExpenseInformation = {
actionableWhisperReportActionIDParam?: string;
onyxData: OnyxData;
};
type CategorizeTrackedExpenseTransactionParams = {
type TrackedExpenseTransactionParams = {
transactionID: string;
amount: number;
currency: string;
Expand All @@ -222,11 +223,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;
Expand All @@ -236,13 +237,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<OnyxTypes.PersonalDetails>;
Expand Down Expand Up @@ -4118,7 +4120,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;
Expand Down Expand Up @@ -4163,32 +4165,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,
Expand All @@ -4209,26 +4199,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: receipt instanceof Blob ? receipt : undefined,
policyExpenseChatReportID: createdWorkspaceParams?.expenseChatReportID,
policyExpenseCreatedReportActionID: createdWorkspaceParams?.expenseCreatedReportActionID,
adminsChatReportID: createdWorkspaceParams?.adminsChatReportID,
Expand Down Expand Up @@ -4595,7 +4574,7 @@ function trackExpense(
if (!linkedTrackedExpenseReportAction || !actionableWhisperReportActionID || !linkedTrackedExpenseReportID) {
return;
}
const transactionParams: CategorizeTrackedExpenseTransactionParams = {
const transactionParams: TrackedExpenseTransactionParams = {
transactionID: transaction?.transactionID ?? '-1',
amount,
currency,
Expand All @@ -4609,11 +4588,11 @@ function trackExpense(
billable,
receipt: trackedReceipt instanceof Blob ? trackedReceipt : undefined,
};
const policyParams: CategorizeTrackedExpensePolicyParams = {
const policyParams: TrackedExpensePolicyParams = {
policyID: chatReport?.policyID ?? '-1',
isDraftPolicy,
};
const reportInformation: CategorizeTrackedExpenseReportInformation = {
const reportInformation: TrackedExpenseReportInformation = {
moneyRequestPreviewReportActionID: iouAction?.reportActionID ?? '-1',
moneyRequestReportID: iouReport?.reportID ?? '-1',
moneyRequestCreatedReportActionID: createdIOUReportActionID ?? '-1',
Expand All @@ -4623,7 +4602,7 @@ function trackExpense(
transactionThreadReportID: transactionThreadReportID ?? '-1',
reportPreviewReportActionID: reportPreviewAction?.reportActionID ?? '-1',
};
const trackedExpenseParams: CategorizeTrackedExpenseParams = {
const trackedExpenseParams: TrackedExpenseParams = {
onyxData,
reportInformation,
transactionParams,
Expand All @@ -4638,31 +4617,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,
Comment on lines +4620 to +4628
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we please remove the default IDs and follow the TS guidelines regarding defaulting IDs? Or does that create way too many unrelated changes. If so, let's make sure we have an issue tracking that.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would remove those default IDs and then verify the BE response.
Would go through the GH convo when these IDs were added.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, I assume you're saying that you will do those things? Here are the guidelines to follow. I don't think you really need to look at the BE response.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oh, I was unaware this new guidelines. I sort of miss interpreted your suggestion here.
But now it is super clear, Thank you.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When trying to implement those default IDs, one thing leads to another and it keeps going and those will be too many changes unrelated to this PR. So I think it's better to have separate GH for implementing those default IDs throughout the file - might take a few PRs.

Merge conflict is resolved, Ready for merge.

category,
tag,
taxCode,
taxAmount,
billable,
trackedReceipt,
receipt: trackedReceipt instanceof Blob ? trackedReceipt : undefined,
};
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: {
Expand Down
Loading