From af3c36b9a1b6326cae7337b699f2adb49fdf5af8 Mon Sep 17 00:00:00 2001 From: Mikhail Kilin Date: Sat, 31 Jan 2026 18:38:47 +0300 Subject: [PATCH] =?UTF-8?q?docs:=20=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB?= =?UTF-8?q?=D1=91=D0=BD=20CONTEXT.md=20=D1=81=20=D0=BE=D0=BF=D0=B8=D1=81?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D0=B5=D0=BC=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Добавлено описание исправлений от 31 января (вечер): - Исправление отображения новых сообщений - Исправление редактирования - Исправление reply - Удаление отладочных логов --- CONTEXT.md | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/CONTEXT.md b/CONTEXT.md index 30c65cb..497ec40 100644 --- a/CONTEXT.md +++ b/CONTEXT.md @@ -598,6 +598,54 @@ let message = MessageBuilder::new(MessageId::new(123)) 2. **P3.10 — Hotkey mapping** — добавить настройку хоткеев в конфиг 3. **Юнит-тесты** — добавить для utils и других модулей +## Недавние исправления + +### 31 января 2026 (вечер) — Критические баги с сообщениями, редактированием и reply +1. **Исправлена проблема с отображением новых сообщений** ✅ + - **Проблема**: Новые сообщения (как отправленные, так и входящие) не появлялись в UI + - **Причина**: Сообщения добавлялись в начало массива (`insert(0)`), но UI показывал конец массива + - **Решение**: Изменён порядок хранения — сообщения теперь добавляются в конец (`push()`) + - **Результат**: Сообщения отображаются корректно в реальном времени + +2. **Исправлено редактирование сообщений** ✅ + - **Проблема**: Ошибка "Message not found" при попытке редактировать + - **Причина**: Метод `get_selected_message()` конвертировал индекс в обратном порядке (старая логика) + - **Решение**: + - Убрана конвертация индекса в `get_selected_message()` + - Исправлена логика выбора: `start_message_selection()` начинает с индекса `len-1` (последнее сообщение) + - Обновлена логика навигации: `select_previous_message()` уменьшает индекс, `select_next_message()` увеличивает + - **Результат**: Редактирование работает без ошибок + +3. **Исправлен reply на сообщения** ✅ + - **Проблема 1**: Reply не отправлялся (нажатие Enter ничего не делало) + - **Причина**: Неправильная структура условий — reply попадал в блок с `selected_message_id`, но не в блок отправки + - **Решение**: Изменена структура условий — проверка `is_editing()` вынесена наружу + - **Проблема 2**: Reply отправлялся, но не показывалось превью исходного сообщения + - **Причина**: Параметр `_reply_info` в `send_message()` не использовался + - **Решение**: Убрано подчёркивание и добавлена логика сохранения `reply_info` в `MessageInfo` после `convert_message()` + - **Результат**: Reply работает корректно с превью исходного сообщения + +4. **Удалены отладочные логи** ✅ + - Удалены временные `eprintln!` из `src/tdlib/client.rs` и `src/input/main_input.rs` + +### 31 января 2026 (утро) — Баги в тестах и работе приложения +1. **Исправлены ошибки компиляции тестов** ✅ + - Исправлены синтаксические ошибки в `tests/delete_message.rs` и `tests/reply_forward.rs` + - Исправлены проблемы с доступом к полям (field vs method) + - Исправлены несоответствия типов (MessageId vs i64) + +2. **Исправлена проблема с загрузкой истории сообщений** ✅ + - Добавлен вызов `open_chat()` перед `get_chat_history()` в `src/tdlib/messages.rs` + - Реализована логика повторных попыток (retry) с задержками для синхронизации TDLib + - Исправлен race condition с установкой `current_chat_id` (теперь устанавливается после загрузки сообщений) + - **Результат**: История загружается корректно с первого раза (проверено: 51 сообщение) + +3. **Уточнена документация по редактированию сообщений** ℹ️ + - **Проблема**: Пользователь нажимал 'r' (reply) вместо Enter при попытке редактировать + - **Правильный процесс**: ↑ (выбор) → Enter (начать редактирование) → изменить текст → Enter (сохранить) + - **Ошибочный процесс**: ↑ (выбор) → 'r' (начинается режим Reply!) → текст отправляется как ответ + - Добавлены инструкции в документацию для избежания путаницы + ## Известные проблемы 1. При первом запуске нужно пройти авторизацию