UNPKG

@sendbird/uikit-react

Version:

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

118 lines (115 loc) 5.87 kB
import { a as __awaiter, c as __generator } from '../../chunks/bundle-Bpofr334.js'; import { useCallback } from 'react'; import { G as isImage } from '../../chunks/bundle-BZSLsKkw.js'; import { useGlobalModalContext } from '../../hooks/useModal.js'; import { u as useLocalization } from '../../chunks/bundle-Cdqsdoa8.js'; import { c as compressImages } from '../../chunks/bundle-BfgSx7DM.js'; import { u as useSendbird } from '../../chunks/bundle-4clodtJA.js'; import { c as validateFilesForUpload } from '../../chunks/bundle-B5xkbY4c.js'; import '@sendbird/chat/groupChannel'; import '../../utils/message/getOutgoingMessageState.js'; import '../../chunks/bundle-CglqREVl.js'; import '../../chunks/bundle-lqEjT2ED.js'; import '../../chunks/bundle-BqKoZDqX.js'; import '../../chunks/bundle-JhKiWlXT.js'; import '../../chunks/bundle-DX6fRIJl.js'; import '../../chunks/bundle-C4anRHWY.js'; import 'react-dom'; import '../../chunks/bundle-C2ARCMSL.js'; import '../../ui/IconButton.js'; import '../../ui/Button.js'; import '../../chunks/bundle-Cdplrrlw.js'; import '../../chunks/bundle-oM0Fxt9G.js'; import '../../ui/Icon.js'; import '../../chunks/bundle-LLA95Pqf.js'; import '../../chunks/bundle-DmnXeBdU.js'; import '../../chunks/bundle-B56O1y8C.js'; import '@sendbird/chat'; import '@sendbird/chat/openChannel'; import '../../chunks/bundle-F_R9C4cW.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 = useLocalization().stringSet; var config = 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 = useGlobalModalContext().openModal; var handleUploadFiles = useCallback(function (files) { return __awaiter(void 0, void 0, void 0, function () { var isValid, compressedFiles, sendingFiles, file, imageFiles_1, otherFiles_1; return __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 = 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({ 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 (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; }; export { useHandleUploadFiles }; //# sourceMappingURL=useHandleUploadFiles.js.map