UNPKG

cometchat-react-ui-kit2

Version:

CometChat UI Kit for React App

102 lines (100 loc) 4.2 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.Hooks = void 0; var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof")); var _react = _interopRequireDefault(require("react")); var _Shared = require("../../../Shared"); var _ = require("../../"); var Hooks = function Hooks(props, setImageURL, imageURL, setUnsafe) { var pickImage = function pickImage(thumbnailGenerationObject) { var mediumUrl = thumbnailGenerationObject["url_medium"]; return mediumUrl; }; var downloadImage = function downloadImage(imgUrl) { return new Promise(function (resolve, reject) { var timer; var xhr = new XMLHttpRequest(); xhr.open("GET", imgUrl, true); xhr.responseType = "blob"; xhr.onload = function () { if (xhr.readyState === 4) { if (xhr.status === 200) { timer = null; resolve(imgUrl); } else if (xhr.status === 403) { timer = setTimeout(function () { downloadImage(imgUrl).then(function (response) { return resolve(imgUrl); })["catch"](function (error) { return reject(error); }); }, 800); } } else { reject(xhr.statusText); } }; xhr.onerror = function (event) { return reject(new Error("There was a network error.", event)); }; xhr.ontimeout = function (event) { return reject(new Error("There was a timeout error.", event)); }; xhr.send(); }); }; var setMessageImageUrl = _react["default"].useCallback(function () { return new Promise(function (resolve) { var img = new Image(); if (props.messageObject && props.messageObject.data && props.messageObject.data.attachments && (0, _typeof2["default"])(props.messageObject.data.attachments) === "object" && props.messageObject.data.attachments.length) { var _props$messageObject$; img.src = (_props$messageObject$ = props.messageObject.data.attachments[0]) === null || _props$messageObject$ === void 0 ? void 0 : _props$messageObject$.url; } else if (props.messageObject.data.file && props.messageObject.data.file) { var reader = new FileReader(); reader.onload = function () { img.src = reader.result; }; reader.readAsDataURL(props.messageObject.data.file); } img.onload = function () { return resolve(img.src); }; }); }, [props.messageObject]); _react["default"].useEffect(function () { if (props.imageURL && props.imageURL.length) { setImageURL(props.imageURL); } else if (props.messageObject) { var thumbnailGenerationExtensionData = (0, _Shared.getExtensionsData)(props.messageObject, _Shared.MetadataConstants.extensions.thumbnailGeneration); if (thumbnailGenerationExtensionData && !thumbnailGenerationExtensionData.hasOwnProperty("error")) { var imageToDownload = pickImage(thumbnailGenerationExtensionData); downloadImage(imageToDownload).then(function (response) { var img = new Image(); img.src = imageToDownload; img.onload = function () { return setImageURL(img.src); }; })["catch"](function (error) { _.CometChatMessageEvents.emit(_.CometChatMessageEvents.onMessageError, error); }); } else { setMessageImageUrl().then(function (imageUrl) { if (imageUrl !== imageURL) { setImageURL(imageUrl); } }); } } /**image moderation extension */ var imageModeration = (0, _Shared.getExtensionsData)(props === null || props === void 0 ? void 0 : props.messageObject, _Shared.ExtensionConstants.imageModeration); if ((imageModeration === null || imageModeration === void 0 ? void 0 : imageModeration["unsafe"]) === "yes") { setUnsafe(true); } else { setUnsafe(false); } }, [props, imageURL, props.imageURL, props.messageObject, setImageURL, setMessageImageUrl]); }; exports.Hooks = Hooks;