refactor(llc, ui): Make Streams non-nullable wherever possible.
Signed-off-by: xsahil03x <[email protected]>
This commit is contained in:
@@ -153,9 +153,9 @@ class Channel {
|
||||
true;
|
||||
|
||||
/// 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) =>
|
||||
event!.channelMutes.any((element) => element.channel.cid == cid) ==
|
||||
event?.channelMutes.any((element) => element.channel.cid == cid) ==
|
||||
true)
|
||||
.distinct();
|
||||
|
||||
@@ -168,105 +168,97 @@ class Channel {
|
||||
/// Channel configuration.
|
||||
ChannelConfig? get config {
|
||||
_checkInitialized();
|
||||
return state?._channelState.channel?.config;
|
||||
return state!._channelState.channel?.config;
|
||||
}
|
||||
|
||||
/// Channel configuration as a stream.
|
||||
Stream<ChannelConfig?>? get configStream {
|
||||
Stream<ChannelConfig?> get configStream {
|
||||
_checkInitialized();
|
||||
return state?.channelStateStream.map((cs) => cs.channel?.config);
|
||||
return state!.channelStateStream.map((cs) => cs.channel?.config);
|
||||
}
|
||||
|
||||
/// Channel user creator.
|
||||
User? get createdBy {
|
||||
_checkInitialized();
|
||||
return state?._channelState.channel?.createdBy;
|
||||
return state!._channelState.channel?.createdBy;
|
||||
}
|
||||
|
||||
/// Channel user creator as a stream.
|
||||
Stream<User?>? get createdByStream {
|
||||
Stream<User?> get createdByStream {
|
||||
_checkInitialized();
|
||||
return state?.channelStateStream.map((cs) => cs.channel?.createdBy);
|
||||
return state!.channelStateStream.map((cs) => cs.channel?.createdBy);
|
||||
}
|
||||
|
||||
/// Channel frozen status.
|
||||
bool? get frozen {
|
||||
bool get frozen {
|
||||
_checkInitialized();
|
||||
return state?._channelState.channel?.frozen;
|
||||
return state!._channelState.channel?.frozen == true;
|
||||
}
|
||||
|
||||
/// Channel frozen status as a stream.
|
||||
Stream<bool?>? get frozenStream {
|
||||
Stream<bool> get frozenStream {
|
||||
_checkInitialized();
|
||||
return state?.channelStateStream.map((cs) => cs.channel?.frozen);
|
||||
return state!.channelStateStream.map((cs) => cs.channel?.frozen == true);
|
||||
}
|
||||
|
||||
/// Channel creation date.
|
||||
DateTime? get createdAt {
|
||||
_checkInitialized();
|
||||
return state?._channelState.channel?.createdAt;
|
||||
return state!._channelState.channel?.createdAt;
|
||||
}
|
||||
|
||||
/// Channel creation date as a stream.
|
||||
Stream<DateTime?>? get createdAtStream {
|
||||
Stream<DateTime?> get createdAtStream {
|
||||
_checkInitialized();
|
||||
return state?.channelStateStream.map((cs) => cs.channel?.createdAt);
|
||||
return state!.channelStateStream.map((cs) => cs.channel?.createdAt);
|
||||
}
|
||||
|
||||
/// Channel last message date.
|
||||
DateTime? get lastMessageAt {
|
||||
_checkInitialized();
|
||||
|
||||
return state?._channelState.channel?.lastMessageAt;
|
||||
return state!._channelState.channel?.lastMessageAt;
|
||||
}
|
||||
|
||||
/// Channel last message date as a stream.
|
||||
Stream<DateTime?>? get lastMessageAtStream {
|
||||
Stream<DateTime?> get lastMessageAtStream {
|
||||
_checkInitialized();
|
||||
|
||||
return state?.channelStateStream.map((cs) => cs.channel?.lastMessageAt);
|
||||
return state!.channelStateStream.map((cs) => cs.channel?.lastMessageAt);
|
||||
}
|
||||
|
||||
/// Channel updated date.
|
||||
DateTime? get updatedAt {
|
||||
_checkInitialized();
|
||||
|
||||
return state?._channelState.channel?.updatedAt;
|
||||
return state!._channelState.channel?.updatedAt;
|
||||
}
|
||||
|
||||
/// Channel updated date as a stream.
|
||||
Stream<DateTime?>? get updatedAtStream {
|
||||
Stream<DateTime?> get updatedAtStream {
|
||||
_checkInitialized();
|
||||
|
||||
return state?.channelStateStream.map((cs) => cs.channel?.updatedAt);
|
||||
return state!.channelStateStream.map((cs) => cs.channel?.updatedAt);
|
||||
}
|
||||
|
||||
/// Channel deletion date.
|
||||
DateTime? get deletedAt {
|
||||
_checkInitialized();
|
||||
|
||||
return state?._channelState.channel?.deletedAt;
|
||||
return state!._channelState.channel?.deletedAt;
|
||||
}
|
||||
|
||||
/// Channel deletion date as a stream.
|
||||
Stream<DateTime?>? get deletedAtStream {
|
||||
Stream<DateTime?> get deletedAtStream {
|
||||
_checkInitialized();
|
||||
|
||||
return state?.channelStateStream.map((cs) => cs.channel?.deletedAt);
|
||||
return state!.channelStateStream.map((cs) => cs.channel?.deletedAt);
|
||||
}
|
||||
|
||||
/// Channel member count.
|
||||
int? get memberCount {
|
||||
_checkInitialized();
|
||||
|
||||
return state?._channelState.channel?.memberCount;
|
||||
return state!._channelState.channel?.memberCount;
|
||||
}
|
||||
|
||||
/// Channel member count as a stream.
|
||||
Stream<int?>? get memberCountStream {
|
||||
Stream<int?> get memberCountStream {
|
||||
_checkInitialized();
|
||||
|
||||
return state?.channelStateStream.map((cs) => cs.channel?.memberCount);
|
||||
return state!.channelStateStream.map((cs) => cs.channel?.memberCount);
|
||||
}
|
||||
|
||||
/// Channel id.
|
||||
@@ -281,7 +273,7 @@ class Channel {
|
||||
/// Channel team.
|
||||
String? get team {
|
||||
_checkInitialized();
|
||||
return state?._channelState.channel?.team;
|
||||
return state!._channelState.channel?.team;
|
||||
}
|
||||
|
||||
/// Channel extra data.
|
||||
@@ -294,7 +286,7 @@ class Channel {
|
||||
}
|
||||
|
||||
/// Channel extra data as a stream.
|
||||
Stream<Map<String, dynamic>> get extraDataStream {
|
||||
Stream<Map<String, Object?>> get extraDataStream {
|
||||
_checkInitialized();
|
||||
return state!.channelStateStream.map(
|
||||
(cs) => cs.channel?.extraData ?? _extraData,
|
||||
@@ -1728,9 +1720,9 @@ class ChannelClientState {
|
||||
(event) {
|
||||
final readList = List<Read>.from(_channelState.read);
|
||||
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);
|
||||
if (userRead.user.id == _channel._client.state.currentUser!.id) {
|
||||
unreadCount = 0;
|
||||
@@ -1751,15 +1743,15 @@ class ChannelClientState {
|
||||
List<Message> get messages => _channelState.messages;
|
||||
|
||||
/// Channel message list as a stream.
|
||||
Stream<List<Message>?> get messagesStream => channelStateStream
|
||||
Stream<List<Message>> get messagesStream => channelStateStream
|
||||
.map((cs) => cs.messages)
|
||||
.distinct(const ListEquality().equals);
|
||||
|
||||
/// 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.
|
||||
Stream<List<Message>?> get pinnedMessagesStream =>
|
||||
Stream<List<Message>> get pinnedMessagesStream =>
|
||||
channelStateStream.map((cs) => cs.pinnedMessages.toList());
|
||||
|
||||
/// Get channel last message.
|
||||
@@ -1768,8 +1760,8 @@ class ChannelClientState {
|
||||
: null;
|
||||
|
||||
/// Get channel last message.
|
||||
Stream<Message?> get lastMessageStream => messagesStream
|
||||
.map((event) => event?.isNotEmpty == true ? event!.last : null);
|
||||
Stream<Message?> get lastMessageStream =>
|
||||
messagesStream.map((event) => event.isNotEmpty ? event.last : null);
|
||||
|
||||
/// Channel members list.
|
||||
List<Member> get members => _channelState.members
|
||||
@@ -1806,10 +1798,10 @@ class ChannelClientState {
|
||||
);
|
||||
|
||||
/// Channel read list.
|
||||
List<Read>? get read => _channelState.read;
|
||||
List<Read> get read => _channelState.read;
|
||||
|
||||
/// 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);
|
||||
|
||||
@@ -2060,7 +2052,7 @@ class ChannelClientState {
|
||||
.toList();
|
||||
|
||||
updateChannelState(_channelState.copyWith(
|
||||
pinnedMessages: pinnedMessages!.where(_pinIsValid()).toList(),
|
||||
pinnedMessages: pinnedMessages.where(_pinIsValid()).toList(),
|
||||
messages: expiredMessages,
|
||||
));
|
||||
}
|
||||
|
||||
@@ -132,7 +132,7 @@ class ChannelPreview extends StatelessWidget {
|
||||
message: lastMessage!,
|
||||
size: channelPreviewTheme.indicatorIconSize,
|
||||
isMessageRead: channel.state!.read
|
||||
?.where((element) =>
|
||||
.where((element) =>
|
||||
element.user.id !=
|
||||
channel
|
||||
.client.state.currentUser!.id)
|
||||
|
||||
@@ -915,7 +915,7 @@ class _MessageListViewState extends State<MessageListView> {
|
||||
}
|
||||
|
||||
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;
|
||||
return read.lastRead.isAfter(message.createdAt) ||
|
||||
read.lastRead.isAtSameMomentAs(message.createdAt);
|
||||
@@ -1204,7 +1204,7 @@ class _MessageListViewState extends State<MessageListView> {
|
||||
builder: (_) => BetterStreamBuilder<Message>(
|
||||
stream: streamChannel!.channel.state!.messagesStream.map(
|
||||
(messages) =>
|
||||
messages!.firstWhere((m) => m.id == message.id)),
|
||||
messages.firstWhere((m) => m.id == message.id)),
|
||||
initialData: message,
|
||||
builder: (_, data) => StreamChannel(
|
||||
channel: streamChannel!.channel,
|
||||
|
||||
Reference in New Issue
Block a user