stream-chat-react-native-core
Version:
The official React Native and Expo components for Stream Chat, a service for building chat applications
42 lines • 1.9 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getGroupStyle = void 0;
var _utils = require("../../../utils/utils");
var getGroupStyle = ({
message,
previousMessage,
nextMessage,
maxTimeBetweenGroupedMessages,
nextMessageDateSeparatorDate,
dateSeparatorDate
}) => {
var _message$user, _previousMessage$user, _nextMessage$user;
var groupStyles = [];
var userId = (message == null || (_message$user = message.user) == null ? void 0 : _message$user.id) || null;
var isTopMessage = !previousMessage || previousMessage.type === 'system' || previousMessage.type === 'error' || userId !== (previousMessage == null || (_previousMessage$user = previousMessage.user) == null ? void 0 : _previousMessage$user.id) || dateSeparatorDate || (0, _utils.isEditedMessage)(previousMessage);
var isBottomMessage = !nextMessage || nextMessage.type === 'system' || nextMessage.type === 'error' || userId !== (nextMessage == null || (_nextMessage$user = nextMessage.user) == null ? void 0 : _nextMessage$user.id) || nextMessageDateSeparatorDate || maxTimeBetweenGroupedMessages !== undefined && nextMessage.created_at.getTime() - message.created_at.getTime() > maxTimeBetweenGroupedMessages || (0, _utils.isEditedMessage)(message);
if (isTopMessage) {
groupStyles.push('top');
}
if (isBottomMessage) {
if (isTopMessage || message.type === 'error') {
groupStyles.splice(0, groupStyles.length);
groupStyles.push('single');
} else {
groupStyles.push('bottom');
}
}
if (!isTopMessage && !isBottomMessage) {
if (message.type === 'error') {
groupStyles.splice(0, groupStyles.length);
groupStyles.push('single');
} else {
groupStyles.splice(0, groupStyles.length);
groupStyles.push('middle');
}
}
return groupStyles;
};
exports.getGroupStyle = getGroupStyle;
//# sourceMappingURL=getGroupStyles.js.map