fix: resolve error when similar texts exist

This commit is contained in:
2026-02-04 09:57:03 +05:00
parent f9f1693e44
commit e29630314c
2 changed files with 11 additions and 2 deletions
+3 -2
View File
@@ -31,6 +31,7 @@
- Редактирование текста прямо в списке - Редактирование текста прямо в списке
- Удаление текста кнопкой "×" - Удаление текста кнопкой "×"
- Автоматическое обновление панелей при изменении текстов - Автоматическое обновление панелей при изменении текстов
- Автоматическая фильтрация пустых текстов и дубликатов
#### 5. Просмотр панелей #### 5. Просмотр панелей
- Единое фоновое изображение в боковой панели (один раз вверху) - Единое фоновое изображение в боковой панели (один раз вверху)
@@ -61,11 +62,11 @@
### Шаг 3: Создание и редактирование текстов ### Шаг 3: Создание и редактирование текстов
1. Пользователь вводит текст для первой панели (например: "links") 1. Пользователь вводит текст для первой панели (например: "links")
2. Нажимает кнопку "Добавить" 2. Нажимает кнопку "Добавить"
3. Текст добавляется в список текстов 3. Текст добавляется в список текстов (пустые тексты и дубликаты автоматически фильтруются)
4. В боковой панели автоматически отображается превью созданной панели 4. В боковой панели автоматически отображается превью созданной панели
5. Пользователь повторяет процесс для других текстов ("about me", "projects", "memes") 5. Пользователь повторяет процесс для других текстов ("about me", "projects", "memes")
6. Все тексты отображаются в списке ниже поля ввода 6. Все тексты отображаются в списке ниже поля ввода
7. Каждый текст в списке можно редактировать прямо в поле ввода 7. Каждый текст в списке можно редактировать прямо в поле ввода (дубликаты автоматически фильтруются)
8. Любой текст можно удалить кнопкой "×" 8. Любой текст можно удалить кнопкой "×"
9. При редактировании или удалении текста автоматически обновляется соответствующая панель 9. При редактировании или удалении текста автоматически обновляется соответствующая панель
+8
View File
@@ -63,11 +63,19 @@
} }
function handleAddText(text: string) { function handleAddText(text: string) {
// Проверяем, что текст не пустой и не дублируется
if (!text.trim()) return;
if (texts.some(t => t.text === text)) return;
texts = [...texts, { id: crypto.randomUUID(), text }]; texts = [...texts, { id: crypto.randomUUID(), text }];
updatePanelsFromTexts(); updatePanelsFromTexts();
} }
function handleUpdateText(id: string, newText: string) { function handleUpdateText(id: string, newText: string) {
// Проверяем, что текст не пустой и не дублируется
if (!newText.trim()) return;
if (texts.some(t => t.id !== id && t.text === newText)) return;
texts = texts.map(t => t.id === id ? { ...t, text: newText } : t); texts = texts.map(t => t.id === id ? { ...t, text: newText } : t);
updatePanelsFromTexts(); updatePanelsFromTexts();
} }