UNPKG

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
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