@uimkit/uikit-react
Version:
<img style="width:64px" src="https://mgmt.uimkit.chat/media/img/avatar.png"/>
119 lines (116 loc) • 6 kB
JavaScript
import { __awaiter, __generator, __assign } from 'tslib';
import { useRef, useEffect } from 'react';
import { useTranslationContext } from '../../../context/TranslationContext.js';
import { useUIKit } from '../../../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';
import { CONSTANT_DISPATCH_TYPE } from '../../../constants.js';
import '@emoji-mart/data';
import '../../../types/models.js';
import '../../../types/events.js';
import 'emoji-mart';
import '../../../context/EmojiContext.js';
import '../../EmptyStateIndicator/EmptyStateIndicator.js';
import '../../Icon/type.js';
import '../../Icon/config.js';
import './useHandleQuoteMessage.js';
import '@emoji-mart/data/i18n/zh.json';
import '@emoji-mart/data/i18n/en.json';
import '../../Plugins/index.js';
import '../../EmoticonItem/EmoticonItem.js';
import '../../UICommandItem/UICommandItem.js';
import '../../../node_modules/.pnpm/lodash.throttle@4.1.1/node_modules/lodash.throttle/index.js';
import '../../UIUserItem/UIUserItem.js';
import '../../../node_modules/.pnpm/react-popper@2.3.0_r6q5zrenym2zg7je7hgi674bti/node_modules/react-popper/lib/esm/Manager.js';
import 'react-dom';
import '../../../node_modules/.pnpm/warning@4.0.3/node_modules/warning/warning.js';
import '../../../node_modules/.pnpm/react-dropzone@14.2.3_react@18.2.0/node_modules/react-dropzone/dist/es/index.js';
import '../../UIChatAutoComplete/UIChatAutoComplete.js';
var useSubmitHandler = function (props, state, dispatch) {
var clearEditingState = props.clearEditingState, message = props.message, overrideSubmitHandler = props.overrideSubmitHandler;
var mentioned_users = state.mentioned_users, text = state.text;
var activeConversation = useUIKit('useSubmitHandler').activeConversation;
var _a = useChatActionContext('useSubmitHandler'), editMessage = _a.editMessage, sendMessage = _a.sendMessage, createTextMessage = _a.createTextMessage;
useTranslationContext('useSubmitHandler').t;
var textReference = useRef({ hasChanged: false, initialText: text });
useEffect(function () {
if (!textReference.current.initialText.length) {
textReference.current.initialText = text;
return;
}
textReference.current.hasChanged = text !== textReference.current.initialText;
}, [text]);
// const { cloudCustomData } = useHandleQuoteMessage();
var handleSubmit = function (event) { return __awaiter(void 0, void 0, void 0, function () {
var trimmedMessage, isEmptyMessage, actualMentionedUsers, updatedMessage, message_1, err_2;
var _a;
return __generator(this, function (_b) {
switch (_b.label) {
case 0:
event === null || event === void 0 ? void 0 : event.preventDefault();
if (!state.text) {
return [2 /*return*/];
}
trimmedMessage = text.trim();
isEmptyMessage = trimmedMessage === '';
if (isEmptyMessage)
return [2 /*return*/];
actualMentionedUsers = Array.from(new Set(mentioned_users.filter(function (_a) {
var id = _a.id, name = _a.name;
return text.includes("@".concat(id)) || text.includes("@".concat(name));
})));
updatedMessage = {
mentioned_users: actualMentionedUsers,
text: text,
};
if (!message) return [3 /*break*/, 5];
_b.label = 1;
case 1:
_b.trys.push([1, 3, , 4]);
return [4 /*yield*/, editMessage(message)];
case 2:
_b.sent();
clearEditingState === null || clearEditingState === void 0 ? void 0 : clearEditingState();
dispatch({ type: CONSTANT_DISPATCH_TYPE.CLEAR });
return [3 /*break*/, 4];
case 3:
_b.sent();
return [3 /*break*/, 4];
case 4: return [3 /*break*/, 11];
case 5:
_b.trys.push([5, 10, , 11]);
dispatch({ type: CONSTANT_DISPATCH_TYPE.CLEAR });
if (!overrideSubmitHandler) return [3 /*break*/, 7];
return [4 /*yield*/, overrideSubmitHandler(updatedMessage, activeConversation.id)];
case 6:
_b.sent();
return [3 /*break*/, 9];
case 7:
message_1 = (_a = createTextMessage(__assign({}, updatedMessage))) !== null && _a !== void 0 ? _a : updatedMessage;
return [4 /*yield*/, sendMessage(message_1)];
case 8:
_b.sent();
_b.label = 9;
case 9: return [3 /*break*/, 11];
case 10:
err_2 = _b.sent();
console.error(err_2);
dispatch({
type: CONSTANT_DISPATCH_TYPE.SET_TEXT,
getNewText: function () { return text; },
});
actualMentionedUsers === null || actualMentionedUsers === void 0 ? void 0 : actualMentionedUsers.forEach(function (user) {
dispatch({ type: CONSTANT_DISPATCH_TYPE.ADD_MENTIONED_USER, user: user });
});
return [3 /*break*/, 11];
case 11: return [2 /*return*/];
}
});
}); };
return { handleSubmit: handleSubmit };
};
export { useSubmitHandler };
//# sourceMappingURL=useSubmitHandler.js.map