stream-chat-react-native-core
Version:
The official React Native and Expo components for Stream Chat, a service for building chat applications
52 lines • 2.06 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useFileAttachmentListSections = void 0;
var _react = require("react");
var _streamChat = require("stream-chat");
var _TranslationContext = require("../../../contexts/translationContext/TranslationContext");
var _getDateString = require("../../../utils/i18n/getDateString");
var getFileAttachments = message => (message.attachments ?? []).filter(attachment => ((0, _streamChat.isFileAttachment)(attachment, attachment?.mime_type ? [attachment.mime_type] : []) || (0, _streamChat.isAudioAttachment)(attachment)) && !(0, _streamChat.isScrapedContent)(attachment));
var useFileAttachmentListSections = messages => {
var _useTranslationContex = (0, _TranslationContext.useTranslationContext)(),
t = _useTranslationContex.t,
tDateTimeParser = _useTranslationContex.tDateTimeParser;
return (0, _react.useMemo)(() => {
if (!messages || messages.length === 0) {
return [];
}
var result = [];
var _loop = function (message) {
var fileAttachments = getFileAttachments(message);
if (fileAttachments.length === 0) {
return 1;
}
var formatted = (0, _getDateString.getDateString)({
date: message.created_at,
t,
tDateTimeParser,
timestampTranslationKey: 'timestamp/FileAttachmentListSection'
});
var title = typeof formatted === 'string' ? formatted : String(formatted ?? '');
var tiles = fileAttachments.map(attachment => ({
attachment,
message
}));
var lastSection = result[result.length - 1];
if (lastSection && lastSection.title === title) {
lastSection.data.push(...tiles);
} else {
result.push({
data: tiles,
title
});
}
};
for (var message of messages) {
if (_loop(message)) continue;
}
return result;
}, [messages, t, tDateTimeParser]);
};
exports.useFileAttachmentListSections = useFileAttachmentListSections;
//# sourceMappingURL=useFileAttachmentListSections.js.map