From 0b007889e40c01d0f5d8d0cd551a845ab9cf1739 Mon Sep 17 00:00:00 2001 From: Alex Beaman Date: Wed, 28 Jun 2023 13:49:36 +0300 Subject: [PATCH 1/7] Update util function to use new reportAction prop --- src/libs/actions/Task.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/libs/actions/Task.js b/src/libs/actions/Task.js index 5e27d7db764d..fce7a800c32a 100644 --- a/src/libs/actions/Task.js +++ b/src/libs/actions/Task.js @@ -647,8 +647,7 @@ function getTaskAssigneeAccountID(taskReport) { } const reportAction = ReportActionsUtils.getParentReportAction(taskReport); - const childManagerEmail = lodashGet(reportAction, 'childManagerEmail', ''); - return PersonalDetailsUtils.getAccountIDsByLogins([childManagerEmail])[0]; + return lodashGet(reportAction, 'childManagerAccountID'); } /** From 36d25362962182d63046932f9448a95395f9dd83 Mon Sep 17 00:00:00 2001 From: Alex Beaman Date: Wed, 28 Jun 2023 13:50:09 +0300 Subject: [PATCH 2/7] Get assignee login from assignee accountID --- src/components/ReportActionItem/TaskPreview.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/components/ReportActionItem/TaskPreview.js b/src/components/ReportActionItem/TaskPreview.js index 576de1991b9c..c50afaf7c134 100644 --- a/src/components/ReportActionItem/TaskPreview.js +++ b/src/components/ReportActionItem/TaskPreview.js @@ -2,6 +2,7 @@ import React from 'react'; import {View} from 'react-native'; import PropTypes from 'prop-types'; import {withOnyx} from 'react-native-onyx'; +import lodashGet from 'lodash/get'; import compose from '../../libs/compose'; import styles from '../../styles/styles'; import ONYXKEYS from '../../ONYXKEYS'; @@ -18,8 +19,12 @@ import reportActionPropTypes from '../../pages/home/report/reportActionPropTypes import * as TaskUtils from '../../libs/actions/Task'; import RenderHTML from '../RenderHTML'; import PressableWithoutFeedback from '../Pressable/PressableWithoutFeedback'; +import personalDetailsPropType from '../../pages/personalDetailsPropType'; const propTypes = { + /** All personal details asssociated with user */ + allPersonalDetails: personalDetailsPropType, + /** The ID of the associated taskReport */ taskReportID: PropTypes.string.isRequired, @@ -58,7 +63,8 @@ function TaskPreview(props) { ? props.taskReport.stateNum === CONST.REPORT.STATE_NUM.SUBMITTED && props.taskReport.statusNum === CONST.REPORT.STATUS.APPROVED : props.action.childStateNum === CONST.REPORT.STATE_NUM.SUBMITTED && props.action.childStatusNum === CONST.REPORT.STATUS.APPROVED; const taskTitle = props.taskReport.reportName || props.action.childReportName; - const taskAssignee = props.taskReport.managerEmail || props.action.childManagerEmail; + const taskAssigneeAccountID = TaskUtils.getTaskAssigneeAccountID(props.taskReport); + const taskAssignee = lodashGet(allPersonalDetails, [taskAssigneeAccountID, 'login'], ''); const htmlForTaskPreview = taskAssignee ? `@${taskAssignee} ${taskTitle}` : `${taskTitle}`; return ( @@ -102,5 +108,8 @@ export default compose( taskReport: { key: ({taskReportID}) => `${ONYXKEYS.COLLECTION.REPORT}${taskReportID}`, }, + allPersonalDetails: { + key: ONYXKEYS.PERSONAL_DETAILS_LIST, + }, }), )(TaskPreview); From a7381f41d731e569b2501f02874dad6d79ecd48b Mon Sep 17 00:00:00 2001 From: Alex Beaman Date: Wed, 28 Jun 2023 13:50:28 +0300 Subject: [PATCH 3/7] Refactor prop types --- src/pages/workspace/WorkspaceMembersPage.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/pages/workspace/WorkspaceMembersPage.js b/src/pages/workspace/WorkspaceMembersPage.js index 5b56a801db1c..8f05780e896b 100644 --- a/src/pages/workspace/WorkspaceMembersPage.js +++ b/src/pages/workspace/WorkspaceMembersPage.js @@ -32,7 +32,7 @@ import * as UserUtils from '../../libs/UserUtils'; import FormHelpMessage from '../../components/FormHelpMessage'; import TextInput from '../../components/TextInput'; import KeyboardDismissingFlatList from '../../components/KeyboardDismissingFlatList'; -import withCurrentUserPersonalDetails from '../../components/withCurrentUserPersonalDetails'; +import withCurrentUserPersonalDetails, {withCurrentUserPersonalDetailsPropTypes, withCurrentUserPersonalDetailsDefaultProps} from '../../components/withCurrentUserPersonalDetails'; import * as PolicyUtils from '../../libs/PolicyUtils'; import PressableWithFeedback from '../../components/Pressable/PressableWithFeedback'; import usePrevious from '../../hooks/usePrevious'; @@ -40,7 +40,7 @@ import Log from '../../libs/Log'; import * as PersonalDetailsUtils from '../../libs/PersonalDetailsUtils'; const propTypes = { - /** The personal details of the person who is logged in */ + /** All personal details asssociated with user */ personalDetails: personalDetailsPropType, /** URL Route params */ @@ -61,6 +61,7 @@ const propTypes = { ...policyPropTypes, ...withLocalizePropTypes, ...windowDimensionsPropTypes, + ...withCurrentUserPersonalDetailsPropTypes, network: networkPropTypes.isRequired, }; @@ -70,6 +71,7 @@ const defaultProps = { accountID: 0, }, ...policyDefaultProps, + ...withCurrentUserPersonalDetailsDefaultProps, }; function WorkspaceMembersPage(props) { From 778891a8bbd118ca472e90d777f7df9a3ceaa4b1 Mon Sep 17 00:00:00 2001 From: Alex Beaman Date: Thu, 29 Jun 2023 13:14:46 +0300 Subject: [PATCH 4/7] A bit of lint cleanup --- src/components/ReportActionItem/TaskPreview.js | 2 +- src/libs/actions/Task.js | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/components/ReportActionItem/TaskPreview.js b/src/components/ReportActionItem/TaskPreview.js index c50afaf7c134..f91f6d5f1536 100644 --- a/src/components/ReportActionItem/TaskPreview.js +++ b/src/components/ReportActionItem/TaskPreview.js @@ -64,7 +64,7 @@ function TaskPreview(props) { : props.action.childStateNum === CONST.REPORT.STATE_NUM.SUBMITTED && props.action.childStatusNum === CONST.REPORT.STATUS.APPROVED; const taskTitle = props.taskReport.reportName || props.action.childReportName; const taskAssigneeAccountID = TaskUtils.getTaskAssigneeAccountID(props.taskReport); - const taskAssignee = lodashGet(allPersonalDetails, [taskAssigneeAccountID, 'login'], ''); + const taskAssignee = lodashGet(props.allPersonalDetails, [taskAssigneeAccountID, 'login'], ''); const htmlForTaskPreview = taskAssignee ? `@${taskAssignee} ${taskTitle}` : `${taskTitle}`; return ( diff --git a/src/libs/actions/Task.js b/src/libs/actions/Task.js index fce7a800c32a..4754cde1a2c1 100644 --- a/src/libs/actions/Task.js +++ b/src/libs/actions/Task.js @@ -10,7 +10,6 @@ import ROUTES from '../../ROUTES'; import CONST from '../../CONST'; import DateUtils from '../DateUtils'; import * as UserUtils from '../UserUtils'; -import * as PersonalDetailsUtils from '../PersonalDetailsUtils'; import * as ReportActionsUtils from '../ReportActionsUtils'; /** From c8f63aa1bfd3a4f42ec713972857fd8b405bacb6 Mon Sep 17 00:00:00 2001 From: Alex Beaman Date: Thu, 29 Jun 2023 13:53:34 +0300 Subject: [PATCH 5/7] Rename prop & add default --- src/components/ReportActionItem/TaskPreview.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/components/ReportActionItem/TaskPreview.js b/src/components/ReportActionItem/TaskPreview.js index f91f6d5f1536..99ef4c276468 100644 --- a/src/components/ReportActionItem/TaskPreview.js +++ b/src/components/ReportActionItem/TaskPreview.js @@ -23,7 +23,7 @@ import personalDetailsPropType from '../../pages/personalDetailsPropType'; const propTypes = { /** All personal details asssociated with user */ - allPersonalDetails: personalDetailsPropType, + personalDetailsList: personalDetailsPropType, /** The ID of the associated taskReport */ taskReportID: PropTypes.string.isRequired, @@ -51,6 +51,7 @@ const propTypes = { }; const defaultProps = { + personalDetailsList: {}, taskReport: {}, isHovered: false, }; @@ -64,7 +65,7 @@ function TaskPreview(props) { : props.action.childStateNum === CONST.REPORT.STATE_NUM.SUBMITTED && props.action.childStatusNum === CONST.REPORT.STATUS.APPROVED; const taskTitle = props.taskReport.reportName || props.action.childReportName; const taskAssigneeAccountID = TaskUtils.getTaskAssigneeAccountID(props.taskReport); - const taskAssignee = lodashGet(props.allPersonalDetails, [taskAssigneeAccountID, 'login'], ''); + const taskAssignee = lodashGet(props.personalDetailsList, [taskAssigneeAccountID, 'login'], ''); const htmlForTaskPreview = taskAssignee ? `@${taskAssignee} ${taskTitle}` : `${taskTitle}`; return ( @@ -108,7 +109,7 @@ export default compose( taskReport: { key: ({taskReportID}) => `${ONYXKEYS.COLLECTION.REPORT}${taskReportID}`, }, - allPersonalDetails: { + personalDetailsList: { key: ONYXKEYS.PERSONAL_DETAILS_LIST, }, }), From a1ef3e5a4c4f6b7fa9e7923e38cb731f3e1bd79a Mon Sep 17 00:00:00 2001 From: Alex Beaman Date: Tue, 4 Jul 2023 15:49:32 +0300 Subject: [PATCH 6/7] Remove use of childManagerEmail --- src/libs/ReportUtils.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/libs/ReportUtils.js b/src/libs/ReportUtils.js index 113fe524804c..a3fedd7082b2 100644 --- a/src/libs/ReportUtils.js +++ b/src/libs/ReportUtils.js @@ -1277,7 +1277,6 @@ function buildOptimisticTaskCommentReportAction(taskReportID, taskTitle, taskAss reportAction.reportAction.parentReportID = parentReportID; reportAction.reportAction.childType = CONST.REPORT.TYPE.TASK; reportAction.reportAction.childReportName = taskTitle; - reportAction.reportAction.childManagerEmail = taskAssignee; reportAction.reportAction.childManagerAccountID = taskAssigneeAccountID; reportAction.reportAction.childStatusNum = CONST.REPORT.STATUS.OPEN; reportAction.reportAction.childStateNum = CONST.REPORT.STATE_NUM.OPEN; From 87ca096da7a11651e29ba48c881d15fb6663576e Mon Sep 17 00:00:00 2001 From: Alex Beaman Date: Thu, 6 Jul 2023 16:23:15 +0300 Subject: [PATCH 7/7] Get personal displayName if no login in personalDetails --- src/components/ReportActionItem/TaskPreview.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/ReportActionItem/TaskPreview.js b/src/components/ReportActionItem/TaskPreview.js index 396fbef3c2de..621f3b90cbc3 100644 --- a/src/components/ReportActionItem/TaskPreview.js +++ b/src/components/ReportActionItem/TaskPreview.js @@ -66,7 +66,7 @@ function TaskPreview(props) { : props.action.childStateNum === CONST.REPORT.STATE_NUM.SUBMITTED && props.action.childStatusNum === CONST.REPORT.STATUS.APPROVED; const taskTitle = props.taskReport.reportName || props.action.childReportName; const taskAssigneeAccountID = TaskUtils.getTaskAssigneeAccountID(props.taskReport); - const taskAssignee = lodashGet(props.personalDetailsList, [taskAssigneeAccountID, 'login'], ''); + const taskAssignee = lodashGet(props.personalDetailsList, [taskAssigneeAccountID, 'login'], lodashGet(props.personalDetailsList, [taskAssigneeAccountID, 'displayName'], '')); const htmlForTaskPreview = taskAssignee ? `@${taskAssignee} ${taskTitle}` : `${taskTitle}`; return (