// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. import {connect} from 'react-redux'; import {Preferences} from '@mm-redux/constants'; import {makeGetCommentCountForPost} from '@mm-redux/selectors/entities/posts'; import {getBool, getTeammateNameDisplaySetting, getTheme} from '@mm-redux/selectors/entities/preferences'; import {isTimezoneEnabled} from '@mm-redux/selectors/entities/timezone'; import {getUser, getCurrentUser} from '@mm-redux/selectors/entities/users'; import {isPostPendingOrFailed, isSystemMessage, isFromWebhook} from '@mm-redux/utils/post_utils'; import {getUserCurrentTimezone} from '@mm-redux/utils/timezone_utils'; import {displayUsername} from '@mm-redux/utils/user_utils'; import {getConfig} from '@mm-redux/selectors/entities/general'; import {fromAutoResponder} from 'app/utils/general'; import {isGuest} from 'app/utils/users'; import {isLandscape} from 'app/selectors/device'; import PostHeader from './post_header'; function makeMapStateToProps() { const getCommentCountForPost = makeGetCommentCountForPost(); return function mapStateToProps(state, ownProps) { const config = getConfig(state); const post = ownProps.post; const commentedOnPost = ownProps.commentedOnPost; const commentedOnUserId = commentedOnPost?.user_id; const commentedOnUser = commentedOnUserId ? getUser(state, commentedOnUserId) : null; const user = getUser(state, post.user_id) || {}; const currentUser = getCurrentUser(state); const teammateNameDisplay = getTeammateNameDisplaySetting(state); const militaryTime = getBool(state, Preferences.CATEGORY_DISPLAY_SETTINGS, 'use_military_time'); const enableTimezone = isTimezoneEnabled(state); const userTimezone = enableTimezone ? getUserCurrentTimezone(currentUser.timezone) : ''; let commentedOnDisplayName = ''; if (commentedOnUserId) { if (isFromWebhook(commentedOnPost) && commentedOnPost.props.override_username) { commentedOnDisplayName = commentedOnPost.props.override_username; } else { commentedOnDisplayName = displayUsername(commentedOnUser, teammateNameDisplay); } } return { commentedOnDisplayName, commentCount: getCommentCountForPost(state, {post}), createAt: post.create_at, displayName: displayUsername(user, teammateNameDisplay), enablePostUsernameOverride: config.EnablePostUsernameOverride === 'true', fromWebHook: isFromWebhook(post), militaryTime, isPendingOrFailedPost: isPostPendingOrFailed(post), isSystemMessage: isSystemMessage(post), fromAutoResponder: fromAutoResponder(post), overrideUsername: post?.props?.override_username, // eslint-disable-line camelcase theme: getTheme(state), username: user.username, isBot: user.is_bot || false, isGuest: isGuest(user), isLandscape: isLandscape(state), userTimezone, }; }; } export default connect(makeMapStateToProps)(PostHeader);