Исправлено дублирование сообщений в task-чате: защита от двойного Enter/клика по кнопке отправки
This commit is contained in:
@@ -1114,6 +1114,11 @@ const TaskChat = ({ taskId }: TaskChatProps) => {
|
||||
}
|
||||
// В PWA/standalone-режиме Enter вставляет новую строку, отправка — только кнопкой
|
||||
if (isPWAInstalled()) return;
|
||||
// Защита от двойного Enter: если сообщение уже отправляется — игнорируем
|
||||
if (sendMessageMutation.isPending || isUploading) {
|
||||
e.preventDefault();
|
||||
return;
|
||||
}
|
||||
// Явная отправка формы по Enter (нужно для случая файл без текста)
|
||||
const hasContent = form.getValues('message')?.trim() || pendingFiles.length > 0;
|
||||
if (hasContent) {
|
||||
@@ -1181,6 +1186,9 @@ const TaskChat = ({ taskId }: TaskChatProps) => {
|
||||
};
|
||||
|
||||
const onSubmit = async (data: z.infer<typeof messageSchema>) => {
|
||||
// Защита от повторной отправки при двойном Enter/клике
|
||||
if (sendMessageMutation.isPending || isUploading) return;
|
||||
|
||||
// Анализ текста для поиска @упоминаний типа "@ильяс султанов"
|
||||
const mentionMatches = data.message.match(/@[а-яё\w\u00C0-\u024F\u1E00-\u1EFF\s]+/gi);
|
||||
let finalMentionedIds = [...(data.mentionedUserIds || [])];
|
||||
|
||||
Reference in New Issue
Block a user