Flutter Client / Data Layer

Модели данных Flutter

Классы представления данных в Dart. Файлы в папке lib/data/models/

ContactModel (Собеседник/Чат)

Представляет пользователя в списке диалогов. Содержит метаданные чата.

dartcontact_model.dart
class Contact {
  final int id;
  final String username;
  final String name;
  final String? publicKey;
  final String? avatarFileId;
  final String? avatarUrl;
  final String? lastMessage;
  final DateTime? lastMessageTime;
  final int unreadCount;
  final bool online;
  final bool isLastMsgDecrypted; // Флаг успешной расшифровки
  final String? lastMsgType;
  final String? phone;
  // ...
}

MessageModel (Сообщение)

Модель отдельного сообщения. Поле content изначально содержит зашифрованный Base64 шифртекст.

dartmessage_model.dart
class Message {
  final int id;
  final int senderId;
  final int receiverId;
  final String content;        // Текст сообщения (E2EE или plain)
  final DateTime timestamp;
  final DateTime? readAt;
  final int? replyToId;
  final String? replyToText;
  final String messageType;    // text, image, voice_note, video_note, file
  final String? fileId;
  final String? encryptedKey;  // Шифрованный AES-ключ для файла
  final bool isDecrypted;      // Расшифровано ли на клиенте
  // ...
}