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