[StreamChatPersistence] Add initial implementation
Signed-off-by: Sahil Kumar <[email protected]>
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
import 'package:stream_chat/stream_chat.dart';
|
||||
import 'user_mapper.dart';
|
||||
import 'package:stream_chat_persistence/src/db/moor_chat_database.dart';
|
||||
|
||||
///
|
||||
extension ChannelEntityX on ChannelEntity {
|
||||
///
|
||||
ChannelModel toChannelModel({User createdBy}) {
|
||||
final config = ChannelConfig.fromJson(this.config ?? {});
|
||||
return ChannelModel(
|
||||
id: id,
|
||||
config: config,
|
||||
type: type,
|
||||
frozen: frozen,
|
||||
createdAt: createdAt,
|
||||
updatedAt: updatedAt,
|
||||
memberCount: memberCount,
|
||||
cid: cid,
|
||||
lastMessageAt: lastMessageAt,
|
||||
deletedAt: deletedAt,
|
||||
extraData: extraData,
|
||||
createdBy: createdBy,
|
||||
);
|
||||
}
|
||||
|
||||
///
|
||||
ChannelState toChannelState({
|
||||
User createdBy,
|
||||
List<Member> members,
|
||||
List<Read> reads,
|
||||
List<Message> messages,
|
||||
}) {
|
||||
return ChannelState(
|
||||
members: members,
|
||||
read: reads,
|
||||
messages: messages,
|
||||
channel: toChannelModel(createdBy: createdBy),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
///
|
||||
extension ChannelModelX on ChannelModel {
|
||||
///
|
||||
ChannelEntity toEntity() {
|
||||
return ChannelEntity(
|
||||
id: id,
|
||||
type: type,
|
||||
cid: cid,
|
||||
config: config.toJson(),
|
||||
frozen: frozen,
|
||||
lastMessageAt: lastMessageAt,
|
||||
createdAt: createdAt,
|
||||
updatedAt: updatedAt,
|
||||
deletedAt: deletedAt,
|
||||
memberCount: memberCount,
|
||||
createdById: createdBy.id,
|
||||
extraData: extraData,
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
import 'package:stream_chat/stream_chat.dart';
|
||||
import 'user_mapper.dart';
|
||||
import 'package:stream_chat_persistence/src/db/moor_chat_database.dart';
|
||||
|
||||
///
|
||||
extension ConnectionEventX on ConnectionEventEntity {
|
||||
///
|
||||
Event toEvent({User user}) {
|
||||
return Event(
|
||||
me: user,
|
||||
totalUnreadCount: totalUnreadCount,
|
||||
unreadChannels: unreadChannels,
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
export 'user_mapper.dart';
|
||||
export 'reaction_mapper.dart';
|
||||
export 'channel_mapper.dart';
|
||||
export 'event_mapper.dart';
|
||||
export 'member_mapper.dart';
|
||||
export 'read_mapper.dart';
|
||||
export 'message_mapper.dart';
|
||||
@@ -0,0 +1,43 @@
|
||||
import 'package:stream_chat/stream_chat.dart';
|
||||
import 'package:stream_chat_persistence/src/db/moor_chat_database.dart';
|
||||
import 'user_mapper.dart';
|
||||
|
||||
///
|
||||
extension MemberEntityX on MemberEntity {
|
||||
///
|
||||
Member toMember({User user}) {
|
||||
return Member(
|
||||
user: user,
|
||||
userId: userId,
|
||||
banned: banned,
|
||||
shadowBanned: shadowBanned,
|
||||
updatedAt: updatedAt,
|
||||
createdAt: createdAt,
|
||||
role: role,
|
||||
inviteAcceptedAt: inviteAcceptedAt,
|
||||
invited: invited,
|
||||
inviteRejectedAt: inviteRejectedAt,
|
||||
isModerator: isModerator,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
///
|
||||
extension MemberX on Member {
|
||||
///
|
||||
MemberEntity toEntity({String cid}) {
|
||||
return MemberEntity(
|
||||
userId: user?.id,
|
||||
banned: banned,
|
||||
shadowBanned: shadowBanned,
|
||||
channelCid: cid,
|
||||
createdAt: createdAt,
|
||||
isModerator: isModerator,
|
||||
inviteRejectedAt: inviteRejectedAt,
|
||||
invited: invited,
|
||||
inviteAcceptedAt: inviteAcceptedAt,
|
||||
role: role,
|
||||
updatedAt: updatedAt,
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:stream_chat/stream_chat.dart';
|
||||
import 'package:stream_chat_persistence/src/db/moor_chat_database.dart';
|
||||
|
||||
///
|
||||
extension MessageEntityX on MessageEntity {
|
||||
///
|
||||
Message toMessage({
|
||||
User user,
|
||||
List<Reaction> latestReactions,
|
||||
List<Reaction> ownReactions,
|
||||
Message quotedMessage,
|
||||
}) {
|
||||
return Message(
|
||||
shadowed: shadowed,
|
||||
latestReactions: latestReactions,
|
||||
ownReactions: ownReactions,
|
||||
attachments: attachments?.map((it) {
|
||||
final json = jsonDecode(it);
|
||||
return Attachment.fromJson(json);
|
||||
})?.toList(),
|
||||
createdAt: createdAt,
|
||||
extraData: extraData,
|
||||
updatedAt: updatedAt,
|
||||
id: id,
|
||||
type: type,
|
||||
status: status,
|
||||
command: command,
|
||||
parentId: parentId,
|
||||
quotedMessageId: quotedMessageId,
|
||||
quotedMessage: quotedMessage,
|
||||
reactionCounts: reactionCounts,
|
||||
reactionScores: reactionScores,
|
||||
replyCount: replyCount,
|
||||
showInChannel: showInChannel,
|
||||
text: messageText,
|
||||
user: user,
|
||||
deletedAt: deletedAt,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
///
|
||||
extension MessageX on Message {
|
||||
///
|
||||
MessageEntity toEntity({String cid}) {
|
||||
return MessageEntity(
|
||||
id: id,
|
||||
attachments: attachments.map((it) => jsonEncode(it)).toList(),
|
||||
channelCid: cid,
|
||||
type: type,
|
||||
parentId: parentId,
|
||||
quotedMessageId: quotedMessageId,
|
||||
command: command,
|
||||
createdAt: createdAt,
|
||||
shadowed: shadowed,
|
||||
showInChannel: showInChannel,
|
||||
replyCount: replyCount,
|
||||
reactionScores: reactionScores,
|
||||
reactionCounts: reactionCounts,
|
||||
status: status,
|
||||
updatedAt: updatedAt,
|
||||
extraData: extraData,
|
||||
userId: user?.id,
|
||||
deletedAt: deletedAt,
|
||||
messageText: text,
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
import 'package:stream_chat/stream_chat.dart';
|
||||
import 'package:stream_chat_persistence/src/db/moor_chat_database.dart';
|
||||
|
||||
///
|
||||
extension ReactionEntityX on ReactionEntity {
|
||||
///
|
||||
Reaction toReaction({User user}) {
|
||||
return Reaction(
|
||||
extraData: extraData,
|
||||
type: type,
|
||||
createdAt: createdAt,
|
||||
userId: userId,
|
||||
user: user,
|
||||
messageId: messageId,
|
||||
score: score,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
///
|
||||
extension ReactionX on Reaction {
|
||||
///
|
||||
ReactionEntity toEntity() {
|
||||
return ReactionEntity(
|
||||
extraData: extraData,
|
||||
type: type,
|
||||
createdAt: createdAt,
|
||||
userId: userId,
|
||||
messageId: messageId,
|
||||
score: score,
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
import 'package:stream_chat/stream_chat.dart';
|
||||
import 'package:stream_chat_persistence/src/db/moor_chat_database.dart';
|
||||
import 'user_mapper.dart';
|
||||
|
||||
///
|
||||
extension ReadEntityX on ReadEntity {
|
||||
///
|
||||
Read toRead({User user}) {
|
||||
return Read(
|
||||
user: user,
|
||||
lastRead: lastRead,
|
||||
unreadMessages: unreadMessages,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
///
|
||||
extension ReadX on Read {
|
||||
///
|
||||
ReadEntity toEntity({String cid}) {
|
||||
return ReadEntity(
|
||||
lastRead: lastRead,
|
||||
userId: user?.id,
|
||||
channelCid: cid,
|
||||
unreadMessages: unreadMessages,
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
import 'package:stream_chat/stream_chat.dart';
|
||||
import 'package:stream_chat_persistence/src/db/moor_chat_database.dart';
|
||||
|
||||
///
|
||||
extension UserEntityX on UserEntity {
|
||||
///
|
||||
User toUser() {
|
||||
return User(
|
||||
id: id,
|
||||
updatedAt: updatedAt,
|
||||
role: role,
|
||||
online: online,
|
||||
lastActive: lastActive,
|
||||
extraData: extraData,
|
||||
banned: banned,
|
||||
createdAt: createdAt,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
///
|
||||
extension UserX on User {
|
||||
///
|
||||
UserEntity toEntity() {
|
||||
return UserEntity(
|
||||
id: id,
|
||||
role: role,
|
||||
createdAt: createdAt,
|
||||
updatedAt: updatedAt,
|
||||
lastActive: lastActive,
|
||||
online: online,
|
||||
banned: banned,
|
||||
extraData: extraData,
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user