Merge branch 'develop' of https://github.com/squaddy/stream-chat-flutter into bugfix/deleting_thread_messages

This commit is contained in:
Bartek Stoliński
2022-03-01 10:56:34 +01:00
6 changed files with 152 additions and 127 deletions
@@ -1816,8 +1816,24 @@ class ChannelClientState {
newMessages.add(message);
}
final newPinnedMessages = [...pinnedMessages];
final oldPinnedIndex =
newPinnedMessages.indexWhere((m) => m.id == message.id);
// Handle pinned messages
if (message.pinned) {
if (oldPinnedIndex != -1) {
newPinnedMessages[oldPinnedIndex] = message;
} else {
newPinnedMessages.add(message);
}
} else {
newPinnedMessages.removeWhere((m) => m.id == message.id);
}
_channelState = _channelState.copyWith(
messages: newMessages..sort(_sortByCreatedAt),
pinnedMessages: newPinnedMessages,
channel: _channelState.channel?.copyWith(
lastMessageAt: message.createdAt,
),
@@ -1904,11 +1920,12 @@ class ChannelClientState {
.distinct(const ListEquality().equals);
/// Channel pinned message list.
List<Message> get pinnedMessages => _channelState.pinnedMessages.toList();
List<Message> get pinnedMessages => _channelState.pinnedMessages;
/// Channel pinned message list as a stream.
Stream<List<Message>> get pinnedMessagesStream =>
channelStateStream.map((cs) => cs.pinnedMessages.toList());
Stream<List<Message>> get pinnedMessagesStream => channelStateStream
.map((cs) => cs.pinnedMessages)
.distinct(const ListEquality().equals);
/// Get channel last message.
Message? get lastMessage =>
@@ -2219,7 +2236,7 @@ class ChannelClientState {
.toList();
updateChannelState(_channelState.copyWith(
pinnedMessages: pinnedMessages.where(_pinIsValid()).toList(),
pinnedMessages: pinnedMessages.where(_pinIsValid).toList(),
messages: expiredMessages,
));
}
@@ -2256,7 +2273,7 @@ class ChannelClientState {
}
}
bool Function(Message) _pinIsValid() {
bool _pinIsValid(Message message) {
final now = DateTime.now();
return (Message m) => m.pinExpires!.isAfter(now);
return message.pinExpires!.isAfter(now);
}