Flutter Client / Logic Layers
Провайдеры управления состоянием
Бизнес-логика интерфейса на базе ChangeNotifier.
AuthProvider
Файл: lib/logic/auth_provider.dart
Управляет авторизационным состоянием приложения:
- Хранит информацию о текущем авторизованном пользователе и JWT токене.
- Отвечает за логику входа по логину/паролю и TOTP.
- Реализует локальную блокировку приложения (пин-код, FaceID/TouchID).
- Хранит расшифрованный X25519 приватный ключ в оперативной памяти (в незашифрованном виде на диске он никогда не хранится).
ContactProvider
Файл: lib/logic/contact_provider.dart
Основной провайдер, координирующий работу чатов и сообщений:
- Загружает список активных диалогов пользователя при старте.
- Подключается к WebSocket и слушает события реального времени.
- Отправляет текстовые и медиа сообщения, отслеживает их статус отправки (появление ACK с сервера).
- Управляет статусом «Печатает...» (отправляет уведомления и слушает события печати от собеседников).