Chat basis

This commit is contained in:
2024-05-26 01:21:08 +08:00
parent 657f36c1f8
commit 5b45718ebd
16 changed files with 379 additions and 28 deletions

View File

@@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:solian/models/account.dart';
import 'package:solian/models/realm.dart';
class Channel {
int id;
@@ -13,6 +14,7 @@ class Channel {
int type;
Account account;
int accountId;
Realm? realm;
int? realmId;
bool isEncrypted;
@@ -30,6 +32,7 @@ class Channel {
required this.account,
required this.accountId,
required this.isEncrypted,
this.realm,
this.realmId,
});
@@ -44,6 +47,7 @@ class Channel {
type: json['type'],
account: Account.fromJson(json['account']),
accountId: json['account_id'],
realm: json['realm'] != null ? Realm.fromJson(json['realm']) : null,
realmId: json['realm_id'],
isEncrypted: json['is_encrypted'],
);
@@ -57,8 +61,9 @@ class Channel {
'name': name,
'description': description,
'type': type,
'account': account,
'account': account.toJson(),
'account_id': accountId,
'realm': realm?.toJson(),
'realm_id': realmId,
'is_encrypted': isEncrypted,
};

View File

@@ -8,7 +8,7 @@ class Message {
DateTime createdAt;
DateTime updatedAt;
DateTime? deletedAt;
String rawContent;
Map<String, dynamic> content;
Map<String, dynamic>? metadata;
String type;
List<String>? attachments;
@@ -21,16 +21,12 @@ class Message {
bool isSending = false;
Map<String, dynamic> get decodedContent {
return jsonDecode(utf8.fuse(base64).decode(rawContent));
}
Message({
required this.id,
required this.createdAt,
required this.updatedAt,
this.deletedAt,
required this.rawContent,
required this.content,
required this.metadata,
required this.type,
this.attachments,
@@ -47,14 +43,16 @@ class Message {
createdAt: DateTime.parse(json['created_at']),
updatedAt: DateTime.parse(json['updated_at']),
deletedAt: json['deleted_at'],
rawContent: json['content'],
content: json['content'],
metadata: json['metadata'],
type: json['type'],
attachments: json['attachments'],
channel: Channel.fromJson(json['channel']),
sender: Sender.fromJson(json['sender']),
replyId: json['reply_id'],
replyTo: json['reply_to'] != null ? Message.fromJson(json['reply_to']) : null,
replyTo: json['reply_to'] != null
? Message.fromJson(json['reply_to'])
: null,
channelId: json['channel_id'],
senderId: json['sender_id'],
);
@@ -64,7 +62,7 @@ class Message {
'created_at': createdAt.toIso8601String(),
'updated_at': updatedAt.toIso8601String(),
'deleted_at': deletedAt,
'content': rawContent,
'content': content,
'metadata': metadata,
'type': type,
'attachments': attachments,

View File

@@ -10,7 +10,7 @@ class Realm {
String description;
bool isPublic;
bool isCommunity;
int accountId;
int? accountId;
Realm({
required this.id,
@@ -22,14 +22,16 @@ class Realm {
required this.description,
required this.isPublic,
required this.isCommunity,
required this.accountId,
this.accountId,
});
factory Realm.fromJson(Map<String, dynamic> json) => Realm(
id: json['id'],
createdAt: DateTime.parse(json['created_at']),
updatedAt: DateTime.parse(json['updated_at']),
deletedAt: json['deleted_at'] != null ? DateTime.parse(json['deleted_at']) : null,
deletedAt: json['deleted_at'] != null
? DateTime.parse(json['deleted_at'])
: null,
alias: json['alias'],
name: json['name'],
description: json['description'],
@@ -77,7 +79,9 @@ class RealmMember {
id: json['id'],
createdAt: DateTime.parse(json['created_at']),
updatedAt: DateTime.parse(json['updated_at']),
deletedAt: json['deleted_at'] != null ? DateTime.parse(json['deleted_at']) : null,
deletedAt: json['deleted_at'] != null
? DateTime.parse(json['deleted_at'])
: null,
realmId: json['realm_id'],
accountId: json['account_id'],
account: Account.fromJson(json['account']),