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