Changed to distinct implementation
This commit is contained in:
@@ -1297,8 +1297,6 @@ class ChannelClientState {
|
|||||||
|
|
||||||
_channelStateController = BehaviorSubject.seeded(channelState);
|
_channelStateController = BehaviorSubject.seeded(channelState);
|
||||||
|
|
||||||
_messageListController = BehaviorSubject.seeded(channelState.messages);
|
|
||||||
|
|
||||||
_listenTypingEvents();
|
_listenTypingEvents();
|
||||||
|
|
||||||
_listenMessageNew();
|
_listenMessageNew();
|
||||||
@@ -1604,7 +1602,9 @@ class ChannelClientState {
|
|||||||
List<Message> get messages => _channelState.messages;
|
List<Message> get messages => _channelState.messages;
|
||||||
|
|
||||||
/// Channel message list as a stream
|
/// Channel message list as a stream
|
||||||
Stream<List<Message>?> get messagesStream => _messageListController.stream;
|
Stream<List<Message>?> get messagesStream => channelStateStream
|
||||||
|
.map((cs) => cs.messages)
|
||||||
|
.distinct((prev, next) => const ListEquality().equals(prev, next));
|
||||||
|
|
||||||
/// Channel pinned message list
|
/// Channel pinned message list
|
||||||
List<Message>? get pinnedMessages => _channelState.pinnedMessages.toList();
|
List<Message>? get pinnedMessages => _channelState.pinnedMessages.toList();
|
||||||
@@ -1774,15 +1774,10 @@ class ChannelClientState {
|
|||||||
/// The channel state related to this client
|
/// The channel state related to this client
|
||||||
ChannelState get channelState => _channelStateController.value!;
|
ChannelState get channelState => _channelStateController.value!;
|
||||||
late BehaviorSubject<ChannelState> _channelStateController;
|
late BehaviorSubject<ChannelState> _channelStateController;
|
||||||
late BehaviorSubject<List<Message>> _messageListController;
|
|
||||||
|
|
||||||
final Debounce _debouncedUpdatePersistenceChannelState;
|
final Debounce _debouncedUpdatePersistenceChannelState;
|
||||||
|
|
||||||
set _channelState(ChannelState v) {
|
set _channelState(ChannelState v) {
|
||||||
if (!const ListEquality()
|
|
||||||
.equals(_messageListController.value, v.messages)) {
|
|
||||||
_messageListController.add(v.messages);
|
|
||||||
}
|
|
||||||
_channelStateController.add(v);
|
_channelStateController.add(v);
|
||||||
_debouncedUpdatePersistenceChannelState.call([v]);
|
_debouncedUpdatePersistenceChannelState.call([v]);
|
||||||
}
|
}
|
||||||
@@ -1940,7 +1935,6 @@ class ChannelClientState {
|
|||||||
retryQueue!.dispose();
|
retryQueue!.dispose();
|
||||||
_subscriptions.forEach((s) => s.cancel());
|
_subscriptions.forEach((s) => s.cancel());
|
||||||
_channelStateController.close();
|
_channelStateController.close();
|
||||||
_messageListController.close();
|
|
||||||
_isUpToDateController.close();
|
_isUpToDateController.close();
|
||||||
_threadsController.close();
|
_threadsController.close();
|
||||||
_cleaningTimer.cancel();
|
_cleaningTimer.cancel();
|
||||||
|
|||||||
Reference in New Issue
Block a user