From 60c39db80984f5541166f22c4d8db2ffd4323e9c Mon Sep 17 00:00:00 2001 From: cretadn22 Date: Wed, 3 Jul 2024 23:41:54 +0700 Subject: [PATCH 1/5] add parentReportActionID to iouReport --- src/libs/ReportUtils.ts | 7 ++++--- src/libs/actions/IOU.ts | 3 ++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index e16c5c7abe56..020859428b60 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -148,6 +148,7 @@ type OptimisticExpenseReport = Pick< | 'notificationPreference' | 'parentReportID' | 'lastVisibleActionCreated' + | 'parentReportActionID' >; type OptimisticIOUReportAction = Pick< @@ -4721,9 +4722,9 @@ function buildOptimisticGroupChatReport( * Returns the necessary reportAction onyx data to indicate that the chat has been created optimistically * @param [created] - Action created time */ -function buildOptimisticCreatedReportAction(emailCreatingAction: string, created = DateUtils.getDBTime()): OptimisticCreatedReportAction { +function buildOptimisticCreatedReportAction(emailCreatingAction: string, created = DateUtils.getDBTime(), reportActionID?: string): OptimisticCreatedReportAction { return { - reportActionID: NumberUtils.rand64(), + reportActionID: reportActionID || NumberUtils.rand64(), actionName: CONST.REPORT.ACTIONS.TYPE.CREATED, pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD, actorAccountID: currentUserAccountID, @@ -5236,7 +5237,7 @@ function buildOptimisticMoneyRequestEntities( existingTransactionThreadReportID?: string, linkedTrackedExpenseReportAction?: ReportAction, ): [OptimisticCreatedReportAction, OptimisticCreatedReportAction, OptimisticIOUReportAction, OptimisticChatReport, OptimisticCreatedReportAction | null] { - const createdActionForChat = buildOptimisticCreatedReportAction(payeeEmail); + const createdActionForChat = buildOptimisticCreatedReportAction(payeeEmail, undefined, iouReport.parentReportActionID); // The `CREATED` action must be optimistically generated before the IOU action so that it won't appear after the IOU action in the chat. const iouActionCreationTime = DateUtils.getDBTime(); diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts index 42381d9008a7..ed3e7159cca8 100644 --- a/src/libs/actions/IOU.ts +++ b/src/libs/actions/IOU.ts @@ -1832,6 +1832,8 @@ function getSendInvoiceInformation( } // STEP 5: Build optimistic reportActions. + const reportPreviewAction = ReportUtils.buildOptimisticReportPreview(chatReport, optimisticInvoiceReport, trimmedComment, optimisticTransaction); + optimisticInvoiceReport.parentReportActionID = reportPreviewAction.reportActionID; const [optimisticCreatedActionForChat, optimisticCreatedActionForIOUReport, iouAction, optimisticTransactionThread, optimisticCreatedActionForTransactionThread] = ReportUtils.buildOptimisticMoneyRequestEntities( optimisticInvoiceReport, @@ -1848,7 +1850,6 @@ function getSendInvoiceInformation( receiptObject, false, ); - const reportPreviewAction = ReportUtils.buildOptimisticReportPreview(chatReport, optimisticInvoiceReport, trimmedComment, optimisticTransaction); // STEP 6: Build Onyx Data const [optimisticData, successData, failureData] = buildOnyxDataForInvoice( From 4aba1cebe56986cca798ba773699e04abcd9fbbe Mon Sep 17 00:00:00 2001 From: cretadn22 Date: Thu, 4 Jul 2024 07:53:08 +0700 Subject: [PATCH 2/5] using nullish coalescing operator --- src/libs/ReportUtils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index 020859428b60..199620b0e123 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -4724,7 +4724,7 @@ function buildOptimisticGroupChatReport( */ function buildOptimisticCreatedReportAction(emailCreatingAction: string, created = DateUtils.getDBTime(), reportActionID?: string): OptimisticCreatedReportAction { return { - reportActionID: reportActionID || NumberUtils.rand64(), + reportActionID: reportActionID ?? NumberUtils.rand64(), actionName: CONST.REPORT.ACTIONS.TYPE.CREATED, pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD, actorAccountID: currentUserAccountID, From 076347b82ee9df888c1bba46b8cea061ca90b4ba Mon Sep 17 00:00:00 2001 From: cretadn22 <168617111+cretadn22@users.noreply.github.com> Date: Thu, 4 Jul 2024 09:15:55 +0700 Subject: [PATCH 3/5] Update src/libs/actions/IOU.ts Co-authored-by: Shubham Agrawal <58412969+shubham1206agra@users.noreply.github.com> --- src/libs/actions/IOU.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts index ed3e7159cca8..5a3b3ca7f82e 100644 --- a/src/libs/actions/IOU.ts +++ b/src/libs/actions/IOU.ts @@ -1834,6 +1834,7 @@ function getSendInvoiceInformation( // STEP 5: Build optimistic reportActions. const reportPreviewAction = ReportUtils.buildOptimisticReportPreview(chatReport, optimisticInvoiceReport, trimmedComment, optimisticTransaction); optimisticInvoiceReport.parentReportActionID = reportPreviewAction.reportActionID; + chatReport.lastVisibleActionCreated = reportPreviewAction.created; const [optimisticCreatedActionForChat, optimisticCreatedActionForIOUReport, iouAction, optimisticTransactionThread, optimisticCreatedActionForTransactionThread] = ReportUtils.buildOptimisticMoneyRequestEntities( optimisticInvoiceReport, From 7b2f374883c26bab9a0785a60b8ce40b9b8f0058 Mon Sep 17 00:00:00 2001 From: cretadn22 Date: Thu, 4 Jul 2024 09:16:55 +0700 Subject: [PATCH 4/5] adjust comment --- src/libs/actions/IOU.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts index 5a3b3ca7f82e..467ea111b19b 100644 --- a/src/libs/actions/IOU.ts +++ b/src/libs/actions/IOU.ts @@ -1834,7 +1834,7 @@ function getSendInvoiceInformation( // STEP 5: Build optimistic reportActions. const reportPreviewAction = ReportUtils.buildOptimisticReportPreview(chatReport, optimisticInvoiceReport, trimmedComment, optimisticTransaction); optimisticInvoiceReport.parentReportActionID = reportPreviewAction.reportActionID; - chatReport.lastVisibleActionCreated = reportPreviewAction.created; + optimisticInvoiceReport.lastVisibleActionCreated = reportPreviewAction.created; const [optimisticCreatedActionForChat, optimisticCreatedActionForIOUReport, iouAction, optimisticTransactionThread, optimisticCreatedActionForTransactionThread] = ReportUtils.buildOptimisticMoneyRequestEntities( optimisticInvoiceReport, From 36daaf4745d321f1296ee78915f8083ff27a36e7 Mon Sep 17 00:00:00 2001 From: cretadn22 Date: Sun, 7 Jul 2024 19:47:43 +0700 Subject: [PATCH 5/5] adjust comment --- src/libs/ReportUtils.ts | 6 +++--- src/libs/actions/IOU.ts | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index 199620b0e123..aee6c6deaf13 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -4722,9 +4722,9 @@ function buildOptimisticGroupChatReport( * Returns the necessary reportAction onyx data to indicate that the chat has been created optimistically * @param [created] - Action created time */ -function buildOptimisticCreatedReportAction(emailCreatingAction: string, created = DateUtils.getDBTime(), reportActionID?: string): OptimisticCreatedReportAction { +function buildOptimisticCreatedReportAction(emailCreatingAction: string, created = DateUtils.getDBTime()): OptimisticCreatedReportAction { return { - reportActionID: reportActionID ?? NumberUtils.rand64(), + reportActionID: NumberUtils.rand64(), actionName: CONST.REPORT.ACTIONS.TYPE.CREATED, pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD, actorAccountID: currentUserAccountID, @@ -5237,7 +5237,7 @@ function buildOptimisticMoneyRequestEntities( existingTransactionThreadReportID?: string, linkedTrackedExpenseReportAction?: ReportAction, ): [OptimisticCreatedReportAction, OptimisticCreatedReportAction, OptimisticIOUReportAction, OptimisticChatReport, OptimisticCreatedReportAction | null] { - const createdActionForChat = buildOptimisticCreatedReportAction(payeeEmail, undefined, iouReport.parentReportActionID); + const createdActionForChat = buildOptimisticCreatedReportAction(payeeEmail); // The `CREATED` action must be optimistically generated before the IOU action so that it won't appear after the IOU action in the chat. const iouActionCreationTime = DateUtils.getDBTime(); diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts index 467ea111b19b..5a3b3ca7f82e 100644 --- a/src/libs/actions/IOU.ts +++ b/src/libs/actions/IOU.ts @@ -1834,7 +1834,7 @@ function getSendInvoiceInformation( // STEP 5: Build optimistic reportActions. const reportPreviewAction = ReportUtils.buildOptimisticReportPreview(chatReport, optimisticInvoiceReport, trimmedComment, optimisticTransaction); optimisticInvoiceReport.parentReportActionID = reportPreviewAction.reportActionID; - optimisticInvoiceReport.lastVisibleActionCreated = reportPreviewAction.created; + chatReport.lastVisibleActionCreated = reportPreviewAction.created; const [optimisticCreatedActionForChat, optimisticCreatedActionForIOUReport, iouAction, optimisticTransactionThread, optimisticCreatedActionForTransactionThread] = ReportUtils.buildOptimisticMoneyRequestEntities( optimisticInvoiceReport,