android
assets
ios
lib
database
models
activity.dart
activity.freezed.dart
activity.g.dart
auth.dart
auth.freezed.dart
auth.g.dart
badge.dart
chat.dart
chat.freezed.dart
chat.g.dart
file.dart
file.freezed.dart
file.g.dart
post.dart
post.freezed.dart
post.g.dart
realm.dart
realm.freezed.dart
realm.g.dart
sticker.dart
sticker.freezed.dart
sticker.g.dart
user.dart
user.freezed.dart
user.g.dart
wallet.dart
wallet.freezed.dart
wallet.g.dart
pods
screens
services
widgets
firebase_options.dart
main.dart
route.dart
route.gr.dart
linux
macos
web
windows
.gitignore
.metadata
README.md
analysis_options.yaml
build.yaml
devtools_options.yaml
firebase.json
pubspec.lock
pubspec.yaml
138 lines
3.9 KiB
Dart
138 lines
3.9 KiB
Dart
import 'package:freezed_annotation/freezed_annotation.dart';
|
|
import 'package:island/models/file.dart';
|
|
import 'package:island/models/realm.dart';
|
|
import 'package:island/models/user.dart';
|
|
|
|
part 'chat.freezed.dart';
|
|
part 'chat.g.dart';
|
|
|
|
@freezed
|
|
abstract class SnChatRoom with _$SnChatRoom {
|
|
const factory SnChatRoom({
|
|
required String id,
|
|
required String name,
|
|
required String description,
|
|
required int type,
|
|
required bool isPublic,
|
|
required String? pictureId,
|
|
required SnCloudFile? picture,
|
|
required String? backgroundId,
|
|
required SnCloudFile? background,
|
|
required String? realmId,
|
|
required SnRealm? realm,
|
|
required DateTime createdAt,
|
|
required DateTime updatedAt,
|
|
required DateTime? deletedAt,
|
|
required List<SnChatMember>? members,
|
|
}) = _SnChatRoom;
|
|
|
|
factory SnChatRoom.fromJson(Map<String, dynamic> json) =>
|
|
_$SnChatRoomFromJson(json);
|
|
}
|
|
|
|
@freezed
|
|
abstract class SnChatMessage with _$SnChatMessage {
|
|
const factory SnChatMessage({
|
|
required DateTime createdAt,
|
|
required DateTime updatedAt,
|
|
DateTime? deletedAt,
|
|
required String id,
|
|
String? content,
|
|
String? nonce,
|
|
@Default({}) Map<String, dynamic> meta,
|
|
@Default([]) List<String> membersMetioned,
|
|
DateTime? editedAt,
|
|
@Default([]) List<SnCloudFile> attachments,
|
|
@Default([]) List<SnChatReaction> reactions,
|
|
String? repliedMessageId,
|
|
String? forwardedMessageId,
|
|
required String senderId,
|
|
required SnChatMember sender,
|
|
required String chatRoomId,
|
|
}) = _SnChatMessage;
|
|
|
|
factory SnChatMessage.fromJson(Map<String, dynamic> json) =>
|
|
_$SnChatMessageFromJson(json);
|
|
}
|
|
|
|
@freezed
|
|
abstract class SnChatReaction with _$SnChatReaction {
|
|
const factory SnChatReaction({
|
|
required DateTime createdAt,
|
|
required DateTime updatedAt,
|
|
required DateTime? deletedAt,
|
|
required String id,
|
|
required String messageId,
|
|
required String senderId,
|
|
required SnChatMember sender,
|
|
required String symbol,
|
|
required int attitude,
|
|
}) = _SnChatReaction;
|
|
|
|
factory SnChatReaction.fromJson(Map<String, dynamic> json) =>
|
|
_$SnChatReactionFromJson(json);
|
|
}
|
|
|
|
@freezed
|
|
abstract class SnChatMember with _$SnChatMember {
|
|
const factory SnChatMember({
|
|
required DateTime createdAt,
|
|
required DateTime updatedAt,
|
|
required DateTime? deletedAt,
|
|
required String id,
|
|
required String chatRoomId,
|
|
required SnChatRoom? chatRoom,
|
|
required String accountId,
|
|
required SnAccount account,
|
|
required String? nick,
|
|
required int role,
|
|
required int notify,
|
|
required DateTime? joinedAt,
|
|
required bool isBot,
|
|
}) = _SnChatMember;
|
|
|
|
factory SnChatMember.fromJson(Map<String, dynamic> json) =>
|
|
_$SnChatMemberFromJson(json);
|
|
}
|
|
|
|
class MessageChangeAction {
|
|
static const String create = "create";
|
|
static const String update = "update";
|
|
static const String delete = "delete";
|
|
}
|
|
|
|
@freezed
|
|
abstract class MessageChange with _$MessageChange {
|
|
const factory MessageChange({
|
|
required String messageId,
|
|
required String action,
|
|
SnChatMessage? message,
|
|
required DateTime timestamp,
|
|
}) = _MessageChange;
|
|
|
|
factory MessageChange.fromJson(Map<String, dynamic> json) =>
|
|
_$MessageChangeFromJson(json);
|
|
}
|
|
|
|
@freezed
|
|
abstract class MessageSyncResponse with _$MessageSyncResponse {
|
|
const factory MessageSyncResponse({
|
|
@Default([]) List<MessageChange> changes,
|
|
required DateTime currentTimestamp,
|
|
}) = _MessageSyncResponse;
|
|
|
|
factory MessageSyncResponse.fromJson(Map<String, dynamic> json) =>
|
|
_$MessageSyncResponseFromJson(json);
|
|
}
|
|
|
|
@freezed
|
|
abstract class ChatRealtimeJoinResponse with _$ChatRealtimeJoinResponse {
|
|
const factory ChatRealtimeJoinResponse({
|
|
required String token,
|
|
required Map<String, dynamic> config,
|
|
}) = _ChatRealtimeJoinResponse;
|
|
|
|
factory ChatRealtimeJoinResponse.fromJson(Map<String, dynamic> json) =>
|
|
_$ChatRealtimeJoinResponseFromJson(json);
|
|
}
|