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;
|
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,
|
||||||
|
|||||||
Reference in New Issue
Block a user