UNPKG

stream-chat-react-native-core

Version:

The official React Native and Expo components for Stream Chat, a service for building chat applications

118 lines 4.24 kB
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.setupVideoAttachmentPreviewMiddleware = exports.localAttachmentToAttachment = exports.createDraftAttachmentsCompositionMiddleware = exports.createAttachmentsCompositionMiddleware = void 0; var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _streamChat = require("stream-chat"); var _utils = require("../utils/utils"); var _excluded = ["localMetadata"]; var localAttachmentToAttachment = localAttachment => { var localMetadata = localAttachment.localMetadata, attachment = (0, _objectWithoutProperties2.default)(localAttachment, _excluded); if ((0, _streamChat.isLocalImageAttachment)(localAttachment)) { var isRemoteUri = !!attachment.image_url && !(0, _utils.isLocalUrl)(attachment.image_url); if (isRemoteUri) return attachment; return { ...attachment, image_url: localMetadata?.previewUri, localId: localMetadata?.id, originalFile: localMetadata.file }; } else { var _isRemoteUri = !!attachment.asset_url && !(0, _utils.isLocalUrl)(attachment.asset_url); if (_isRemoteUri) return attachment; return { ...attachment, asset_url: localMetadata.file.uri, localId: localMetadata?.id, originalFile: localMetadata.file }; } }; exports.localAttachmentToAttachment = localAttachmentToAttachment; var createAttachmentsCompositionMiddleware = composer => ({ handlers: { compose: ({ state, next, forward }) => { var attachmentManager = composer.attachmentManager; if (!attachmentManager) return forward(); var attachments = (state.message.attachments ?? []).concat(attachmentManager.attachments.filter(attachment => attachment.localMetadata.uploadState !== 'blocked').map(localAttachmentToAttachment)); if (!attachments.length) return forward(); return next({ ...state, localMessage: { ...state.localMessage, attachments: [...attachments] }, message: { ...state.message, attachments: [...attachments] } }); } }, id: 'stream-io/message-composer-middleware/attachments' }); exports.createAttachmentsCompositionMiddleware = createAttachmentsCompositionMiddleware; var createDraftAttachmentsCompositionMiddleware = composer => ({ handlers: { compose: ({ state, next, forward }) => { var attachmentManager = composer.attachmentManager; if (!attachmentManager) return forward(); var attachments = (state.draft.attachments ?? []).concat(attachmentManager.attachments.filter(attachment => attachment.localMetadata.uploadState !== 'blocked').map(localAttachmentToAttachment)); return next({ ...state, draft: { ...state.draft, attachments } }); } }, id: 'stream-io/message-composer-middleware/draft-attachments' }); exports.createDraftAttachmentsCompositionMiddleware = createDraftAttachmentsCompositionMiddleware; var createVideoAttachmentPreviewMiddleware = () => ({ id: 'stream-io/message-composer-ui-middleware/video-attachment-preview', handlers: { prepare: ({ next, forward, state }) => { var attachment = state.attachment; if (!attachment || !(0, _streamChat.isLocalVideoAttachment)(attachment)) { return forward(); } return next({ ...state, attachment: { ...attachment, localMetadata: { ...attachment.localMetadata, previewUri: attachment.thumb_url } } }); } } }); var setupVideoAttachmentPreviewMiddleware = messageComposer => { messageComposer.attachmentManager.preUploadMiddlewareExecutor.insert({ middleware: [createVideoAttachmentPreviewMiddleware()], position: { after: 'stream-io/attachment-manager-middleware/file-upload-config-check' }, unique: true }); }; exports.setupVideoAttachmentPreviewMiddleware = setupVideoAttachmentPreviewMiddleware; //# sourceMappingURL=attachments.js.map