UNPKG

@uimkit/uikit-react

Version:

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

160 lines (157 loc) 6.42 kB
import { __awaiter, __generator } from 'tslib'; import { useCallback } from 'react'; import '../../../types/models.js'; import '../../../types/events.js'; import { MESSAGE_FLOW, MESSAGE_OPERATE } from '../../../constants.js'; import { Toast } from '../../Toast/index.js'; import '../../../context/TranslationContext.js'; import '../../../context/UIKitContext.js'; import '../../../context/ComponentContext.js'; import { useChatActionContext } from '../../../context/ChatActionContext.js'; import '../../../context/MessageInputContext.js'; import '../../../context/UIMessageContext.js'; import '../../../context/ChatStateContext.js'; var useMessageHandler = function (props) { var message = props.message, handleError = props.handleError; var _a = useChatActionContext('useDeleteHandler'), deleteMessage = _a.deleteMessage, operateMessage = _a.operateMessage, revokeMessage = _a.revokeMessage, resendMessage = _a.resendMessage; var handleDelMessage = useCallback(function (event) { return __awaiter(void 0, void 0, void 0, function () { return __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 { Toast({ text: 'Error deleting message', type: 'error' }); throw error; } } return [2 /*return*/]; }); }); }, [message]); var handleRevokeMessage = useCallback(function (event) { return __awaiter(void 0, void 0, void 0, function () { var error_1, text; return __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 === MESSAGE_FLOW.OUT ? 'The message recall exceeded the time limit (default 2 minutes)' : 'Error revoke Message'; Toast({ text: text, type: 'error' }); throw error_1; } return [3 /*break*/, 4]; case 4: return [2 /*return*/]; } }); }); }, [message]); var handleReplyMessage = useCallback(function (event) { var _a; event.preventDefault(); if (!(message === null || message === void 0 ? void 0 : message.id) || !operateMessage) { return; } operateMessage((_a = {}, _a[MESSAGE_OPERATE.QUOTE] = message, _a)); }, [message]); var handleCopyMessage = 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 = useCallback(function (event) { return __awaiter(void 0, void 0, void 0, function () { var error_2; return __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 { Toast({ text: error_2.message, type: 'error' }); throw error_2; } return [3 /*break*/, 3]; case 3: return [2 /*return*/]; } }); }); }, [message]); var handleForWardMessage = useCallback(function (event) { return __awaiter(void 0, void 0, void 0, function () { var _a; return __generator(this, function (_b) { event.preventDefault(); if (!(message === null || message === void 0 ? void 0 : message.id) || !operateMessage) { return [2 /*return*/]; } operateMessage((_a = {}, _a[MESSAGE_OPERATE.FORWARD] = message, _a)); return [2 /*return*/]; }); }); }, [message]); return { handleDelMessage: handleDelMessage, handleRevokeMessage: handleRevokeMessage, handleReplyMessage: handleReplyMessage, handleCopyMessage: handleCopyMessage, handleResendMessage: handleResendMessage, handleForWardMessage: handleForWardMessage, }; }; export { useMessageHandler }; //# sourceMappingURL=useMessageHandler.js.map