updateChannelState method
Update channelState with updated information.
Implementation
void updateChannelState(ChannelState updatedState) {
final newMessages = <Message>[
...updatedState.messages,
..._channelState.messages
.where((m) =>
!updatedState.messages.any((newMessage) => newMessage.id == m.id))
.toList(),
]..sort(_sortByCreatedAt);
final newWatchers = <User>[
...updatedState.watchers,
..._channelState.watchers
.where((w) =>
!updatedState.watchers.any((newWatcher) => newWatcher.id == w.id))
.toList(),
];
final newMembers = <Member>[
...updatedState.members,
];
final newReads = <Read>[
...updatedState.read,
..._channelState.read
.where((r) =>
!updatedState.read.any((newRead) => newRead.user.id == r.user.id))
.toList(),
];
_checkExpiredAttachmentMessages(updatedState);
_channelState = _channelState.copyWith(
messages: newMessages,
channel: _channelState.channel?.merge(updatedState.channel),
watchers: newWatchers,
watcherCount: updatedState.watcherCount,
members: newMembers,
read: newReads,
pinnedMessages: updatedState.pinnedMessages,
);
}