@uimkit/uikit-react
Version:
<img style="width:64px" src="https://mgmt.uimkit.chat/media/img/avatar.png"/>
164 lines (159 loc) • 6.63 kB
JavaScript
;
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