diff --git a/src/libs/actions/Policy.js b/src/libs/actions/Policy.js index 32cb7ef1adb3..ebf9f100bc90 100644 --- a/src/libs/actions/Policy.js +++ b/src/libs/actions/Policy.js @@ -7,12 +7,14 @@ import {escapeRegExp} from 'lodash'; import * as API from '../API'; import ONYXKEYS from '../../ONYXKEYS'; import CONST from '../../CONST'; +import * as LocalePhoneNumber from '../LocalePhoneNumber'; import * as OptionsListUtils from '../OptionsListUtils'; import * as ErrorUtils from '../ErrorUtils'; import * as ReportUtils from '../ReportUtils'; import * as PersonalDetailsUtils from '../PersonalDetailsUtils'; import Log from '../Log'; import Permissions from '../Permissions'; +import * as UserUtils from '../UserUtils'; const allPolicies = {}; Onyx.connect({ @@ -358,6 +360,24 @@ function addMembersToWorkspace(invitedEmailsToAccountIDs, welcomeNote, policyID, // create onyx data for policy expense chats for each new member const membersChats = createPolicyExpenseChats(policyID, invitedEmailsToAccountIDs, betas); + // Optimistic personal details for the new accounts invited + const optimisticPersonalDetails = _.chain(invitedEmailsToAccountIDs) + .map( + (accountID, memberLogin) => + !_.has(allPersonalDetails, accountID) && [ + accountID, + { + accountID, + avatar: UserUtils.getDefaultAvatarURL(accountID), + displayName: LocalePhoneNumber.formatPhoneNumber(memberLogin), + login: OptionsListUtils.addSMSDomainIfPhoneNumber(memberLogin), + }, + ], + ) + .compact() + .object() + .value(); + const optimisticData = [ { onyxMethod: Onyx.METHOD.MERGE, @@ -368,6 +388,11 @@ function addMembersToWorkspace(invitedEmailsToAccountIDs, welcomeNote, policyID, }, ...newPersonalDetailsOnyxData.optimisticData, ...membersChats.onyxOptimisticData, + { + onyxMethod: Onyx.METHOD.MERGE, + key: ONYXKEYS.PERSONAL_DETAILS_LIST, + value: optimisticPersonalDetails, + }, ]; const successData = [ @@ -381,6 +406,11 @@ function addMembersToWorkspace(invitedEmailsToAccountIDs, welcomeNote, policyID, }, ...newPersonalDetailsOnyxData.successData, ...membersChats.onyxSuccessData, + { + onyxMethod: Onyx.METHOD.MERGE, + key: ONYXKEYS.PERSONAL_DETAILS_LIST, + value: _.object(_.keys(optimisticPersonalDetails), Array(_.size(optimisticPersonalDetails)).fill(null)), + }, ]; const failureData = [ @@ -748,6 +778,9 @@ function clearAddMemberError(policyID, accountID) { Onyx.merge(`${ONYXKEYS.COLLECTION.POLICY_MEMBERS}${policyID}`, { [accountID]: null, }); + Onyx.merge(`${ONYXKEYS.PERSONAL_DETAILS_LIST}`, { + [accountID]: null, + }); } /**