refactor: extract input handlers into separate functions

Упрощение функции handle() в main_input.rs путём извлечения
обработчиков режимов в отдельные функции.

Извлечённые функции:
- handle_profile_mode() - режим профиля с модалкой выхода (~114 строк)
- handle_message_search_mode() - поиск по сообщениям (~73 строки)
- handle_pinned_mode() - закреплённые сообщения (~34 строки)
- handle_reaction_picker_mode() - выбор реакции (~79 строк)
- handle_delete_confirmation() - подтверждение удаления (~53 строки)
- handle_forward_mode() - выбор чата для пересылки (~48 строк)
- handle_chat_search_mode() - поиск по чатам (~32 строки)
- handle_escape_key() - обработка Esc (~25 строк)
- handle_message_selection() - выбор сообщения (~85 строк)

Итого извлечено: ~543 строки из основной функции handle()

Результат:
- handle() сократилась с 891 до ~350 строк (на 61%)
- Каждый режим теперь изолирован и легко тестируется
- Улучшена читаемость и maintainability кода
- Все тесты проходят успешно

Также:
- Обновлён tdlib-rs с 1.1 на 1.2.0
This commit is contained in:
Mikhail Kilin
2026-02-03 16:32:26 +03:00
parent 7b2dd6c9a9
commit 3edbaf2c2b
3 changed files with 631 additions and 524 deletions

12
Cargo.lock generated
View File

@@ -2486,9 +2486,9 @@ dependencies = [
[[package]]
name = "tdlib-rs"
version = "1.1.0"
version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f98c960258301bee0758a669fbe12ad8a97c6e764d2f30c5426eea008eebf2d2"
checksum = "4c309480dcdd6d5dc2f37866d9063fed280780ddfeb51ae3a0adc2b52b0c0bc3"
dependencies = [
"dirs 6.0.0",
"futures-channel",
@@ -2505,18 +2505,18 @@ dependencies = [
[[package]]
name = "tdlib-rs-gen"
version = "1.1.0"
version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "be6a2373951794ddcf612db2cd26fc67d9fb2721a1497e873c06bd87823fae80"
checksum = "ff69c8cab3e5285d2f79f53263077b2cdb12a841b230406e3b1230a345c78968"
dependencies = [
"tdlib-rs-parser",
]
[[package]]
name = "tdlib-rs-parser"
version = "1.1.0"
version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "87cbdfae498e57fb48d380fff8eb5c9c98d4497c998f6de0d30d5d6b12f5358b"
checksum = "20b1c6703d2284b9d4ddb620cd350f726a1c43bb6f7801f4361b55db2421caa8"
[[package]]
name = "tele-tui"