From a06b7508ac648ff9c54272485e6eeefc8a96741e Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Sat, 14 Oct 2023 15:10:52 +0600 Subject: [PATCH] feat(fl_query_connectivity_plus_adapter): only poll to check online when connection is false --- .../lib/connection_checker.dart | 21 ++++++++++++------- .../fl_query_connectivity_plus_adapter.dart | 2 +- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/packages/fl_query_connectivity_plus_adapter/lib/connection_checker.dart b/packages/fl_query_connectivity_plus_adapter/lib/connection_checker.dart index b0a6302..28a89b1 100644 --- a/packages/fl_query_connectivity_plus_adapter/lib/connection_checker.dart +++ b/packages/fl_query_connectivity_plus_adapter/lib/connection_checker.dart @@ -22,17 +22,22 @@ class InternetConnectivityChecker InternetConnectivityChecker(Duration duration) : controller = StreamController.broadcast() { - Timer.periodic(duration, (timer) async { - if (isAppPaused) { - return; - } + Timer? timer; + Connectivity().onConnectivityChanged.listen((event) async { + if (isAppPaused) return; await hasConnection(); }); - Connectivity().onConnectivityChanged.listen((event) async { - if (isAppPaused) { - return; + + onConnectionChanged.listen((connection) { + if (!connection && timer == null) { + timer = Timer.periodic(duration, (timer) async { + if (isAppPaused) return; + await hasConnection(); + }); + } else { + timer?.cancel(); + timer = null; } - await hasConnection(); }); } diff --git a/packages/fl_query_connectivity_plus_adapter/lib/fl_query_connectivity_plus_adapter.dart b/packages/fl_query_connectivity_plus_adapter/lib/fl_query_connectivity_plus_adapter.dart index 98cdfff..15a0d95 100644 --- a/packages/fl_query_connectivity_plus_adapter/lib/fl_query_connectivity_plus_adapter.dart +++ b/packages/fl_query_connectivity_plus_adapter/lib/fl_query_connectivity_plus_adapter.dart @@ -7,7 +7,7 @@ import 'package:fl_query_connectivity_plus_adapter/connection_checker.dart'; class FlQueryConnectivityPlusAdapter extends ConnectivityAdapter { final InternetConnectivityChecker _adapter; FlQueryConnectivityPlusAdapter({ - Duration pollingDuration = const Duration(minutes: 5), + Duration pollingDuration = const Duration(seconds: 30), }) : _adapter = InternetConnectivityChecker(pollingDuration); @override