[Persistence] Add support for pinned messages
Signed-off-by: Sahil Kumar <[email protected]>
This commit is contained in:
@@ -28,11 +28,13 @@ extension ChannelEntityX on ChannelEntity {
|
||||
List<Member> members,
|
||||
List<Read> reads,
|
||||
List<Message> messages,
|
||||
List<Message> pinnedMessages,
|
||||
}) {
|
||||
return ChannelState(
|
||||
members: members,
|
||||
read: reads,
|
||||
messages: messages,
|
||||
pinnedMessages: pinnedMessages,
|
||||
channel: toChannelModel(createdBy: createdBy),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -5,3 +5,4 @@ export 'event_mapper.dart';
|
||||
export 'member_mapper.dart';
|
||||
export 'read_mapper.dart';
|
||||
export 'message_mapper.dart';
|
||||
export 'pinned_message_mapper.dart';
|
||||
|
||||
@@ -8,6 +8,7 @@ extension MessageEntityX on MessageEntity {
|
||||
/// Maps a [MessageEntity] into [Message]
|
||||
Message toMessage({
|
||||
User user,
|
||||
User pinnedBy,
|
||||
List<Reaction> latestReactions,
|
||||
List<Reaction> ownReactions,
|
||||
Message quotedMessage,
|
||||
@@ -37,6 +38,10 @@ extension MessageEntityX on MessageEntity {
|
||||
text: messageText,
|
||||
user: user,
|
||||
deletedAt: deletedAt,
|
||||
pinned: pinned,
|
||||
pinnedAt: pinnedAt,
|
||||
pinExpires: pinExpires,
|
||||
pinnedBy: pinnedBy,
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -67,6 +72,10 @@ extension MessageX on Message {
|
||||
userId: user?.id,
|
||||
deletedAt: deletedAt,
|
||||
messageText: text,
|
||||
pinned: pinned,
|
||||
pinnedAt: pinnedAt,
|
||||
pinExpires: pinExpires,
|
||||
pinnedByUserId: pinnedBy?.id,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,81 @@
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:stream_chat/stream_chat.dart';
|
||||
import 'package:stream_chat_persistence/src/db/moor_chat_database.dart';
|
||||
|
||||
/// Useful mapping functions for [PinnedMessageEntity]
|
||||
extension PinnedMessageEntityX on PinnedMessageEntity {
|
||||
/// Maps a [PinnedMessageEntity] into [Message]
|
||||
Message toMessage({
|
||||
User user,
|
||||
User pinnedBy,
|
||||
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.fromData(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,
|
||||
pinned: pinned,
|
||||
pinnedAt: pinnedAt,
|
||||
pinExpires: pinExpires,
|
||||
pinnedBy: pinnedBy,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/// Useful mapping functions for [Message]
|
||||
extension PMessageX on Message {
|
||||
/// Maps a [Message] into [PinnedMessageEntity]
|
||||
PinnedMessageEntity toPinnedEntity({String cid}) {
|
||||
return PinnedMessageEntity(
|
||||
id: id,
|
||||
attachments: attachments?.map((it) {
|
||||
return jsonEncode(it.toData());
|
||||
})?.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,
|
||||
pinned: pinned,
|
||||
pinnedAt: pinnedAt,
|
||||
pinExpires: pinExpires,
|
||||
pinnedByUserId: pinnedBy?.id,
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user