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,
members: newMembers,
read: newReads,
pinnedMessages: updatedState.pinnedMessages,
);
}
@@ -1755,21 +1756,24 @@ class ChannelClientState {
void _startCleaningPinnedMessages() {
_pinnedMessagesTimer = Timer.periodic(Duration(seconds: 30), (_) {
final now = DateTime.now();
final expiredMessages = channelState.pinnedMessages
var expiredMessages = channelState.pinnedMessages
?.where((m) => m.pinExpires?.isBefore(now) == true)
?.toList() ??
[];
if (expiredMessages.isNotEmpty) {
expiredMessages.forEach((m) => addMessage(m.copyWith(
pinExpires: null,
pinned: false,
pinnedAt: null,
pinnedBy: null,
)));
expiredMessages = expiredMessages
.map((m) => m.copyWith(
pinExpires: null,
pinned: false,
pinnedAt: null,
pinnedBy: null,
))
.toList();
_channelState = _channelState.copyWith(
updateChannelState(_channelState.copyWith(
pinnedMessages: pinnedMessages.where(_pinIsValid()).toList(),
);
messages: expiredMessages,
));
}
});
}