import React from 'react'; import { View, Text, StyleSheet } from 'react-native'; import PropTypes from 'prop-types'; import moment from 'moment'; import { connect } from 'react-redux'; import isEqual from 'lodash/isEqual'; import Markdown from '../markdown'; import { CustomIcon } from '../../lib/Icons'; import sharedStyles from '../../views/Styles'; import { themes } from '../../constants/colors'; const styles = StyleSheet.create({ container: { flexDirection: 'row', paddingTop: 10 }, messageContainer: { flex: 1, marginHorizontal: 10, paddingHorizontal: 15, paddingVertical: 10, borderRadius: 4 }, header: { flexDirection: 'row', alignItems: 'center' }, username: { fontSize: 16, ...sharedStyles.textMedium }, time: { fontSize: 12, lineHeight: 16, marginLeft: 6, ...sharedStyles.textRegular, fontWeight: '300' }, close: { marginRight: 10 } }); const ReplyPreview = React.memo(({ message, Message_TimeFormat, baseUrl, username, replying, getCustomEmoji, close, theme, useRealName }) => { if (!replying) { return null; } const time = moment(message.ts).format(Message_TimeFormat); return ( {useRealName ? message.u?.name : message.u?.username} {time} ); }, (prevProps, nextProps) => prevProps.replying === nextProps.replying && prevProps.theme === nextProps.theme && isEqual(prevProps.message, nextProps.message)); ReplyPreview.propTypes = { replying: PropTypes.bool, message: PropTypes.object.isRequired, Message_TimeFormat: PropTypes.string.isRequired, close: PropTypes.func.isRequired, baseUrl: PropTypes.string.isRequired, username: PropTypes.string.isRequired, getCustomEmoji: PropTypes.func, theme: PropTypes.string, useRealName: PropTypes.bool }; const mapStateToProps = state => ({ Message_TimeFormat: state.settings.Message_TimeFormat, baseUrl: state.server.server, useRealName: state.settings.UI_Use_Real_Name }); export default connect(mapStateToProps)(ReplyPreview);