refactor(llc, ui): Make Streams non-nullable wherever possible.

Signed-off-by: xsahil03x <[email protected]>
This commit is contained in:
Sahil Kumar
2021-08-16 20:19:55 +05:30
committed by xsahil03x
parent 9051b71d20
commit 3e4d39308f
3 changed files with 42 additions and 50 deletions
@@ -153,9 +153,9 @@ class Channel {
true; true;
/// Returns true if the channel is muted, as a stream. /// Returns true if the channel is muted, as a stream.
Stream<bool>? get isMutedStream => _client.state.currentUserStream Stream<bool> get isMutedStream => _client.state.currentUserStream
.map((event) => .map((event) =>
event!.channelMutes.any((element) => element.channel.cid == cid) == event?.channelMutes.any((element) => element.channel.cid == cid) ==
true) true)
.distinct(); .distinct();
@@ -168,105 +168,97 @@ class Channel {
/// Channel configuration. /// Channel configuration.
ChannelConfig? get config { ChannelConfig? get config {
_checkInitialized(); _checkInitialized();
return state?._channelState.channel?.config; return state!._channelState.channel?.config;
} }
/// Channel configuration as a stream. /// Channel configuration as a stream.
Stream<ChannelConfig?>? get configStream { Stream<ChannelConfig?> get configStream {
_checkInitialized(); _checkInitialized();
return state?.channelStateStream.map((cs) => cs.channel?.config); return state!.channelStateStream.map((cs) => cs.channel?.config);
} }
/// Channel user creator. /// Channel user creator.
User? get createdBy { User? get createdBy {
_checkInitialized(); _checkInitialized();
return state?._channelState.channel?.createdBy; return state!._channelState.channel?.createdBy;
} }
/// Channel user creator as a stream. /// Channel user creator as a stream.
Stream<User?>? get createdByStream { Stream<User?> get createdByStream {
_checkInitialized(); _checkInitialized();
return state?.channelStateStream.map((cs) => cs.channel?.createdBy); return state!.channelStateStream.map((cs) => cs.channel?.createdBy);
} }
/// Channel frozen status. /// Channel frozen status.
bool? get frozen { bool get frozen {
_checkInitialized(); _checkInitialized();
return state?._channelState.channel?.frozen; return state!._channelState.channel?.frozen == true;
} }
/// Channel frozen status as a stream. /// Channel frozen status as a stream.
Stream<bool?>? get frozenStream { Stream<bool> get frozenStream {
_checkInitialized(); _checkInitialized();
return state?.channelStateStream.map((cs) => cs.channel?.frozen); return state!.channelStateStream.map((cs) => cs.channel?.frozen == true);
} }
/// Channel creation date. /// Channel creation date.
DateTime? get createdAt { DateTime? get createdAt {
_checkInitialized(); _checkInitialized();
return state?._channelState.channel?.createdAt; return state!._channelState.channel?.createdAt;
} }
/// Channel creation date as a stream. /// Channel creation date as a stream.
Stream<DateTime?>? get createdAtStream { Stream<DateTime?> get createdAtStream {
_checkInitialized(); _checkInitialized();
return state?.channelStateStream.map((cs) => cs.channel?.createdAt); return state!.channelStateStream.map((cs) => cs.channel?.createdAt);
} }
/// Channel last message date. /// Channel last message date.
DateTime? get lastMessageAt { DateTime? get lastMessageAt {
_checkInitialized(); _checkInitialized();
return state!._channelState.channel?.lastMessageAt;
return state?._channelState.channel?.lastMessageAt;
} }
/// Channel last message date as a stream. /// Channel last message date as a stream.
Stream<DateTime?>? get lastMessageAtStream { Stream<DateTime?> get lastMessageAtStream {
_checkInitialized(); _checkInitialized();
return state!.channelStateStream.map((cs) => cs.channel?.lastMessageAt);
return state?.channelStateStream.map((cs) => cs.channel?.lastMessageAt);
} }
/// Channel updated date. /// Channel updated date.
DateTime? get updatedAt { DateTime? get updatedAt {
_checkInitialized(); _checkInitialized();
return state!._channelState.channel?.updatedAt;
return state?._channelState.channel?.updatedAt;
} }
/// Channel updated date as a stream. /// Channel updated date as a stream.
Stream<DateTime?>? get updatedAtStream { Stream<DateTime?> get updatedAtStream {
_checkInitialized(); _checkInitialized();
return state!.channelStateStream.map((cs) => cs.channel?.updatedAt);
return state?.channelStateStream.map((cs) => cs.channel?.updatedAt);
} }
/// Channel deletion date. /// Channel deletion date.
DateTime? get deletedAt { DateTime? get deletedAt {
_checkInitialized(); _checkInitialized();
return state!._channelState.channel?.deletedAt;
return state?._channelState.channel?.deletedAt;
} }
/// Channel deletion date as a stream. /// Channel deletion date as a stream.
Stream<DateTime?>? get deletedAtStream { Stream<DateTime?> get deletedAtStream {
_checkInitialized(); _checkInitialized();
return state!.channelStateStream.map((cs) => cs.channel?.deletedAt);
return state?.channelStateStream.map((cs) => cs.channel?.deletedAt);
} }
/// Channel member count. /// Channel member count.
int? get memberCount { int? get memberCount {
_checkInitialized(); _checkInitialized();
return state!._channelState.channel?.memberCount;
return state?._channelState.channel?.memberCount;
} }
/// Channel member count as a stream. /// Channel member count as a stream.
Stream<int?>? get memberCountStream { Stream<int?> get memberCountStream {
_checkInitialized(); _checkInitialized();
return state!.channelStateStream.map((cs) => cs.channel?.memberCount);
return state?.channelStateStream.map((cs) => cs.channel?.memberCount);
} }
/// Channel id. /// Channel id.
@@ -281,7 +273,7 @@ class Channel {
/// Channel team. /// Channel team.
String? get team { String? get team {
_checkInitialized(); _checkInitialized();
return state?._channelState.channel?.team; return state!._channelState.channel?.team;
} }
/// Channel extra data. /// Channel extra data.
@@ -294,7 +286,7 @@ class Channel {
} }
/// Channel extra data as a stream. /// Channel extra data as a stream.
Stream<Map<String, dynamic>> get extraDataStream { Stream<Map<String, Object?>> get extraDataStream {
_checkInitialized(); _checkInitialized();
return state!.channelStateStream.map( return state!.channelStateStream.map(
(cs) => cs.channel?.extraData ?? _extraData, (cs) => cs.channel?.extraData ?? _extraData,
@@ -1728,9 +1720,9 @@ class ChannelClientState {
(event) { (event) {
final readList = List<Read>.from(_channelState.read); final readList = List<Read>.from(_channelState.read);
final userReadIndex = final userReadIndex =
read?.indexWhere((r) => r.user.id == event.user!.id); read.indexWhere((r) => r.user.id == event.user!.id);
if (userReadIndex != null && userReadIndex != -1) { if (userReadIndex != -1) {
final userRead = readList.removeAt(userReadIndex); final userRead = readList.removeAt(userReadIndex);
if (userRead.user.id == _channel._client.state.currentUser!.id) { if (userRead.user.id == _channel._client.state.currentUser!.id) {
unreadCount = 0; unreadCount = 0;
@@ -1751,15 +1743,15 @@ 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 => channelStateStream Stream<List<Message>> get messagesStream => channelStateStream
.map((cs) => cs.messages) .map((cs) => cs.messages)
.distinct(const ListEquality().equals); .distinct(const ListEquality().equals);
/// Channel pinned message list. /// Channel pinned message list.
List<Message>? get pinnedMessages => _channelState.pinnedMessages.toList(); List<Message> get pinnedMessages => _channelState.pinnedMessages.toList();
/// Channel pinned message list as a stream. /// Channel pinned message list as a stream.
Stream<List<Message>?> get pinnedMessagesStream => Stream<List<Message>> get pinnedMessagesStream =>
channelStateStream.map((cs) => cs.pinnedMessages.toList()); channelStateStream.map((cs) => cs.pinnedMessages.toList());
/// Get channel last message. /// Get channel last message.
@@ -1768,8 +1760,8 @@ class ChannelClientState {
: null; : null;
/// Get channel last message. /// Get channel last message.
Stream<Message?> get lastMessageStream => messagesStream Stream<Message?> get lastMessageStream =>
.map((event) => event?.isNotEmpty == true ? event!.last : null); messagesStream.map((event) => event.isNotEmpty ? event.last : null);
/// Channel members list. /// Channel members list.
List<Member> get members => _channelState.members List<Member> get members => _channelState.members
@@ -1806,10 +1798,10 @@ class ChannelClientState {
); );
/// Channel read list. /// Channel read list.
List<Read>? get read => _channelState.read; List<Read> get read => _channelState.read;
/// Channel read list as a stream. /// Channel read list as a stream.
Stream<List<Read>?> get readStream => channelStateStream.map((cs) => cs.read); Stream<List<Read>> get readStream => channelStateStream.map((cs) => cs.read);
final BehaviorSubject<int> _unreadCountController = BehaviorSubject.seeded(0); final BehaviorSubject<int> _unreadCountController = BehaviorSubject.seeded(0);
@@ -2060,7 +2052,7 @@ class ChannelClientState {
.toList(); .toList();
updateChannelState(_channelState.copyWith( updateChannelState(_channelState.copyWith(
pinnedMessages: pinnedMessages!.where(_pinIsValid()).toList(), pinnedMessages: pinnedMessages.where(_pinIsValid()).toList(),
messages: expiredMessages, messages: expiredMessages,
)); ));
} }
@@ -132,7 +132,7 @@ class ChannelPreview extends StatelessWidget {
message: lastMessage!, message: lastMessage!,
size: channelPreviewTheme.indicatorIconSize, size: channelPreviewTheme.indicatorIconSize,
isMessageRead: channel.state!.read isMessageRead: channel.state!.read
?.where((element) => .where((element) =>
element.user.id != element.user.id !=
channel channel
.client.state.currentUser!.id) .client.state.currentUser!.id)
@@ -915,7 +915,7 @@ class _MessageListViewState extends State<MessageListView> {
} }
final channel = streamChannel!.channel; final channel = streamChannel!.channel;
final readList = channel.state?.read?.where((read) { final readList = channel.state?.read.where((read) {
if (read.user.id == userId) return false; if (read.user.id == userId) return false;
return read.lastRead.isAfter(message.createdAt) || return read.lastRead.isAfter(message.createdAt) ||
read.lastRead.isAtSameMomentAs(message.createdAt); read.lastRead.isAtSameMomentAs(message.createdAt);
@@ -1204,7 +1204,7 @@ class _MessageListViewState extends State<MessageListView> {
builder: (_) => BetterStreamBuilder<Message>( builder: (_) => BetterStreamBuilder<Message>(
stream: streamChannel!.channel.state!.messagesStream.map( stream: streamChannel!.channel.state!.messagesStream.map(
(messages) => (messages) =>
messages!.firstWhere((m) => m.id == message.id)), messages.firstWhere((m) => m.id == message.id)),
initialData: message, initialData: message,
builder: (_, data) => StreamChannel( builder: (_, data) => StreamChannel(
channel: streamChannel!.channel, channel: streamChannel!.channel,