Исправлено дублирование сообщений в task-чате: защита от двойного Enter/клика по кнопке отправки

This commit is contained in:
2026-08-24 16:50:05 +03:00
parent 422eafd41f
commit 8b713e66c0
12 changed files with 1674 additions and 1 deletions

View File

@@ -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 || [])];