Skip to content

Commit bbd362a

Browse files
authored
Merge pull request Expensify#66711 from truph01/fix/65561
fix: Double chat messages when move expense to other workspace
2 parents e325bcf + a009db0 commit bbd362a

3 files changed

Lines changed: 15 additions & 7 deletions

File tree

src/libs/actions/Policy/Member.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ import type {InvitedEmailsToAccountIDs, PersonalDetailsList, Policy, PolicyEmplo
3232
import type {PendingAction} from '@src/types/onyx/OnyxCommon';
3333
import type {JoinWorkspaceResolution} from '@src/types/onyx/OriginalMessage';
3434
import type {ApprovalRule} from '@src/types/onyx/Policy';
35-
import type {Participant} from '@src/types/onyx/Report';
35+
import type {NotificationPreference, Participant} from '@src/types/onyx/Report';
3636
import type {OnyxData} from '@src/types/onyx/Request';
3737
import {isEmptyObject} from '@src/types/utils/EmptyObject';
3838
import {createPolicyExpenseChats} from './Policy';
@@ -880,6 +880,7 @@ function buildAddMembersToWorkspaceOnyxData(
880880
policyMemberAccountIDs: number[],
881881
role: string,
882882
formatPhoneNumber: LocaleContextProps['formatPhoneNumber'],
883+
policyExpenseChatNotificationPreference?: NotificationPreference,
883884
) {
884885
const logins = Object.keys(invitedEmailsToAccountIDs).map((memberLogin) => PhoneNumber.addSMSDomainIfPhoneNumber(memberLogin));
885886
const accountIDs = Object.values(invitedEmailsToAccountIDs);
@@ -899,7 +900,7 @@ function buildAddMembersToWorkspaceOnyxData(
899900
const announceRoomChat = optimisticAnnounceChat.announceChatData;
900901

901902
// create onyx data for policy expense chats for each new member
902-
const membersChats = createPolicyExpenseChats(policyID, invitedEmailsToAccountIDs);
903+
const membersChats = createPolicyExpenseChats(policyID, invitedEmailsToAccountIDs, undefined, policyExpenseChatNotificationPreference);
903904

904905
const optimisticMembersState: OnyxCollectionInputValue<PolicyEmployee> = {};
905906
const successMembersState: OnyxCollectionInputValue<PolicyEmployee> = {};

src/libs/actions/Policy/Policy.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ import type {
110110
import type {Errors} from '@src/types/onyx/OnyxCommon';
111111
import type {Attributes, CompanyAddress, CustomUnit, NetSuiteCustomList, NetSuiteCustomSegment, ProhibitedExpenses, Rate, TaxRate} from '@src/types/onyx/Policy';
112112
import type {CustomFieldType} from '@src/types/onyx/PolicyEmployee';
113+
import type {NotificationPreference} from '@src/types/onyx/Report';
113114
import type {OnyxData} from '@src/types/onyx/Request';
114115
import {isEmptyObject} from '@src/types/utils/EmptyObject';
115116
import {buildOptimisticMccGroup, buildOptimisticPolicyCategories} from './Category';
@@ -1159,7 +1160,12 @@ function verifySetupIntentAndRequestPolicyOwnerChange(policyID: string) {
11591160
*
11601161
* @returns - object with onyxSuccessData, onyxOptimisticData, and optimisticReportIDs (map login to reportID)
11611162
*/
1162-
function createPolicyExpenseChats(policyID: string, invitedEmailsToAccountIDs: InvitedEmailsToAccountIDs, hasOutstandingChildRequest = false): WorkspaceMembersChats {
1163+
function createPolicyExpenseChats(
1164+
policyID: string,
1165+
invitedEmailsToAccountIDs: InvitedEmailsToAccountIDs,
1166+
hasOutstandingChildRequest = false,
1167+
notificationPreference: NotificationPreference = CONST.REPORT.NOTIFICATION_PREFERENCE.HIDDEN,
1168+
): WorkspaceMembersChats {
11631169
const workspaceMembersChats: WorkspaceMembersChats = {
11641170
onyxSuccessData: [],
11651171
onyxOptimisticData: [],
@@ -1222,7 +1228,7 @@ function createPolicyExpenseChats(policyID: string, invitedEmailsToAccountIDs: I
12221228
chatType: CONST.REPORT.CHAT_TYPE.POLICY_EXPENSE_CHAT,
12231229
policyID,
12241230
ownerAccountID: cleanAccountID,
1225-
notificationPreference: CONST.REPORT.NOTIFICATION_PREFERENCE.HIDDEN,
1231+
notificationPreference,
12261232
});
12271233

12281234
// Set correct notification preferences: visible for the submitter, hidden for others until there's activity

src/libs/actions/Report.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5509,7 +5509,7 @@ function navigateToTrainingModal(dismissedProductTrainingNVP: OnyxEntry<Dismisse
55095509
Navigation.navigate(ROUTES.CHANGE_POLICY_EDUCATIONAL.getRoute(ROUTES.REPORT_WITH_ID.getRoute(reportID)));
55105510
}
55115511

5512-
function buildOptimisticChangePolicyData(report: Report, policyID: string, reportNextStep?: ReportNextStep) {
5512+
function buildOptimisticChangePolicyData(report: Report, policyID: string, reportNextStep?: ReportNextStep, optimisticPolicyExpenseChatReport?: Report) {
55135513
const optimisticData: OnyxUpdate[] = [];
55145514
const successData: OnyxUpdate[] = [];
55155515
const failureData: OnyxUpdate[] = [];
@@ -5637,7 +5637,7 @@ function buildOptimisticChangePolicyData(report: Report, policyID: string, repor
56375637

56385638
// 3. Optimistically create a new REPORT_PREVIEW reportAction with the newReportPreviewActionID
56395639
// and set it as a parent of the moved report
5640-
const policyExpenseChat = getPolicyExpenseChat(currentUserAccountID, policyID);
5640+
const policyExpenseChat = optimisticPolicyExpenseChatReport ?? getPolicyExpenseChat(report.ownerAccountID, policyID);
56415641
const optimisticReportPreviewAction = buildOptimisticReportPreview(policyExpenseChat, report);
56425642

56435643
const newPolicyExpenseChatReportID = policyExpenseChat?.reportID;
@@ -5776,6 +5776,7 @@ function changeReportPolicyAndInviteSubmitter(report: Report, policyID: string,
57765776
policyMemberAccountIDs,
57775777
CONST.POLICY.ROLE.USER,
57785778
formatPhoneNumber,
5779+
CONST.REPORT.NOTIFICATION_PREFERENCE.ALWAYS,
57795780
);
57805781
const optimisticPolicyExpenseChatReportID = membersChats.reportCreationData[submitterEmail].reportID;
57815782
const optimisticPolicyExpenseChatCreatedReportActionID = membersChats.reportCreationData[submitterEmail].reportActionID;
@@ -5790,7 +5791,7 @@ function changeReportPolicyAndInviteSubmitter(report: Report, policyID: string,
57905791
failureData: failureChangePolicyData,
57915792
optimisticReportPreviewAction,
57925793
optimisticMovedReportAction,
5793-
} = buildOptimisticChangePolicyData(report, policyID);
5794+
} = buildOptimisticChangePolicyData(report, policyID, undefined, membersChats.reportCreationData[submitterEmail]);
57945795
optimisticData.push(...optimisticChangePolicyData);
57955796
successData.push(...successChangePolicyData);
57965797
failureData.push(...failureChangePolicyData);

0 commit comments

Comments
 (0)