Initial commit: JustAMessenger v0.1.0
Серверная часть (Go): - WebSocket сервер с бинарным протоколом - XChaCha20-Poly1305 шифрование - zstd сжатие с дедупликацией (64KB чанки) - SQLite хранилище (WAL режим) - Управление гильдиями, каналами, ролями - Федерация между серверами (ed25519) - REST API + WebSocket endpoints Клиентская часть (Flutter): - Material Design 3 тёмная тема (Discord-like) - WebSocket соединение с сервером - Экраны: сплэш, логин, домашний, гильдии, чат - Модели: пользователи, гильдии, каналы, сообщения, роли - Сервисы: соединение, API, криптография, тема - Виджеты: иконки гильдий, сообщения, ввод чата - Web сборка (PWA) Документация: - AGENTS.md — контекст для ИИ ассистентов - docs/protocol.md — спецификация протокола
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
class Channel {
|
||||
final String id;
|
||||
final String guildId;
|
||||
final String categoryId;
|
||||
final String name;
|
||||
final String type;
|
||||
final String? topic;
|
||||
final int position;
|
||||
final DateTime createdAt;
|
||||
|
||||
Channel({
|
||||
required this.id,
|
||||
required this.guildId,
|
||||
this.categoryId = '',
|
||||
required this.name,
|
||||
this.type = 'text',
|
||||
this.topic,
|
||||
this.position = 0,
|
||||
DateTime? createdAt,
|
||||
}) : createdAt = createdAt ?? DateTime.now();
|
||||
|
||||
factory Channel.fromJson(Map<String, dynamic> json) {
|
||||
return Channel(
|
||||
id: json['id'] as String,
|
||||
guildId: json['guild_id'] as String,
|
||||
categoryId: json['category_id'] as String? ?? '',
|
||||
name: json['name'] as String,
|
||||
type: json['type'] as String? ?? 'text',
|
||||
topic: json['topic'] as String?,
|
||||
position: json['position'] as int? ?? 0,
|
||||
createdAt: json['created_at'] != null
|
||||
? DateTime.parse(json['created_at'] as String)
|
||||
: DateTime.now(),
|
||||
);
|
||||
}
|
||||
|
||||
bool get isText => type == 'text';
|
||||
bool get isVoice => type == 'voice';
|
||||
bool get isStream => type == 'stream';
|
||||
}
|
||||
Reference in New Issue
Block a user