diff --git a/src/components/ReportWelcomeText.js b/src/components/ReportWelcomeText.js index e0e5d25a1643..9fc446df31e3 100644 --- a/src/components/ReportWelcomeText.js +++ b/src/components/ReportWelcomeText.js @@ -10,6 +10,7 @@ import Text from './Text'; import withLocalize, {withLocalizePropTypes} from './withLocalize'; import compose from '../libs/compose'; import * as ReportUtils from '../libs/ReportUtils'; +import * as PolicyUtils from '../libs/PolicyUtils'; import * as OptionsListUtils from '../libs/OptionsListUtils'; import ONYXKEYS from '../ONYXKEYS'; import Navigation from '../libs/Navigation/Navigation'; @@ -33,6 +34,15 @@ const propTypes = { /** The report currently being looked at */ report: reportPropTypes, + /** The policy object for the current route */ + policy: PropTypes.shape({ + /** The name of the policy */ + name: PropTypes.string, + + /** The URL for the policy avatar */ + avatar: PropTypes.string, + }), + /* Onyx Props */ /** All of the personal details for everyone */ @@ -46,6 +56,7 @@ const propTypes = { const defaultProps = { report: {}, + policy: {}, personalDetails: {}, betas: [], }; @@ -54,18 +65,23 @@ function ReportWelcomeText(props) { const isPolicyExpenseChat = ReportUtils.isPolicyExpenseChat(props.report); const isChatRoom = ReportUtils.isChatRoom(props.report); const isDefault = !(isChatRoom || isPolicyExpenseChat); + const isAdminsOnlyPostingRoom = ReportUtils.isAdminsOnlyPostingRoom(props.report); const participantAccountIDs = lodashGet(props.report, 'participantAccountIDs', []); const isMultipleParticipant = participantAccountIDs.length > 1; const displayNamesWithTooltips = ReportUtils.getDisplayNamesWithTooltips( OptionsListUtils.getPersonalDetailsForAccountIDs(participantAccountIDs, props.personalDetails), isMultipleParticipant, ); - const roomWelcomeMessage = ReportUtils.getRoomWelcomeMessage(props.report); + const isUserPolicyAdmin = PolicyUtils.isPolicyAdmin(props.policy); + const roomWelcomeMessage = ReportUtils.getRoomWelcomeMessage(props.report, isUserPolicyAdmin); const moneyRequestOptions = ReportUtils.getMoneyRequestOptions(props.report, participantAccountIDs, props.betas); + return ( <> - {props.translate('reportActionsView.sayHello')} + + {isChatRoom ? props.translate('reportActionsView.welcomeToRoom', {roomName: ReportUtils.getReportName(props.report)}) : props.translate('reportActionsView.sayHello')} + {isPolicyExpenseChat && ( @@ -84,14 +100,19 @@ function ReportWelcomeText(props) { {isChatRoom && ( <> {roomWelcomeMessage.phrase1} - Navigation.navigate(ROUTES.getReportDetailsRoute(props.report.reportID))} - suppressHighlighting - > - {ReportUtils.getReportName(props.report)} - - {roomWelcomeMessage.phrase2} + {/* for rooms in which only admins can post we dont need room name and phrase two */} + {(!isAdminsOnlyPostingRoom || isUserPolicyAdmin) && ( + <> + Navigation.navigate(ROUTES.getReportDetailsRoute(props.report.reportID))} + suppressHighlighting + > + {ReportUtils.getReportName(props.report)} + + {roomWelcomeMessage.phrase2} + + )} )} {isDefault && ( diff --git a/src/languages/en.js b/src/languages/en.js index 19dbd9c63187..902efeb156b9 100755 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -310,8 +310,7 @@ export default { beginningOfChatHistoryDomainRoomPartTwo: ' to chat with colleagues, share tips, and ask questions.', beginningOfChatHistoryAdminRoomPartOne: ({workspaceName}) => `Collaboration among ${workspaceName} admins starts here! 🎉\nUse `, beginningOfChatHistoryAdminRoomPartTwo: ' to chat about topics such as workspace configurations and more.', - beginningOfChatHistoryAdminOnlyPostingRoomPartOne: 'Use ', - beginningOfChatHistoryAdminOnlyPostingRoomPartTwo: ({workspaceName}) => ` to hear about important announcements related to ${workspaceName}`, + beginningOfChatHistoryAdminOnlyPostingRoom: 'Only admins can send messages in this room.', beginningOfChatHistoryAnnounceRoomPartOne: ({workspaceName}) => `Collaboration between all ${workspaceName} members starts here! 🎉\nUse `, beginningOfChatHistoryAnnounceRoomPartTwo: ({workspaceName}) => ` to chat about anything ${workspaceName} related.`, beginningOfChatHistoryUserRoomPartOne: 'Collaboration starts here! 🎉\nUse this space to chat about anything ', @@ -322,6 +321,7 @@ export default { beginningOfChatHistoryPolicyExpenseChatPartThree: ' starts here! 🎉 This is the place to chat, request money and settle up.', chatWithAccountManager: 'Chat with your account manager here', sayHello: 'Say hello!', + welcomeToRoom: ({roomName}) => `Welcome to ${roomName}!`, usePlusButton: '\n\nYou can also use the + button below to request money or assign a task!', }, reportAction: { diff --git a/src/languages/es.js b/src/languages/es.js index bb3306417e17..44aa4f820af6 100644 --- a/src/languages/es.js +++ b/src/languages/es.js @@ -309,8 +309,7 @@ export default { beginningOfChatHistoryDomainRoomPartTwo: ' para chatear con compañeros, compartir consejos o hacer una pregunta.', beginningOfChatHistoryAdminRoomPartOne: ({workspaceName}) => `Este es el lugar para que los administradores de ${workspaceName} colaboren! 🎉\nUsa `, beginningOfChatHistoryAdminRoomPartTwo: ' para chatear sobre temas como la configuración del espacio de trabajo y mas.', - beginningOfChatHistoryAdminOnlyPostingRoomPartOne: 'Utiliza ', - beginningOfChatHistoryAdminOnlyPostingRoomPartTwo: ({workspaceName}) => ` para enterarte de anuncios importantes relacionados con ${workspaceName}`, + beginningOfChatHistoryAdminOnlyPostingRoom: 'Solo los administradores pueden enviar mensajes en esta sala.', beginningOfChatHistoryAnnounceRoomPartOne: ({workspaceName}) => `Este es el lugar para que todos los miembros de ${workspaceName} colaboren! 🎉\nUsa `, beginningOfChatHistoryAnnounceRoomPartTwo: ({workspaceName}) => ` para chatear sobre cualquier cosa relacionada con ${workspaceName}.`, beginningOfChatHistoryUserRoomPartOne: 'Este es el lugar para colaborar! 🎉\nUsa este espacio para chatear sobre cualquier cosa relacionada con ', @@ -321,6 +320,7 @@ export default { beginningOfChatHistoryPolicyExpenseChatPartThree: ' empieza aquí! 🎉 Este es el lugar donde chatear, pedir dinero y pagar.', chatWithAccountManager: 'Chatea con tu gestor de cuenta aquí', sayHello: '¡Saluda!', + welcomeToRoom: ({roomName}) => `¡Bienvenido a ${roomName}!`, usePlusButton: '\n\n¡También puedes usar el botón + de abajo para pedir dinero o asignar una tarea!', }, reportAction: { diff --git a/src/libs/ReportUtils.js b/src/libs/ReportUtils.js index 1f571bb7c33e..a9755486e156 100644 --- a/src/libs/ReportUtils.js +++ b/src/libs/ReportUtils.js @@ -760,10 +760,11 @@ function canDeleteReportAction(reportAction, reportID) { /** * Get welcome message based on room type * @param {Object} report + * @param {Boolean} isUserPolicyAdmin * @returns {Object} */ -function getRoomWelcomeMessage(report) { +function getRoomWelcomeMessage(report, isUserPolicyAdmin) { const welcomeMessage = {}; const workspaceName = getPolicyName(report); @@ -776,9 +777,8 @@ function getRoomWelcomeMessage(report) { } else if (isAdminRoom(report)) { welcomeMessage.phrase1 = Localize.translateLocal('reportActionsView.beginningOfChatHistoryAdminRoomPartOne', {workspaceName}); welcomeMessage.phrase2 = Localize.translateLocal('reportActionsView.beginningOfChatHistoryAdminRoomPartTwo'); - } else if (isAdminsOnlyPostingRoom(report)) { - welcomeMessage.phrase1 = Localize.translateLocal('reportActionsView.beginningOfChatHistoryAdminOnlyPostingRoomPartOne'); - welcomeMessage.phrase2 = Localize.translateLocal('reportActionsView.beginningOfChatHistoryAdminOnlyPostingRoomPartTwo', {workspaceName}); + } else if (isAdminsOnlyPostingRoom(report) && !isUserPolicyAdmin) { + welcomeMessage.phrase1 = Localize.translateLocal('reportActionsView.beginningOfChatHistoryAdminOnlyPostingRoom'); } else if (isAnnounceRoom(report)) { welcomeMessage.phrase1 = Localize.translateLocal('reportActionsView.beginningOfChatHistoryAnnounceRoomPartOne', {workspaceName}); welcomeMessage.phrase2 = Localize.translateLocal('reportActionsView.beginningOfChatHistoryAnnounceRoomPartTwo', {workspaceName}); @@ -801,7 +801,7 @@ function chatIncludesConcierge(report) { } /** - * Returns true if there is any automated expensify account in accountIDs + * Returns true if there is any automated expensify account `in accountIDs * @param {Array} accountIDs * @returns {Boolean} */ @@ -3199,6 +3199,7 @@ export { sortReportsByLastRead, isDefaultRoom, isAdminRoom, + isAdminsOnlyPostingRoom, isAnnounceRoom, isUserCreatedPolicyRoom, isChatRoom, diff --git a/src/pages/home/report/ReportActionItemCreated.js b/src/pages/home/report/ReportActionItemCreated.js index b7716e22a851..4ae4fe81e4ac 100644 --- a/src/pages/home/report/ReportActionItemCreated.js +++ b/src/pages/home/report/ReportActionItemCreated.js @@ -89,7 +89,10 @@ function ReportActionItemCreated(props) { /> - +