Mikhail Kilin
|
3c8fec7ca6
|
refactor: integrate validation utils and complete refactoring #1
Завершена интеграция validation utils во всех местах проверки user input:
Changes:
- src/utils/mod.rs: раскомментирован экспорт validation::*
- src/input/auth.rs: 3 замены .is_empty() -> is_non_empty()
* phone_input validation (line 18)
* code_input validation (line 50)
* password_input validation (line 82)
- src/input/main_input.rs: 1 замена для message_input (line 484)
- src/main.rs: заменён последний прямой timeout на with_timeout_ignore
Documentation:
- REFACTORING_OPPORTUNITIES.md: обновлён статус категории #1
* Отмечено как "ПОЛНОСТЬЮ ЗАВЕРШЕНО" (2026-02-02)
* Добавлены метрики: 100% покрытие retry utils, 0 прямых timeouts
* Обновлён план выполнения: фаза 1 завершена
- CONTEXT.md: добавлен раздел об интеграции validation utils
Result:
✅ Категория #1 (Дублирование кода) - ПОЛНОСТЬЮ ЗАВЕРШЕНА!
- retry utils: 100% покрытие (8+ мест)
- modal_handler: 2 диалога
- validation: 4 места
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-02 17:38:49 +03:00 |
|
Mikhail Kilin
|
0768283e8a
|
refactor: eliminate code duplication - extract helpers and use retry utils
Extracted duplicate code and unified timeout handling across the codebase.
Changes:
- Extracted open_chat_and_load_data() function (eliminates 52 lines of duplication)
- Replaced manual y/н/Enter handling with handle_yes_no() from modal_handler (2 places)
- Replaced 7 direct tokio::time::timeout calls with retry utils (auth, main_input, main)
- Added with_timeout_ignore() for non-critical operations
- Fixed modal_handler.rs bug: corrected Russian 'y' key (д → н)
- Removed unused imports in handlers/mod.rs and utils/mod.rs
Impact:
- main_input.rs: 1164 → 958 lines (-206 lines, -18%)
- Code duplication: 52 lines eliminated
- Direct timeout calls: 7 → 1 (-86%)
- DRY principle applied throughout
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-02 14:20:33 +03:00 |
|
Mikhail Kilin
|
8e48d076de
|
refactor: implement trait-based DI for TdClient and fix stack overflow
Implement complete trait-based dependency injection pattern for TdClient
to enable testing with FakeTdClient mock. Fix critical stack overflow bugs
caused by infinite recursion in trait implementations.
Breaking Changes:
- App is now generic: App<T: TdClientTrait = TdClient>
- All UI and input handlers are generic over TdClientTrait
- TdClient methods now accessed through trait interface
New Files:
- src/tdlib/trait.rs: TdClientTrait definition with 40+ methods
- src/tdlib/client_impl.rs: TdClientTrait impl for TdClient
- tests/helpers/fake_tdclient_impl.rs: TdClientTrait impl for FakeTdClient
Critical Fixes:
- Fix stack overflow in send_message, edit_message, delete_messages
- Fix stack overflow in forward_messages, current_chat_messages
- Fix stack overflow in current_pinned_message
- All methods now call message_manager directly to avoid recursion
Testing:
- FakeTdClient supports configurable auth_state for auth screen tests
- Added pinned message support in FakeTdClient
- All 196+ tests passing (188 tests + 8 benchmarks)
Dependencies:
- Added async-trait = "0.1"
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-02 05:42:19 +03:00 |
|
Mikhail Kilin
|
ed5a4f9c72
|
refactor: complete UI components - implement message_bubble.rs
CI / Check (pull_request) Has been cancelled
CI / Format (pull_request) Has been cancelled
CI / Clippy (pull_request) Has been cancelled
CI / Build (macos-latest) (pull_request) Has been cancelled
CI / Build (ubuntu-latest) (pull_request) Has been cancelled
CI / Build (windows-latest) (pull_request) Has been cancelled
Finalize Priority 3 UI components refactoring (5/5 complete):
- Create message_bubble.rs (437 lines) with 3 rendering functions:
* render_date_separator() - centered date separators
* render_sender_header() - sender headers (incoming/outgoing)
* render_message_bubble() - messages with forward/reply/reactions
- Simplify messages.rs by removing ~300 lines:
* Use message_grouping::group_messages() for logic
* Use UI components for rendering
* Cleaner separation of concerns
- Update module exports and main.rs
All 196 tests passing (188 tests + 8 benchmarks). No regressions.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-02 03:41:03 +03:00 |
|
Mikhail Kilin
|
2b04b785c0
|
refactor: cleanup unused code and warnings
CI / Check (pull_request) Has been cancelled
CI / Format (pull_request) Has been cancelled
CI / Clippy (pull_request) Has been cancelled
CI / Build (macos-latest) (pull_request) Has been cancelled
CI / Build (ubuntu-latest) (pull_request) Has been cancelled
CI / Build (windows-latest) (pull_request) Has been cancelled
Comprehensive cleanup of unused methods, dead code, and compiler warnings:
## Removed Methods (15):
- Duplicate delegation methods: is_authenticated, get_typing_text, get_user_name from TdClient
- Obsolete methods: TdClient::init() (duplicated in main.rs)
- Unused getters: UserCache::{get_username, get_name, get_user_id_by_chat}
- Unused builder methods: MessageBuilder::{edited, add_reaction}
- Unused utility: ChatState::is_normal()
- Dead code: HotkeysConfig::{matches, key_matches} (kept for tests)
- Unused method: UserCache::register_private_chat()
- Getter replaced with direct field access: MessageInfo::edit_date()
## Removed Module:
- error.rs - Unused error handling module (TeletuiError, ErrorVariant, IntoTeletuiError)
## Removed Constants (8):
- EMOJI_PICKER_COLUMNS, EMOJI_PICKER_ROWS, MAX_INPUT_HEIGHT
- MIN_TERMINAL_WIDTH, MIN_TERMINAL_HEIGHT
- TDLIB_CHAT_LIMIT, MAX_USERNAME_DISPLAY_LENGTH, MESSAGE_TEXT_INDENT
## Fixed Warnings:
- Removed unused imports (8 instances)
- Fixed unreachable patterns (10 instances)
- Fixed irrefutable if let patterns (2 instances)
- Fixed unused variables (1 instance)
- Removed dead_code annotations where appropriate
## Improvements:
- Integrated Config::load_credentials() into TdClient::new() for better credential management
- Replaced edit_date() getter with direct field access (message.metadata.edit_date)
- Updated tests to use direct field access instead of removed getters
## Test Results:
All tests passing: 499 passed, 0 failed
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-01 18:57:55 +03:00 |
|
Mikhail Kilin
|
09c5c5674e
|
feat: add structured logging with tracing (P5.17)
CI / Check (pull_request) Has been cancelled
CI / Format (pull_request) Has been cancelled
CI / Clippy (pull_request) Has been cancelled
CI / Build (macos-latest) (pull_request) Has been cancelled
CI / Build (ubuntu-latest) (pull_request) Has been cancelled
CI / Build (windows-latest) (pull_request) Has been cancelled
Replaced eprintln! with tracing for structured logging:
- Added dependencies: tracing, tracing-subscriber (with env-filter)
- Initialized subscriber in main.rs with default warn level
- Replaced all eprintln! calls in src/config.rs with tracing macros:
* warn!() for warnings (4 occurrences)
* error!() for validation errors (1 occurrence)
- Configurable log levels via RUST_LOG environment variable
Benefits:
- Structured logging for better observability
- Configurable log levels without code changes
- Better async integration
- Unified logging approach across the project
🎉🎉🎉 REFACTORING COMPLETE: All 20/20 tasks done (100%)! 🎉🎉🎉
Priority 5: 3/3 tasks ✅ COMPLETE
Total progress: 20/20 tasks (100%) ✅ COMPLETE
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-01 02:29:08 +03:00 |
|
Mikhail Kilin
|
644e36597d
|
fixes
|
2026-01-31 03:48:50 +03:00 |
|
Mikhail Kilin
|
bba5cbd22d
|
fixes
|
2026-01-30 23:55:01 +03:00 |
|
Mikhail Kilin
|
a4cf6bac72
|
fixes
|
2026-01-30 16:18:16 +03:00 |
|
Mikhail Kilin
|
4deb0fbe00
|
commit
|
2026-01-30 15:07:13 +03:00 |
|
Mikhail Kilin
|
051c4a0265
|
fixes
CI / Check (pull_request) Has been cancelled
CI / Format (pull_request) Has been cancelled
CI / Clippy (pull_request) Has been cancelled
CI / Build (macos-latest) (pull_request) Has been cancelled
CI / Build (ubuntu-latest) (pull_request) Has been cancelled
CI / Build (windows-latest) (pull_request) Has been cancelled
|
2026-01-28 01:29:03 +03:00 |
|
Mikhail Kilin
|
4d5625f950
|
add typings in/out
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-27 03:59:49 +03:00 |
|
Mikhail Kilin
|
22c4e17377
|
fixes
|
2026-01-24 02:22:47 +03:00 |
|
Mikhail Kilin
|
c18f43664e
|
fixes
|
2026-01-22 15:26:15 +03:00 |
|
Mikhail Kilin
|
0a9ae8b448
|
fixes
|
2026-01-21 02:49:28 +03:00 |
|
Mikhail Kilin
|
32ab1df1fa
|
fixes
|
2026-01-21 02:27:08 +03:00 |
|
Mikhail Kilin
|
b6d9291864
|
fixes
|
2026-01-20 01:00:12 +03:00 |
|
Mikhail Kilin
|
d701464fde
|
init
|
2026-01-18 11:49:41 +03:00 |
|