ChannelClientState constructor
ChannelClientState(
- Channel _channel,
- ChannelState channelState
Creates a new instance listening to events and updating the state.
Implementation
ChannelClientState(
this._channel,
ChannelState channelState,
//ignore: unnecessary_parenthesis
) : _debouncedUpdatePersistenceChannelState = ((ChannelState state) =>
_channel._client.chatPersistenceClient
?.updateChannelState(state))
.debounced(const Duration(seconds: 1)) {
_retryQueue = RetryQueue(
channel: _channel,
logger: _channel.client.detachedLogger(
'⟳ (${generateHash([_channel.cid])})',
),
);
_checkExpiredAttachmentMessages(channelState);
_channelStateController = BehaviorSubject.seeded(channelState);
_listenTypingEvents();
_listenMessageNew();
_listenMessageDeleted();
_listenMessageUpdated();
_listenReactions();
_listenReactionDeleted();
_listenReadEvents();
_listenChannelTruncated();
_listenChannelUpdated();
_listenMemberAdded();
_listenMemberRemoved();
_listenMemberBanned();
_listenMemberUnbanned();
_startCleaning();
_startCleaningPinnedMessages();
_channel._client.chatPersistenceClient
?.getChannelThreads(_channel.cid!)
.then((threads) {
_threads = threads;
}).then((_) {
_channel._client.chatPersistenceClient
?.getChannelStateByCid(_channel.cid!)
.then((state) {
// Replacing the persistence state members with the latest
// `channelState.members` as they may have changes over the time.
updateChannelState(state.copyWith(members: channelState.members));
retryFailedMessages();
});
});
}