use updatechannelstate

This commit is contained in:
Salvatore Giordano
2021-02-24 10:17:33 +01:00
parent e0e25e7caf
commit 36d0c74a0d
+13 -9
View File
@@ -1655,6 +1655,7 @@ class ChannelClientState {
watcherCount: updatedState.watcherCount, watcherCount: updatedState.watcherCount,
members: newMembers, members: newMembers,
read: newReads, read: newReads,
pinnedMessages: updatedState.pinnedMessages,
); );
} }
@@ -1755,21 +1756,24 @@ class ChannelClientState {
void _startCleaningPinnedMessages() { void _startCleaningPinnedMessages() {
_pinnedMessagesTimer = Timer.periodic(Duration(seconds: 30), (_) { _pinnedMessagesTimer = Timer.periodic(Duration(seconds: 30), (_) {
final now = DateTime.now(); final now = DateTime.now();
final expiredMessages = channelState.pinnedMessages var expiredMessages = channelState.pinnedMessages
?.where((m) => m.pinExpires?.isBefore(now) == true) ?.where((m) => m.pinExpires?.isBefore(now) == true)
?.toList() ?? ?.toList() ??
[]; [];
if (expiredMessages.isNotEmpty) { if (expiredMessages.isNotEmpty) {
expiredMessages.forEach((m) => addMessage(m.copyWith( expiredMessages = expiredMessages
pinExpires: null, .map((m) => m.copyWith(
pinned: false, pinExpires: null,
pinnedAt: null, pinned: false,
pinnedBy: null, pinnedAt: null,
))); pinnedBy: null,
))
.toList();
_channelState = _channelState.copyWith( updateChannelState(_channelState.copyWith(
pinnedMessages: pinnedMessages.where(_pinIsValid()).toList(), pinnedMessages: pinnedMessages.where(_pinIsValid()).toList(),
); messages: expiredMessages,
));
} }
}); });
} }