UNPKG

@uimkit/uikit-react

Version:

<img style="width:64px" src="https://mgmt.uimkit.chat/media/img/avatar.png"/>

164 lines (159 loc) 6.63 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var tslib = require('tslib'); var React = require('react'); require('../../../types/models.js'); require('../../../types/events.js'); var constants = require('../../../constants.js'); var index = require('../../Toast/index.js'); require('../../../context/TranslationContext.js'); require('../../../context/UIKitContext.js'); require('../../../context/ComponentContext.js'); var ChatActionContext = require('../../../context/ChatActionContext.js'); require('../../../context/MessageInputContext.js'); require('../../../context/UIMessageContext.js'); require('../../../context/ChatStateContext.js'); var useMessageHandler = function (props) { var message = props.message, handleError = props.handleError; var _a = ChatActionContext.useChatActionContext('useDeleteHandler'), deleteMessage = _a.deleteMessage, operateMessage = _a.operateMessage, revokeMessage = _a.revokeMessage, resendMessage = _a.resendMessage; var handleDelMessage = React.useCallback(function (event) { return tslib.__awaiter(void 0, void 0, void 0, function () { return tslib.__generator(this, function (_a) { event.preventDefault(); if (!(message === null || message === void 0 ? void 0 : message.id)) { return [2 /*return*/]; } try { deleteMessage(message); } catch (error) { if (handleError) { handleError({ functionName: 'deleteMessage', error: error, }); } else { index.Toast({ text: 'Error deleting message', type: 'error' }); throw error; } } return [2 /*return*/]; }); }); }, [message]); var handleRevokeMessage = React.useCallback(function (event) { return tslib.__awaiter(void 0, void 0, void 0, function () { var error_1, text; return tslib.__generator(this, function (_a) { switch (_a.label) { case 0: event.preventDefault(); if (!(message === null || message === void 0 ? void 0 : message.id)) { return [2 /*return*/]; } _a.label = 1; case 1: _a.trys.push([1, 3, , 4]); return [4 /*yield*/, revokeMessage(message)]; case 2: _a.sent(); return [3 /*break*/, 4]; case 3: error_1 = _a.sent(); if (handleError) { handleError({ functionName: 'revokeMessage', error: error_1, }); } else { text = message.flow === constants.MESSAGE_FLOW.OUT ? 'The message recall exceeded the time limit (default 2 minutes)' : 'Error revoke Message'; index.Toast({ text: text, type: 'error' }); throw error_1; } return [3 /*break*/, 4]; case 4: return [2 /*return*/]; } }); }); }, [message]); var handleReplyMessage = React.useCallback(function (event) { var _a; event.preventDefault(); if (!(message === null || message === void 0 ? void 0 : message.id) || !operateMessage) { return; } operateMessage((_a = {}, _a[constants.MESSAGE_OPERATE.QUOTE] = message, _a)); }, [message]); var handleCopyMessage = React.useCallback(function (event) { event.preventDefault(); if (navigator.clipboard) { // clipboard api navigator.clipboard.writeText(message.text); } else { var textarea = document.createElement('textarea'); document.body.appendChild(textarea); // hide textarea textarea.style.position = 'fixed'; textarea.style.clip = 'rect(0 0 0 0)'; textarea.style.top = '10px'; textarea.value = message.text; // select textarea.select(); // copy document.execCommand('copy', true); // remove textarea document.body.removeChild(textarea); } }, [message]); var handleResendMessage = React.useCallback(function (event) { return tslib.__awaiter(void 0, void 0, void 0, function () { var error_2; return tslib.__generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 2, , 3]); return [4 /*yield*/, resendMessage(message)]; case 1: _a.sent(); return [3 /*break*/, 3]; case 2: error_2 = _a.sent(); if (handleError) { handleError({ functionName: 'resendMessage', error: error_2, }); } else { index.Toast({ text: error_2.message, type: 'error' }); throw error_2; } return [3 /*break*/, 3]; case 3: return [2 /*return*/]; } }); }); }, [message]); var handleForWardMessage = React.useCallback(function (event) { return tslib.__awaiter(void 0, void 0, void 0, function () { var _a; return tslib.__generator(this, function (_b) { event.preventDefault(); if (!(message === null || message === void 0 ? void 0 : message.id) || !operateMessage) { return [2 /*return*/]; } operateMessage((_a = {}, _a[constants.MESSAGE_OPERATE.FORWARD] = message, _a)); return [2 /*return*/]; }); }); }, [message]); return { handleDelMessage: handleDelMessage, handleRevokeMessage: handleRevokeMessage, handleReplyMessage: handleReplyMessage, handleCopyMessage: handleCopyMessage, handleResendMessage: handleResendMessage, handleForWardMessage: handleForWardMessage, }; }; exports.useMessageHandler = useMessageHandler; //# sourceMappingURL=useMessageHandler.js.map