stream-chat-react-native-core
Version:
The official React Native and Expo components for Stream Chat, a service for building chat applications
65 lines • 3.22 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.MessageAuthor = void 0;
var _react = _interopRequireDefault(require("react"));
var _reactNative = require("react-native");
var _MessageContext = require("../../../contexts/messageContext/MessageContext");
var _ThemeContext = require("../../../contexts/themeContext/ThemeContext");
var _ui = require("../../ui");
var _constants = require("../../ui/Avatar/constants");
var _jsxRuntime = require("react/jsx-runtime");
var _jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/Message/MessageItemView/MessageAuthor.tsx";
var MessageAuthorWithContext = props => {
var lastGroupMessage = props.lastGroupMessage,
message = props.message,
showAvatar = props.showAvatar,
size = props.size;
var _useTheme = (0, _ThemeContext.useTheme)(),
container = _useTheme.theme.messageItemView.authorWrapper.container;
var visible = typeof showAvatar === 'boolean' ? showAvatar : lastGroupMessage;
return (0, _jsxRuntime.jsx)(_reactNative.View, {
style: container,
testID: "message-author",
children: visible && message.user ? (0, _jsxRuntime.jsx)(_ui.UserAvatar, {
user: message.user,
size: size != null ? size : 'md'
}) : (0, _jsxRuntime.jsx)(_reactNative.View, {
style: _constants.avatarSizes[size != null ? size : 'md'],
testID: "spacer"
})
});
};
var areEqual = (prevProps, nextProps) => {
var _prevMessage$user, _nextMessage$user, _prevMessage$user2, _nextMessage$user2, _prevMessage$user3, _nextMessage$user3;
var prevLastGroupMessage = prevProps.lastGroupMessage,
prevMessage = prevProps.message;
var nextLastGroupMessage = nextProps.lastGroupMessage,
nextMessage = nextProps.message;
var lastGroupMessageEqual = prevLastGroupMessage === nextLastGroupMessage;
if (!lastGroupMessageEqual) {
return false;
}
var userEqual = ((_prevMessage$user = prevMessage.user) == null ? void 0 : _prevMessage$user.image) === ((_nextMessage$user = nextMessage.user) == null ? void 0 : _nextMessage$user.image) && ((_prevMessage$user2 = prevMessage.user) == null ? void 0 : _prevMessage$user2.name) === ((_nextMessage$user2 = nextMessage.user) == null ? void 0 : _nextMessage$user2.name) && ((_prevMessage$user3 = prevMessage.user) == null ? void 0 : _prevMessage$user3.id) === ((_nextMessage$user3 = nextMessage.user) == null ? void 0 : _nextMessage$user3.id);
if (!userEqual) {
return false;
}
return true;
};
var MemoizedMessageAuthor = _react.default.memo(MessageAuthorWithContext, areEqual);
var MessageAuthor = props => {
var _useMessageContext = (0, _MessageContext.useMessageContext)(),
lastGroupMessage = _useMessageContext.lastGroupMessage,
message = _useMessageContext.message,
showAvatar = _useMessageContext.showAvatar;
return (0, _jsxRuntime.jsx)(MemoizedMessageAuthor, {
lastGroupMessage,
message,
showAvatar,
...props
});
};
exports.MessageAuthor = MessageAuthor;
MessageAuthor.displayName = 'MessageAuthor{messageItemView{authorWrapper}}';
//# sourceMappingURL=MessageAuthor.js.map