diff --git a/src/libs/E2E/apiMocks/openReport.js b/src/libs/E2E/apiMocks/openReport.js index 3eb9c7890299..8ad00627b52a 100644 --- a/src/libs/E2E/apiMocks/openReport.js +++ b/src/libs/E2E/apiMocks/openReport.js @@ -67,7 +67,6 @@ export default () => ({ text: '123 Ios', }, ], - actorEmail: 'fake3@gmail.com', actorAccountID: 10773236, message: [ { diff --git a/src/libs/ReportActionsUtils.js b/src/libs/ReportActionsUtils.js index 86096b300c12..9a280711e947 100644 --- a/src/libs/ReportActionsUtils.js +++ b/src/libs/ReportActionsUtils.js @@ -266,7 +266,7 @@ function isConsecutiveActionMadeByPreviousActor(reportActions, actionIndex) { return false; } - return currentAction.actorEmail === previousAction.actorEmail; + return currentAction.actorAccountID === previousAction.actorAccountID; } /** diff --git a/src/libs/ReportUtils.js b/src/libs/ReportUtils.js index 113fe524804c..0d0552d51e48 100644 --- a/src/libs/ReportUtils.js +++ b/src/libs/ReportUtils.js @@ -202,7 +202,7 @@ function sortReportsByLastRead(reports) { */ function canEditReportAction(reportAction) { return ( - reportAction.actorEmail === currentUserEmail && + reportAction.actorAccountID === currentUserAccountID && reportAction.actionName === CONST.REPORT.ACTIONS.TYPE.ADDCOMMENT && !isReportMessageAttachment(lodashGet(reportAction, ['message', 0], {})) && !ReportActionsUtils.isDeletedAction(reportAction) && @@ -238,7 +238,7 @@ function canDeleteReportAction(reportAction, reportID) { ) { return false; } - if (reportAction.actorEmail === currentUserEmail) { + if (reportAction.actorAccountID === currentUserAccountID) { return true; } const report = lodashGet(allReports, `${ONYXKEYS.COLLECTION.REPORT}${reportID}`, {}); @@ -735,12 +735,12 @@ function getIcons(report, personalDetails, defaultIcon = null, isPayer = false, if (isChatThread(report)) { const parentReportAction = ReportActionsUtils.getParentReportAction(report); - const actorEmail = lodashGet(parentReportAction, 'actorEmail', ''); - const actorAccountID = lodashGet(parentReportAction, 'actorAccountID', ''); + const actorAccountID = lodashGet(parentReportAction, 'actorAccountID', 0); + const actorDisplayName = lodashGet(allPersonalDetails, [actorAccountID, 'displayName'], ''); const actorIcon = { id: actorAccountID, source: UserUtils.getAvatar(lodashGet(personalDetails, [actorAccountID, 'avatar']), actorAccountID), - name: actorEmail, + name: actorDisplayName, type: CONST.ICON_TYPE_AVATAR, }; @@ -1225,7 +1225,6 @@ function buildOptimisticAddCommentReportAction(text, file) { reportAction: { reportActionID: NumberUtils.rand64(), actionName: CONST.REPORT.ACTIONS.TYPE.ADDCOMMENT, - actorEmail: currentUserEmail, actorAccountID: currentUserAccountID, person: [ { @@ -1458,7 +1457,6 @@ function buildOptimisticIOUReportAction(type, amount, currency, comment, partici return { actionName: CONST.REPORT.ACTIONS.TYPE.IOU, actorAccountID: currentUserAccountID, - actorEmail: currentUserEmail, automatic: false, avatar: lodashGet(currentUserPersonalDetails, 'avatar', UserUtils.getDefaultAvatar(currentUserAccountID)), isAttachment: false, @@ -1497,7 +1495,6 @@ function buildOptimisticReportPreview(reportID, iouReportID, payeeAccountID) { originalMessage: { linkedReportID: iouReportID, }, - actorEmail: currentUserEmail, actorAccountID: currentUserAccountID, }; } @@ -1512,7 +1509,6 @@ function buildOptimisticTaskReportAction(taskReportID, actionName, message = '') return { actionName, actorAccountID: currentUserAccountID, - actorEmail: currentUserEmail, automatic: false, avatar: lodashGet(currentUserPersonalDetails, 'avatar', UserUtils.getDefaultAvatar(currentUserAccountID)), isAttachment: false, @@ -1611,7 +1607,6 @@ function buildOptimisticCreatedReportAction(ownerEmail) { actionName: CONST.REPORT.ACTIONS.TYPE.CREATED, pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD, actorAccountID: currentUserAccountID, - actorEmail: currentUserEmail, message: [ { type: CONST.REPORT.MESSAGE.TYPE.TEXT, @@ -1651,7 +1646,6 @@ function buildOptimisticEditedTaskReportAction(ownerEmail) { actionName: CONST.REPORT.ACTIONS.TYPE.TASKEDITED, pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD, actorAccountID: currentUserAccountID, - actorEmail: currentUserEmail, message: [ { type: CONST.REPORT.MESSAGE.TYPE.TEXT, @@ -1816,7 +1810,6 @@ function buildOptimisticTaskReport(ownerEmail, ownerAccountID, assigneeAccountID description, ownerEmail, ownerAccountID, - // managerEmail: assignee, managerID: assigneeAccountID, type: CONST.REPORT.TYPE.TASK, parentReportID, @@ -2139,7 +2132,7 @@ function shouldShowFlagComment(reportAction, report) { !isArchivedRoom(report) && !chatIncludesChronos(report) && !isConciergeChatReport(report.reportID) && - reportAction.actorEmail !== CONST.EMAIL.CONCIERGE + reportAction.actorAccountID !== CONST.ACCOUNT_ID.CONCIERGE ); } diff --git a/src/libs/actions/Task.js b/src/libs/actions/Task.js index 3d19a632a634..610315b63e84 100644 --- a/src/libs/actions/Task.js +++ b/src/libs/actions/Task.js @@ -13,6 +13,16 @@ import * as UserUtils from '../UserUtils'; import * as PersonalDetailsUtils from '../PersonalDetailsUtils'; import * as ReportActionsUtils from '../ReportActionsUtils'; +let currentUserEmail; +let currentUserAccountID; +Onyx.connect({ + key: ONYXKEYS.SESSION, + callback: (val) => { + currentUserEmail = lodashGet(val, 'email', ''); + currentUserAccountID = lodashGet(val, 'accountID', 0); + }, +}); + /** * Clears out the task info from the store */ @@ -24,8 +34,6 @@ function clearOutTaskInfo() { * Assign a task to a user * Function title is createTask for consistency with the rest of the actions * and also because we can create a task without assigning it to anyone - * @param {String} currentUserEmail - * @param {Number} currentUserAccountID * @param {String} parentReportID * @param {String} title * @param {String} description @@ -34,7 +42,7 @@ function clearOutTaskInfo() { * */ -function createTaskAndNavigate(currentUserEmail, currentUserAccountID, parentReportID, title, description, assignee, assigneeAccountID = 0) { +function createTaskAndNavigate(parentReportID, title, description, assignee, assigneeAccountID = 0) { // Create the task report const optimisticTaskReport = ReportUtils.buildOptimisticTaskReport(currentUserEmail, currentUserAccountID, assigneeAccountID, parentReportID, title, description); @@ -251,7 +259,7 @@ function reopenTask(taskReportID, taskTitle) { statusNum: CONST.REPORT.STATUS.OPEN, lastVisibleActionCreated: reopenedTaskReportAction.created, lastMessageText: message, - lastActorEmail: reopenedTaskReportAction.actorEmail, + lastActorEmail: currentUserEmail, lastActorAccountID: reopenedTaskReportAction.actorAccountID, lastReadTime: reopenedTaskReportAction.created, }, @@ -586,7 +594,7 @@ function cancelTask(taskReportID, taskTitle, originalStateNum, originalStatusNum value: { lastVisibleActionCreated: optimisticCancelReportAction.created, lastMessageText: message, - lastActorEmail: optimisticCancelReportAction.actorEmail, + lastActorEmail: currentUserEmail, lastActorAccountID: optimisticCancelReportAction.actorAccountID, }, }, diff --git a/src/pages/home/report/ContextMenu/ContextMenuActions.js b/src/pages/home/report/ContextMenu/ContextMenuActions.js index b05c29804d19..4b7ddaec1f99 100644 --- a/src/pages/home/report/ContextMenu/ContextMenuActions.js +++ b/src/pages/home/report/ContextMenu/ContextMenuActions.js @@ -325,7 +325,7 @@ export default [ !isArchivedRoom && !isChronosReport && !ReportUtils.isConciergeChatReport(reportID) && - reportAction.actorEmail !== CONST.EMAIL.CONCIERGE, + reportAction.actorAccountID !== CONST.ACCOUNT_ID.CONCIERGE, onPress: (closePopover, {reportID, reportAction}) => { if (closePopover) { hideContextMenu(false, () => Navigation.navigate(ROUTES.getFlagCommentRoute(reportID, reportAction.reportActionID))); diff --git a/src/pages/home/report/ReportActionItemSingle.js b/src/pages/home/report/ReportActionItemSingle.js index 54b989a1fc47..875b899d9926 100644 --- a/src/pages/home/report/ReportActionItemSingle.js +++ b/src/pages/home/report/ReportActionItemSingle.js @@ -73,8 +73,8 @@ const showWorkspaceDetails = (reportID) => { function ReportActionItemSingle(props) { const actorAccountID = props.action.actorAccountID; let {displayName} = props.personalDetailsList[actorAccountID] || {}; - const {avatar, pendingFields} = props.personalDetailsList[actorAccountID] || {}; - let actorHint = lodashGet(props.action, 'actorEmail', '').replace(CONST.REGEX.MERGED_ACCOUNT_PREFIX, ''); + const {avatar, login, pendingFields} = props.personalDetailsList[actorAccountID] || {}; + let actorHint = (login || displayName).replace(CONST.REGEX.MERGED_ACCOUNT_PREFIX, ''); const isWorkspaceActor = ReportUtils.isPolicyExpenseChat(props.report) && !actorAccountID; let avatarSource = UserUtils.getAvatar(avatar, actorAccountID); diff --git a/src/pages/tasks/NewTaskPage.js b/src/pages/tasks/NewTaskPage.js index f1c04a82bb0a..8098fbd2d633 100644 --- a/src/pages/tasks/NewTaskPage.js +++ b/src/pages/tasks/NewTaskPage.js @@ -47,11 +47,6 @@ const propTypes = { }), ), - /** Current user session */ - session: PropTypes.shape({ - email: PropTypes.string.isRequired, - }), - /** All reports shared with the user */ reports: PropTypes.objectOf(reportPropTypes), @@ -63,7 +58,6 @@ const defaultProps = { task: {}, personalDetails: {}, reports: {}, - session: {}, }; function NewTaskPage(props) { @@ -120,15 +114,7 @@ function NewTaskPage(props) { return; } - TaskUtils.createTaskAndNavigate( - props.session.email, - props.session.accountID, - parentReport.reportID, - props.task.title, - props.task.description, - props.task.assignee, - props.task.assigneeAccountID, - ); + TaskUtils.createTaskAndNavigate(parentReport.reportID, props.task.title, props.task.description, props.task.assignee, props.task.assigneeAccountID); } if (!Permissions.canUseTasks(props.betas)) { @@ -206,9 +192,6 @@ export default compose( personalDetails: { key: ONYXKEYS.PERSONAL_DETAILS_LIST, }, - session: { - key: ONYXKEYS.SESSION, - }, }), withLocalize, )(NewTaskPage); diff --git a/tests/actions/IOUTest.js b/tests/actions/IOUTest.js index 112377f373d5..b9e30d1b0831 100644 --- a/tests/actions/IOUTest.js +++ b/tests/actions/IOUTest.js @@ -372,7 +372,6 @@ describe('actions/IOU', () => { const iouAction = { reportActionID: NumberUtils.rand64(), actionName: CONST.REPORT.ACTIONS.TYPE.IOU, - actorEmail: RORY_EMAIL, actorAccountID: RORY_ACCOUNT_ID, created: DateUtils.getDBTime(), originalMessage: { @@ -835,7 +834,6 @@ describe('actions/IOU', () => { const julesExistingIOUAction = { reportActionID: NumberUtils.rand64(), actionName: CONST.REPORT.ACTIONS.TYPE.IOU, - actorEmail: RORY_EMAIL, actorAccountID: RORY_ACCOUNT_ID, created: DateUtils.getDBTime(), originalMessage: { diff --git a/tests/actions/ReportTest.js b/tests/actions/ReportTest.js index 5ebffff507b8..5566c66df4b7 100644 --- a/tests/actions/ReportTest.js +++ b/tests/actions/ReportTest.js @@ -47,7 +47,6 @@ describe('actions/Report', () => { const REPORT_ACTION = { actionName: CONST.REPORT.ACTIONS.TYPE.ADDCOMMENT, actorAccountID: TEST_USER_ACCOUNT_ID, - actorEmail: TEST_USER_LOGIN, automatic: false, avatar: 'https://d2k5nsl2zxldvw.cloudfront.net/images/avatars/avatar_3.png', message: [{type: 'COMMENT', html: 'Testing a comment', text: 'Testing a comment'}], @@ -230,7 +229,6 @@ describe('actions/Report', () => { 1: { actionName: CONST.REPORT.ACTIONS.TYPE.ADDCOMMENT, actorAccountID: USER_2_ACCOUNT_ID, - actorEmail: USER_2_LOGIN, automatic: false, avatar: 'https://d2k5nsl2zxldvw.cloudfront.net/images/avatars/avatar_3.png', message: [{type: 'COMMENT', html: 'Comment 1', text: 'Comment 1'}], @@ -316,7 +314,6 @@ describe('actions/Report', () => { const USER_1_BASE_ACTION = { actionName: CONST.REPORT.ACTIONS.TYPE.ADDCOMMENT, actorAccountID: USER_1_ACCOUNT_ID, - actorEmail: USER_1_LOGIN, automatic: false, avatar: 'https://d2k5nsl2zxldvw.cloudfront.net/images/avatars/avatar_3.png', person: [{type: 'TEXT', style: 'strong', text: 'Test User'}], diff --git a/tests/ui/UnreadIndicatorsTest.js b/tests/ui/UnreadIndicatorsTest.js index c12b03c6ae18..5d24acae594d 100644 --- a/tests/ui/UnreadIndicatorsTest.js +++ b/tests/ui/UnreadIndicatorsTest.js @@ -176,15 +176,15 @@ function signInAndGetAppWithUnreadChat() { }, ], }, - 1: TestHelper.buildTestReportComment(USER_B_EMAIL, MOMENT_TEN_MINUTES_AGO.clone().add(10, 'seconds').format(MOMENT_FORMAT), USER_B_ACCOUNT_ID, '1'), - 2: TestHelper.buildTestReportComment(USER_B_EMAIL, MOMENT_TEN_MINUTES_AGO.clone().add(20, 'seconds').format(MOMENT_FORMAT), USER_B_ACCOUNT_ID, '2'), - 3: TestHelper.buildTestReportComment(USER_B_EMAIL, reportAction3CreatedDate, USER_B_ACCOUNT_ID, '3'), - 4: TestHelper.buildTestReportComment(USER_B_EMAIL, MOMENT_TEN_MINUTES_AGO.clone().add(40, 'seconds').format(MOMENT_FORMAT), USER_B_ACCOUNT_ID, '4'), - 5: TestHelper.buildTestReportComment(USER_B_EMAIL, MOMENT_TEN_MINUTES_AGO.clone().add(50, 'seconds').format(MOMENT_FORMAT), USER_B_ACCOUNT_ID, '5'), - 6: TestHelper.buildTestReportComment(USER_B_EMAIL, MOMENT_TEN_MINUTES_AGO.clone().add(60, 'seconds').format(MOMENT_FORMAT), USER_B_ACCOUNT_ID, '6'), - 7: TestHelper.buildTestReportComment(USER_B_EMAIL, MOMENT_TEN_MINUTES_AGO.clone().add(70, 'seconds').format(MOMENT_FORMAT), USER_B_ACCOUNT_ID, '7'), - 8: TestHelper.buildTestReportComment(USER_B_EMAIL, MOMENT_TEN_MINUTES_AGO.clone().add(80, 'seconds').format(MOMENT_FORMAT), USER_B_ACCOUNT_ID, '8'), - 9: TestHelper.buildTestReportComment(USER_B_EMAIL, reportAction9CreatedDate, USER_B_ACCOUNT_ID, '9'), + 1: TestHelper.buildTestReportComment(MOMENT_TEN_MINUTES_AGO.clone().add(10, 'seconds').format(MOMENT_FORMAT), USER_B_ACCOUNT_ID, '1'), + 2: TestHelper.buildTestReportComment(MOMENT_TEN_MINUTES_AGO.clone().add(20, 'seconds').format(MOMENT_FORMAT), USER_B_ACCOUNT_ID, '2'), + 3: TestHelper.buildTestReportComment(reportAction3CreatedDate, USER_B_ACCOUNT_ID, '3'), + 4: TestHelper.buildTestReportComment(MOMENT_TEN_MINUTES_AGO.clone().add(40, 'seconds').format(MOMENT_FORMAT), USER_B_ACCOUNT_ID, '4'), + 5: TestHelper.buildTestReportComment(MOMENT_TEN_MINUTES_AGO.clone().add(50, 'seconds').format(MOMENT_FORMAT), USER_B_ACCOUNT_ID, '5'), + 6: TestHelper.buildTestReportComment(MOMENT_TEN_MINUTES_AGO.clone().add(60, 'seconds').format(MOMENT_FORMAT), USER_B_ACCOUNT_ID, '6'), + 7: TestHelper.buildTestReportComment(MOMENT_TEN_MINUTES_AGO.clone().add(70, 'seconds').format(MOMENT_FORMAT), USER_B_ACCOUNT_ID, '7'), + 8: TestHelper.buildTestReportComment(MOMENT_TEN_MINUTES_AGO.clone().add(80, 'seconds').format(MOMENT_FORMAT), USER_B_ACCOUNT_ID, '8'), + 9: TestHelper.buildTestReportComment(reportAction9CreatedDate, USER_B_ACCOUNT_ID, '9'), }); Onyx.merge(ONYXKEYS.PERSONAL_DETAILS_LIST, { [USER_B_ACCOUNT_ID]: TestHelper.buildPersonalDetails(USER_B_EMAIL, USER_B_ACCOUNT_ID, 'B'), @@ -321,7 +321,6 @@ describe('Unread Indicators', () => { }, [commentReportActionID]: { actionName: CONST.REPORT.ACTIONS.TYPE.ADDCOMMENT, - actorEmail: USER_C_EMAIL, actorAccountID: USER_C_ACCOUNT_ID, person: [{type: 'TEXT', style: 'strong', text: 'User C'}], created: NEW_REPORT_FIST_MESSAGE_CREATED_MOMENT.format(MOMENT_FORMAT), diff --git a/tests/utils/TestHelper.js b/tests/utils/TestHelper.js index 4f3cf2d61aa6..a8424d14ed33 100644 --- a/tests/utils/TestHelper.js +++ b/tests/utils/TestHelper.js @@ -196,17 +196,15 @@ function setPersonalDetails(login, accountID) { } /** - * @param {String} actorEmail * @param {String} created * @param {Number} actorAccountID * @param {String} actionID * @returns {Object} */ -function buildTestReportComment(actorEmail, created, actorAccountID, actionID = null) { +function buildTestReportComment(created, actorAccountID, actionID = null) { const reportActionID = actionID || NumberUtils.rand64(); return { actionName: CONST.REPORT.ACTIONS.TYPE.ADDCOMMENT, - actorEmail, person: [{type: 'TEXT', style: 'strong', text: 'User B'}], created, message: [{type: 'COMMENT', html: `Comment ${actionID}`, text: `Comment ${actionID}`}],