refactor: split main_input.rs into modular handlers (1199→164 lines)
Split monolithic input handler into 5 specialized modules: - handlers/chat.rs (452 lines) - chat keyboard input - handlers/modal.rs (316 lines) - modal dialogs - handlers/chat_list.rs (142 lines) - chat list navigation - handlers/search.rs (140 lines) - search functionality - handlers/compose.rs (80 lines) - forward/reply/edit modes Changes: - main_input.rs: 1199→164 lines (removed 1035 lines, -86%) - Preserved existing handlers: clipboard, global, profile - Created clean router pattern in main_input.rs - Fixed keybinding conflict: Ctrl+I→Ctrl+U for profile - Fixed modifier handling in chat input (ignore Ctrl/Alt chars) - Updated CONTEXT.md with refactoring metrics - Updated ROADMAP.md: Phase 13 Etap 1 marked as DONE Phase 13 Etap 1: COMPLETED (100%) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
34
ROADMAP.md
34
ROADMAP.md
@@ -437,7 +437,7 @@
|
||||
- `src/tdlib/messages.rs` - 833 строки
|
||||
- `src/config/mod.rs` - 642 строки
|
||||
|
||||
### Этап 1: Разбить input/main_input.rs (1199 → <200 строк) [TODO]
|
||||
### Этап 1: Разбить input/main_input.rs (1199 → <200 строк) [DONE ✅]
|
||||
|
||||
**Текущая проблема:**
|
||||
- Весь input handling в одном файле
|
||||
@@ -445,34 +445,38 @@
|
||||
- Невозможно быстро найти нужный handler
|
||||
|
||||
**План:**
|
||||
- [ ] Создать `src/input/handlers/` директорию
|
||||
- [ ] Создать `handlers/chat.rs` - обработка ввода в открытом чате
|
||||
- [x] Создать `src/input/handlers/` директорию
|
||||
- [x] Создать `handlers/chat.rs` - обработка ввода в открытом чате
|
||||
- Переместить `handle_open_chat_keyboard_input()`
|
||||
- Обработка скролла, выбора сообщений
|
||||
- ~300-400 строк
|
||||
- [ ] Создать `handlers/chat_list.rs` - обработка в списке чатов
|
||||
- **452 строки** (7 функций)
|
||||
- [x] Создать `handlers/chat_list.rs` - обработка в списке чатов
|
||||
- Переместить `handle_chat_list_keyboard_input()`
|
||||
- Навигация по чатам, папки
|
||||
- ~200-300 строк
|
||||
- [ ] Создать `handlers/compose.rs` - режимы edit/reply/forward
|
||||
- **142 строки** (3 функции)
|
||||
- [x] Создать `handlers/compose.rs` - режимы edit/reply/forward
|
||||
- Обработка ввода в режимах редактирования
|
||||
- Input field управление (курсор, backspace, delete)
|
||||
- ~200 строк
|
||||
- [ ] Создать `handlers/modal.rs` - модалки
|
||||
- **80 строк** (2 функции)
|
||||
- [x] Создать `handlers/modal.rs` - модалки
|
||||
- Delete confirmation
|
||||
- Emoji picker
|
||||
- Profile modal
|
||||
- ~150 строк
|
||||
- [ ] Создать `handlers/search.rs` - поиск
|
||||
- **316 строк** (5 функций)
|
||||
- [x] Создать `handlers/search.rs` - поиск
|
||||
- Search mode в чате
|
||||
- Search mode в списке чатов
|
||||
- ~100 строк
|
||||
- [ ] Обновить `main_input.rs` - только роутинг
|
||||
- **140 строк** (3 функций)
|
||||
- [x] Обновить `main_input.rs` - только роутинг
|
||||
- Определение текущего режима
|
||||
- Делегация в нужный handler
|
||||
- <200 строк
|
||||
- **164 строки** (2 функции)
|
||||
|
||||
**Результат:** 1199 строк → 6 файлов по <400 строк
|
||||
**Результат:** 1199 строк → **164 строки** (удалено 1035 строк, -86%)
|
||||
- Создано 5 новых модулей обработки ввода
|
||||
- Чистый router pattern в main_input.rs
|
||||
- Каждый handler отвечает за свою область
|
||||
- **Дополнительно:** Исправлен конфликт Ctrl+I → Ctrl+U для профиля
|
||||
|
||||
### Этап 2: Уменьшить app/mod.rs (116 функций → traits) [TODO]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user