UNPKG

@sendbird/uikit-react

Version:

Sendbird UIKit for React: A feature-rich and customizable chat UI kit with messaging, channel management, and user authentication.

120 lines (116 loc) 5.97 kB
'use strict'; var _tslib = require('../../chunks/bundle-jAsAzWpU.js'); var React = require('react'); var index = require('../../chunks/bundle-CskFALvU.js'); var hooks_useModal = require('../../hooks/useModal.js'); var LocalizationContext = require('../../chunks/bundle-ClT0IexP.js'); var compressImages = require('../../chunks/bundle-2FCFe95u.js'); var useSendbird = require('../../chunks/bundle-on0zTbLT.js'); var fileValidation = require('../../chunks/bundle-Hqqb920S.js'); require('@sendbird/chat/groupChannel'); require('../../utils/message/getOutgoingMessageState.js'); require('../../chunks/bundle-BVn2UMtk.js'); require('../../chunks/bundle-DvHjgbFi.js'); require('../../chunks/bundle-DS7dko_G.js'); require('../../chunks/bundle-DZN-28o5.js'); require('../../chunks/bundle-1F9guuKw.js'); require('../../chunks/bundle-BFmC2V1o.js'); require('react-dom'); require('../../chunks/bundle-DDUAkmTu.js'); require('../../ui/IconButton.js'); require('../../ui/Button.js'); require('../../chunks/bundle-DxZzcGya.js'); require('../../chunks/bundle-D-_6Kk3L.js'); require('../../ui/Icon.js'); require('../../chunks/bundle-BNgfU9I_.js'); require('../../chunks/bundle-BXuNw6bR.js'); require('../../chunks/bundle-Buar9ys-.js'); require('@sendbird/chat'); require('@sendbird/chat/openChannel'); require('../../chunks/bundle-CZmT_dIf.js'); var useHandleUploadFiles = function (_a, _b) { var sendFileMessage = _a.sendFileMessage, sendMultipleFilesMessage = _a.sendMultipleFilesMessage, quoteMessage = _a.quoteMessage, acceptableMimeTypes = _a.acceptableMimeTypes; var logger = _b.logger; var stringSet = LocalizationContext.useLocalization().stringSet; var config = useSendbird.useSendbird().state.config; var imageCompression = config.imageCompression; var uikitUploadSizeLimit = config === null || config === void 0 ? void 0 : config.uikitUploadSizeLimit; var uikitMultipleFilesMessageLimit = config === null || config === void 0 ? void 0 : config.uikitMultipleFilesMessageLimit; var openModal = hooks_useModal.useGlobalModalContext().openModal; var handleUploadFiles = React.useCallback(function (files) { return _tslib.__awaiter(void 0, void 0, void 0, function () { var isValid, compressedFiles, sendingFiles, file, imageFiles_1, otherFiles_1; return _tslib.__generator(this, function (_a) { switch (_a.label) { case 0: // Validate Parameters if (!sendFileMessage || !sendMultipleFilesMessage) { logger.warning('Channel|useHandleUploadFiles: required functions are undefined', { sendFileMessage: sendFileMessage, sendMultipleFilesMessage: sendMultipleFilesMessage }); return [2 /*return*/]; } isValid = fileValidation.validateFilesForUpload({ files: files, uikitUploadSizeLimit: uikitUploadSizeLimit, uikitMultipleFilesMessageLimit: uikitMultipleFilesMessageLimit, acceptableMimeTypes: acceptableMimeTypes, openModal: openModal, stringSet: stringSet, logger: logger, logTag: 'Channel|useHandleUploadFiles', }); if (!isValid) return [2 /*return*/]; return [4 /*yield*/, compressImages.compressImages({ files: files, imageCompression: imageCompression, logger: logger, })]; case 1: compressedFiles = (_a.sent()).compressedFiles; sendingFiles = compressedFiles; // Send File Message if (sendingFiles.length === 1) { logger.info('Channel|useHandleUploadFiles: sending one file.'); file = sendingFiles[0]; sendFileMessage(file, quoteMessage); } else if (sendingFiles.length > 1) { logger.info('Channel|useHandleUploadFiles: sending multiple files.'); imageFiles_1 = []; otherFiles_1 = []; sendingFiles.forEach(function (file) { if (index.isImage(file.type)) { imageFiles_1.push(file); } else { otherFiles_1.push(file); } }); return [2 /*return*/, otherFiles_1.reduce(function (previousPromise, item) { return previousPromise.then(function () { return sendFileMessage(item, quoteMessage); }); }, (function () { if (imageFiles_1.length === 0) { return Promise.resolve(); } else if (imageFiles_1.length === 1) { return sendFileMessage(imageFiles_1[0], quoteMessage); } else { return sendMultipleFilesMessage(imageFiles_1, quoteMessage); } })())]; } return [2 /*return*/]; } }); }); }, [ sendFileMessage, sendMultipleFilesMessage, quoteMessage, acceptableMimeTypes, ]); return handleUploadFiles; }; exports.useHandleUploadFiles = useHandleUploadFiles; //# sourceMappingURL=useHandleUploadFiles.js.map