From 3da7ab1a38111220f4fd7561c41b45a6af0795cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Ch=C3=A1vez?= Date: Mon, 4 Apr 2022 13:46:06 -0500 Subject: [PATCH 01/10] don't append lastActorDetails.displayName if chat is archived --- src/libs/OptionsListUtils.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/libs/OptionsListUtils.js b/src/libs/OptionsListUtils.js index 8c600a2cb4eb..8cfad9e5b586 100644 --- a/src/libs/OptionsListUtils.js +++ b/src/libs/OptionsListUtils.js @@ -250,6 +250,7 @@ function createOption(personalDetailList, report, { }) { const isChatRoom = ReportUtils.isChatRoom(report); const isPolicyExpenseChat = ReportUtils.isPolicyExpenseChat(report); + const isArchivedRoom = ReportUtils.isArchivedRoom(report); const hasMultipleParticipants = personalDetailList.length > 1 || isChatRoom || isPolicyExpenseChat; const personalDetail = personalDetailList[0]; const hasDraftComment = hasReportDraftComment(report); @@ -262,7 +263,7 @@ function createOption(personalDetailList, report, { const lastMessageTextFromReport = ReportUtils.isReportMessageAttachment(lodashGet(report, 'lastMessageText', '')) ? `[${Localize.translateLocal('common.attachment')}]` : Str.htmlDecode(lodashGet(report, 'lastMessageText', '')); - let lastMessageText = report && hasMultipleParticipants && lastActorDetails + let lastMessageText = report && !isArchivedRoom && hasMultipleParticipants && lastActorDetails ? `${lastActorDetails.displayName}: ` : ''; lastMessageText += report ? lastMessageTextFromReport : ''; From c2f1b87a52326225419437edbd2e880a03d66c6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Ch=C3=A1vez?= Date: Mon, 4 Apr 2022 13:46:55 -0500 Subject: [PATCH 02/10] re-use isArchivedRoom const --- src/libs/OptionsListUtils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/OptionsListUtils.js b/src/libs/OptionsListUtils.js index 8cfad9e5b586..f156bae5ddf4 100644 --- a/src/libs/OptionsListUtils.js +++ b/src/libs/OptionsListUtils.js @@ -316,7 +316,7 @@ function createOption(personalDetailList, report, { isIOUReportOwner: lodashGet(iouReport, 'ownerEmail', '') === currentUserLogin, iouReportAmount: lodashGet(iouReport, 'total', 0), isChatRoom, - isArchivedRoom: ReportUtils.isArchivedRoom(report), + isArchivedRoom, shouldShowSubscript: isPolicyExpenseChat && !report.isOwnPolicyExpenseChat, isPolicyExpenseChat, }; From d8896333d26e98da828d92f163c0dd13997608eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Ch=C3=A1vez?= Date: Mon, 4 Apr 2022 13:59:31 -0500 Subject: [PATCH 03/10] use the default subtitle for archived workspaces --- src/libs/reportUtils.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/libs/reportUtils.js b/src/libs/reportUtils.js index 5d2cebfde73b..b5c92099091f 100644 --- a/src/libs/reportUtils.js +++ b/src/libs/reportUtils.js @@ -189,12 +189,12 @@ function getChatRoomSubtitle(report, policiesMap) { // The domainAll rooms are just #domainName, so we ignore the prefix '#' to get the domainName return report.reportName.substring(1); } - if (isArchivedRoom(report)) { - return report.oldPolicyName; - } if (isPolicyExpenseChat(report) && report.isOwnPolicyExpenseChat) { return Localize.translateLocal('workspace.common.workspace'); } + if (isArchivedRoom(report)) { + return report.oldPolicyName; + } return lodashGet( policiesMap, [`${ONYXKEYS.COLLECTION.POLICY}${report.policyID}`, 'name'], From 2f726f8777c8479c1a99480020f37b4b7da713f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Ch=C3=A1vez?= Date: Mon, 4 Apr 2022 14:00:36 -0500 Subject: [PATCH 04/10] display oldPolicyName if workspace is archived --- src/libs/OptionsListUtils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/OptionsListUtils.js b/src/libs/OptionsListUtils.js index f156bae5ddf4..6cc430116a46 100644 --- a/src/libs/OptionsListUtils.js +++ b/src/libs/OptionsListUtils.js @@ -274,7 +274,7 @@ function createOption(personalDetailList, report, { let text; let alternateText; if (isChatRoom || isPolicyExpenseChat) { - text = lodashGet(report, ['reportName'], ''); + text = isArchivedRoom ? report.oldPolicyName : lodashGet(report, ['reportName'], ''); alternateText = (showChatPreviewLine && !forcePolicyNamePreview && lastMessageText) ? lastMessageText : subtitle; From e260888e2b2742f2877171d136002afb9fced46a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Ch=C3=A1vez?= Date: Mon, 4 Apr 2022 14:07:53 -0500 Subject: [PATCH 05/10] display oldPolicyName if policy name is no longer available --- src/components/ArchivedReportFooter.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/ArchivedReportFooter.js b/src/components/ArchivedReportFooter.js index d423fa0d4e22..d9da0ac82f2c 100644 --- a/src/components/ArchivedReportFooter.js +++ b/src/components/ArchivedReportFooter.js @@ -53,7 +53,7 @@ const defaultProps = { const ArchivedReportFooter = (props) => { const archiveReason = lodashGet(props.reportClosedAction, 'originalMessage.reason', CONST.REPORT.ARCHIVE_REASON.DEFAULT); - const policyName = lodashGet(props.policies, `${ONYXKEYS.COLLECTION.POLICY}${props.report.policyID}.name`); + const policyName = lodashGet(props.policies, `${ONYXKEYS.COLLECTION.POLICY}${props.report.policyID}.name`, props.report.oldPolicyName); let displayName = lodashGet(props.personalDetails, `${props.report.ownerEmail}.displayName`, props.report.ownerEmail); let oldDisplayName; From 040baa3b854841257a81a62aedd98b91d259e4b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Ch=C3=A1vez?= Date: Mon, 4 Apr 2022 14:13:42 -0500 Subject: [PATCH 06/10] use unavailable workspace message in archived report footer --- src/components/ArchivedReportFooter.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/ArchivedReportFooter.js b/src/components/ArchivedReportFooter.js index d9da0ac82f2c..4ee835c17e04 100644 --- a/src/components/ArchivedReportFooter.js +++ b/src/components/ArchivedReportFooter.js @@ -8,6 +8,7 @@ import withLocalize, {withLocalizePropTypes} from './withLocalize'; import compose from '../libs/compose'; import personalDetailsPropType from '../pages/personalDetailsPropType'; import ONYXKEYS from '../ONYXKEYS'; +import * as Localize from '../libs/Localize'; const propTypes = { /** The reason this report was archived */ @@ -53,7 +54,7 @@ const defaultProps = { const ArchivedReportFooter = (props) => { const archiveReason = lodashGet(props.reportClosedAction, 'originalMessage.reason', CONST.REPORT.ARCHIVE_REASON.DEFAULT); - const policyName = lodashGet(props.policies, `${ONYXKEYS.COLLECTION.POLICY}${props.report.policyID}.name`, props.report.oldPolicyName); + const policyName = archiveReason === CONST.REPORT.ARCHIVE_REASON.REMOVED_FROM_POLICY ? props.report.oldPolicyName : lodashGet(props.policies, `${ONYXKEYS.COLLECTION.POLICY}${props.report.policyID}.name`, Localize.translateLocal('workspace.common.unavailable')); let displayName = lodashGet(props.personalDetails, `${props.report.ownerEmail}.displayName`, props.report.ownerEmail); let oldDisplayName; From 9491255817ccc994d4ef31a88178f8c2a7f5cf5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Ch=C3=A1vez?= Date: Mon, 4 Apr 2022 14:17:18 -0500 Subject: [PATCH 07/10] use props.translate and give proper js formatting --- src/components/ArchivedReportFooter.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/components/ArchivedReportFooter.js b/src/components/ArchivedReportFooter.js index 4ee835c17e04..070971d58406 100644 --- a/src/components/ArchivedReportFooter.js +++ b/src/components/ArchivedReportFooter.js @@ -8,7 +8,6 @@ import withLocalize, {withLocalizePropTypes} from './withLocalize'; import compose from '../libs/compose'; import personalDetailsPropType from '../pages/personalDetailsPropType'; import ONYXKEYS from '../ONYXKEYS'; -import * as Localize from '../libs/Localize'; const propTypes = { /** The reason this report was archived */ @@ -54,7 +53,7 @@ const defaultProps = { const ArchivedReportFooter = (props) => { const archiveReason = lodashGet(props.reportClosedAction, 'originalMessage.reason', CONST.REPORT.ARCHIVE_REASON.DEFAULT); - const policyName = archiveReason === CONST.REPORT.ARCHIVE_REASON.REMOVED_FROM_POLICY ? props.report.oldPolicyName : lodashGet(props.policies, `${ONYXKEYS.COLLECTION.POLICY}${props.report.policyID}.name`, Localize.translateLocal('workspace.common.unavailable')); + let policyName = lodashGet(props.policies, `${ONYXKEYS.COLLECTION.POLICY}${props.report.policyID}.name`, props.translate('workspace.common.unavailable')); let displayName = lodashGet(props.personalDetails, `${props.report.ownerEmail}.displayName`, props.report.ownerEmail); let oldDisplayName; @@ -65,6 +64,10 @@ const ArchivedReportFooter = (props) => { oldDisplayName = lodashGet(props.personalDetails, `${oldLogin}.displayName`, oldLogin); } + if (archiveReason === CONST.REPORT.ARCHIVE_REASON.REMOVED_FROM_POLICY) { + policyName = props.report.oldPolicyName; + } + return ( Date: Mon, 4 Apr 2022 14:31:30 -0500 Subject: [PATCH 08/10] create the function getPolicyName in reportUtils --- src/libs/reportUtils.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/libs/reportUtils.js b/src/libs/reportUtils.js index b5c92099091f..b70f61dda340 100644 --- a/src/libs/reportUtils.js +++ b/src/libs/reportUtils.js @@ -175,6 +175,19 @@ function isArchivedRoom(report) { return report.statusNum === CONST.REPORT.STATUS.CLOSED && report.stateNum === CONST.REPORT.STATE_NUM.SUBMITTED; } +/** + * Get the policy name from a given report + * @param {Object} report + * @param {String} report.policyID + * @param {String} report.oldPolicyName + * @param {Object} policies must have Onyxkey prefix (i.e 'policy_') for keys + * @returns {String} + */ +function getPolicyName(report, policies) { + const defaultValue = report.oldPolicyName || Localize.translateLocal('workspace.common.unavailable'); + return lodashGet(policies, [`${ONYXKEYS.COLLECTION.POLICY}${report.policyID}`, 'name'], defaultValue); +} + /** * Get either the policyName or domainName the chat is tied to * @param {Object} report @@ -314,6 +327,7 @@ export { isUserCreatedPolicyRoom, isChatRoom, getChatRoomSubtitle, + getPolicyName, isArchivedRoom, isConciergeChatReport, hasExpensifyEmails, From c41366e9eb940994afd658802d611e61656098e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Ch=C3=A1vez?= Date: Mon, 4 Apr 2022 14:40:53 -0500 Subject: [PATCH 09/10] replace repeated logic with ReportUtils.getPolicyName --- src/components/ArchivedReportFooter.js | 8 ++------ src/components/ReportWelcomeText.js | 3 +-- src/libs/reportUtils.js | 13 ++----------- 3 files changed, 5 insertions(+), 19 deletions(-) diff --git a/src/components/ArchivedReportFooter.js b/src/components/ArchivedReportFooter.js index 070971d58406..cafc106ce2a4 100644 --- a/src/components/ArchivedReportFooter.js +++ b/src/components/ArchivedReportFooter.js @@ -8,6 +8,7 @@ import withLocalize, {withLocalizePropTypes} from './withLocalize'; import compose from '../libs/compose'; import personalDetailsPropType from '../pages/personalDetailsPropType'; import ONYXKEYS from '../ONYXKEYS'; +import * as ReportUtils from '../libs/reportUtils'; const propTypes = { /** The reason this report was archived */ @@ -53,7 +54,6 @@ const defaultProps = { const ArchivedReportFooter = (props) => { const archiveReason = lodashGet(props.reportClosedAction, 'originalMessage.reason', CONST.REPORT.ARCHIVE_REASON.DEFAULT); - let policyName = lodashGet(props.policies, `${ONYXKEYS.COLLECTION.POLICY}${props.report.policyID}.name`, props.translate('workspace.common.unavailable')); let displayName = lodashGet(props.personalDetails, `${props.report.ownerEmail}.displayName`, props.report.ownerEmail); let oldDisplayName; @@ -64,16 +64,12 @@ const ArchivedReportFooter = (props) => { oldDisplayName = lodashGet(props.personalDetails, `${oldLogin}.displayName`, oldLogin); } - if (archiveReason === CONST.REPORT.ARCHIVE_REASON.REMOVED_FROM_POLICY) { - policyName = props.report.oldPolicyName; - } - return ( ${displayName}`, oldDisplayName: `${oldDisplayName}`, - policyName: `${policyName}`, + policyName: `${ReportUtils.getPolicyName(props.report, props.policies)}`, })} shouldRenderHTML={archiveReason !== CONST.REPORT.ARCHIVE_REASON.DEFAULT} /> diff --git a/src/components/ReportWelcomeText.js b/src/components/ReportWelcomeText.js index d60c8bd6c745..0d86d1071018 100644 --- a/src/components/ReportWelcomeText.js +++ b/src/components/ReportWelcomeText.js @@ -10,7 +10,6 @@ import withLocalize, {withLocalizePropTypes} from './withLocalize'; import compose from '../libs/compose'; import * as ReportUtils from '../libs/reportUtils'; import * as OptionsListUtils from '../libs/OptionsListUtils'; -import * as Localize from '../libs/Localize'; import ONYXKEYS from '../ONYXKEYS'; import CONST from '../CONST'; @@ -91,7 +90,7 @@ const ReportWelcomeText = (props) => { {props.translate('reportActionsView.beginningOfChatHistoryPolicyExpenseChatPartTwo')} - {lodashGet(props.policies, [`${ONYXKEYS.COLLECTION.POLICY}${props.report.policyID}`, 'name'], Localize.translateLocal('workspace.common.unavailable'))} + {ReportUtils.getPolicyName(props.report, props.policies)} {props.translate('reportActionsView.beginningOfChatHistoryPolicyExpenseChatPartThree')} diff --git a/src/libs/reportUtils.js b/src/libs/reportUtils.js index b70f61dda340..9ff3145921c6 100644 --- a/src/libs/reportUtils.js +++ b/src/libs/reportUtils.js @@ -208,11 +208,7 @@ function getChatRoomSubtitle(report, policiesMap) { if (isArchivedRoom(report)) { return report.oldPolicyName; } - return lodashGet( - policiesMap, - [`${ONYXKEYS.COLLECTION.POLICY}${report.policyID}`, 'name'], - Localize.translateLocal('workspace.common.unavailable'), - ); + return getPolicyName(report, policiesMap); } /** @@ -224,12 +220,7 @@ function getChatRoomSubtitle(report, policiesMap) { function getRoomWelcomeMessage(report, policiesMap) { const welcomeMessage = {}; - - const workspaceName = lodashGet( - policiesMap, - [`${ONYXKEYS.COLLECTION.POLICY}${report.policyID}`, 'name'], - Localize.translateLocal('workspace.common.unavailable'), - ); + const workspaceName = getPolicyName(report, policiesMap); if (isAdminRoom(report)) { welcomeMessage.phrase1 = Localize.translateLocal('reportActionsView.beginningOfChatHistoryAdminRoomPartOne', {workspaceName}); From 412c265f7cac83a5b2cc4f070848fc279cd77880 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Ch=C3=A1vez?= Date: Mon, 4 Apr 2022 14:52:25 -0500 Subject: [PATCH 10/10] use default report name if archived workspace for admins --- src/libs/OptionsListUtils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/OptionsListUtils.js b/src/libs/OptionsListUtils.js index 6cc430116a46..d5161e684341 100644 --- a/src/libs/OptionsListUtils.js +++ b/src/libs/OptionsListUtils.js @@ -274,7 +274,7 @@ function createOption(personalDetailList, report, { let text; let alternateText; if (isChatRoom || isPolicyExpenseChat) { - text = isArchivedRoom ? report.oldPolicyName : lodashGet(report, ['reportName'], ''); + text = (isArchivedRoom && report.isOwnPolicyExpenseChat) ? report.oldPolicyName : lodashGet(report, ['reportName'], ''); alternateText = (showChatPreviewLine && !forcePolicyNamePreview && lastMessageText) ? lastMessageText : subtitle;