stream-chat-react-native-core
Version:
The official React Native and Expo components for Stream Chat, a service for building chat applications
101 lines • 3.38 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useMessagePreviewText = void 0;
var _dayjs = _interopRequireDefault(require("dayjs"));
var _useGroupedAttachments = require("./useGroupedAttachments");
var _ChatContext = require("../../contexts/chatContext/ChatContext");
var _TranslationContext = require("../../contexts/translationContext/TranslationContext");
var _useStateStore = require("../../hooks/useStateStore");
var selector = nextValue => ({
name: nextValue.name
});
var useMessagePreviewText = ({
message
}) => {
var _useTranslationContex = (0, _TranslationContext.useTranslationContext)(),
t = _useTranslationContex.t;
var _useChatContext = (0, _ChatContext.useChatContext)(),
client = _useChatContext.client;
var poll = client.polls.fromState(message?.poll_id ?? '');
var _ref = (0, _useStateStore.useStateStore)(poll?.state, selector) ?? {},
pollName = _ref.name;
var _useGroupedAttachment = (0, _useGroupedAttachments.useGroupedAttachments)(message?.attachments),
giphys = _useGroupedAttachment.giphys,
audios = _useGroupedAttachment.audios,
images = _useGroupedAttachment.images,
videos = _useGroupedAttachment.videos,
files = _useGroupedAttachment.files,
voiceRecordings = _useGroupedAttachment.voiceRecordings;
var attachmentsLength = message?.attachments?.length;
var onlyImages = images?.length && images?.length === attachmentsLength;
var onlyVideos = videos?.length && videos?.length === attachmentsLength;
var onlyFiles = files?.length && files?.length === attachmentsLength;
var onlyAudio = audios?.length === attachmentsLength;
var onlyVoiceRecordings = voiceRecordings?.length && voiceRecordings?.length === attachmentsLength;
if (message?.type === 'deleted') {
return t('Message deleted');
}
if (pollName) {
return pollName;
}
if (message?.shared_location) {
if (message?.shared_location?.end_at && new Date(message?.shared_location?.end_at) > new Date()) {
return t('Live Location');
}
return t('Location');
}
if (giphys?.length) {
return t('Giphy');
}
if (message?.text) {
return message.text;
}
if (onlyImages) {
if (images?.length === 1) {
return t('Photo');
} else {
return t('{{count}} Photos', {
count: images?.length
});
}
}
if (onlyVideos) {
if (videos?.length === 1) {
return t('Video');
} else {
return t(`{{count}} Videos`, {
count: videos?.length
});
}
}
if (onlyAudio) {
if (audios?.length === 1) {
return t('Audio');
} else {
return t('{{count}} Audios', {
count: audios?.length
});
}
}
if (onlyVoiceRecordings) {
if (voiceRecordings?.length === 1) {
return t(`Voice message ({{duration}})`, {
duration: _dayjs.default.duration(voiceRecordings?.[0]?.duration ?? 0, 'seconds').format('m:ss')
});
} else {
return t('{{count}} Voice messages', {
count: voiceRecordings?.length
});
}
}
if (onlyFiles && files?.length === 1) {
return files?.[0]?.title;
}
return t('{{count}} Files', {
count: attachmentsLength
});
};
exports.useMessagePreviewText = useMessagePreviewText;
//# sourceMappingURL=useMessagePreviewText.js.map