perform heavy calls only first time

This commit is contained in:
Salvatore Giordano
2021-05-11 15:21:30 +02:00
parent 435a88cd1b
commit 5c04492176
6 changed files with 99 additions and 83 deletions
@@ -1087,8 +1087,6 @@ class _MessageListViewState extends State<MessageListView> {
_itemPositionListener =
widget.itemPositionListener ?? ItemPositionsListener.create();
streamChannel = StreamChannel.of(context);
initialIndex = _initialIndex;
initialAlignment = _initialAlignment;
@@ -1100,6 +1098,7 @@ class _MessageListViewState extends State<MessageListView> {
void didChangeDependencies() {
streamChannel = StreamChannel.of(context);
if (_messageNewListener == null) {
_messageNewListener?.cancel();
_messageNewListener =
streamChannel.channel.on(EventType.messageNew).listen((event) {
@@ -1120,6 +1119,7 @@ class _MessageListViewState extends State<MessageListView> {
if (_isThreadConversation) {
streamChannel.getReplies(widget.parentMessage!.id);
}
}
super.didChangeDependencies();
}
@@ -178,10 +178,7 @@ class ChannelListCoreState extends State<ChannelListCore> {
if (_subscription == null) {
loadData();
}
final client = _streamChatCoreState.client;
_subscription?.cancel();
_subscription = client
.on(
EventType.connectionRecovered,
@@ -190,6 +187,7 @@ class ChannelListCoreState extends State<ChannelListCore> {
EventType.channelVisible,
)
.listen((event) => loadData());
}
super.didChangeDependencies();
}
@@ -149,7 +149,7 @@ class ChannelsBlocState extends State<ChannelsBloc>
_streamChatCoreState = StreamChatCore.of(context);
final client = _streamChatCoreState.client;
_cancelSubscriptions();
if (_subscriptions.isEmpty) {
if (!widget.lockChannelsOrder) {
_subscriptions.add(client
.on(
@@ -164,7 +164,8 @@ class ChannelsBlocState extends State<ChannelsBloc>
newChannels.insert(0, channel);
}
} else if (widget.shouldAddChannel?.call(e) == true) {
final hiddenIndex = _hiddenChannels.indexWhere((c) => c.cid == e.cid);
final hiddenIndex =
_hiddenChannels.indexWhere((c) => c.cid == e.cid);
if (hiddenIndex != -1) {
newChannels.insert(0, _hiddenChannels[hiddenIndex]);
_hiddenChannels.removeAt(hiddenIndex);
@@ -185,7 +186,8 @@ class ChannelsBlocState extends State<ChannelsBloc>
_subscriptions
..add(client.on(EventType.channelHidden).listen((event) async {
final newChannels = List<Channel>.from(channels ?? []);
final channelIndex = newChannels.indexWhere((c) => c.cid == event.cid);
final channelIndex =
newChannels.indexWhere((c) => c.cid == event.cid);
if (channelIndex > -1) {
final channel = newChannels.removeAt(channelIndex);
_hiddenChannels.add(channel);
@@ -202,6 +204,7 @@ class ChannelsBlocState extends State<ChannelsBloc>
_channelsController.add(List.from(
(channels ?? [])..removeWhere((c) => c.cid == channel?.cid)));
}));
}
super.didChangeDependencies();
}
@@ -173,10 +173,13 @@ class MessageListCoreState extends State<MessageListCore> {
}
}
var _initialized = false;
@override
void didChangeDependencies() {
_streamChannel = StreamChannel.of(context);
if (_isThreadConversation) {
if (!_initialized && _isThreadConversation) {
_initialized = true;
_streamChannel.getReplies(widget.parentMessage!.id);
}
super.didChangeDependencies();
@@ -107,10 +107,17 @@ class MessageSearchListCore extends StatefulWidget {
class MessageSearchListCoreState extends State<MessageSearchListCore> {
late MessageSearchBlocState _messageSearchBloc;
var _initialized = false;
@override
void didChangeDependencies() {
_messageSearchBloc = MessageSearchBloc.of(context);
if (!_initialized) {
loadData();
_initialized = true;
}
if (widget.messageSearchListController != null) {
widget.messageSearchListController!.loadData = loadData;
widget.messageSearchListController!.paginateData = paginateData;
@@ -122,9 +122,14 @@ class UserListCore extends StatefulWidget {
/// The current state of the [UserListCore].
class UserListCoreState extends State<UserListCore>
with WidgetsBindingObserver {
var _initialized = false;
@override
void didChangeDependencies() {
if (!_initialized) {
loadData();
_initialized = true;
}
if (widget.userListController != null) {
widget.userListController!.loadData = loadData;
widget.userListController!.paginateData = paginateData;