TF-228 Checking network status in the app

This commit is contained in:
dab246
2022-03-31 12:09:05 +07:00
committed by Dat H. Pham
parent ac52289891
commit 431ecd44ed
11 changed files with 125 additions and 25 deletions
@@ -1,3 +1,6 @@
import 'dart:async';
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:core/core.dart';
import 'package:dartz/dartz.dart';
import 'package:flutter/foundation.dart';
@@ -47,6 +50,7 @@ class MailboxDashBoardController extends ReloadableController {
final RemoveEmailDraftsInteractor _removeEmailDraftsInteractor = Get.find<RemoveEmailDraftsInteractor>();
final DeleteCredentialInteractor _deleteCredentialInteractor = Get.find<DeleteCredentialInteractor>();
final CachingManager _cachingManager = Get.find<CachingManager>();
final Connectivity _connectivity = Get.find<Connectivity>();
final MoveToTrashInteractor _moveToTrashInteractor;
final MoveToMailboxInteractor _moveToMailboxInteractor;
@@ -68,12 +72,19 @@ class MailboxDashBoardController extends ReloadableController {
TextEditingController searchInputController = TextEditingController();
FocusNode searchFocus = FocusNode();
RouterArguments? routerArguments;
late StreamSubscription _connectivityStreamSubscription;
MailboxDashBoardController(
this._moveToTrashInteractor,
this._moveToMailboxInteractor,
);
@override
void onInit() {
super.onInit();
_registerNetworkConnectivityState();
}
@override
void onReady() {
super.onReady();
@@ -144,7 +155,17 @@ class MailboxDashBoardController extends ReloadableController {
}
@override
void onError(error) {
void onError(error) {}
void _registerNetworkConnectivityState() async {
setNetworkConnectivityState(await _connectivity.checkConnectivity());
_connectivityStreamSubscription = _connectivity.onConnectivityChanged.listen((ConnectivityResult result) {
log('MailboxDashBoardController::_registerNetworkConnectivityState(): ConnectivityResult: ${result.name}');
setNetworkConnectivityState(result);
if (userProfile.value == null && result != ConnectivityResult.none) {
_getUserProfile();
}
});
}
void _getUserProfile() async {
@@ -354,6 +375,7 @@ class MailboxDashBoardController extends ReloadableController {
@override
void onClose() {
_connectivityStreamSubscription.cancel();
searchInputController.dispose();
searchFocus.dispose();
super.onClose();
@@ -1,6 +1,7 @@
import 'package:core/core.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:tmail_ui_user/features/base/mixin/network_connection_mixin.dart';
import 'package:tmail_ui_user/features/composer/presentation/composer_view.dart'
if (dart.library.html) 'package:tmail_ui_user/features/composer/presentation/composer_view_web.dart';
import 'package:tmail_ui_user/features/email/presentation/email_view.dart';
@@ -12,7 +13,7 @@ import 'package:tmail_ui_user/features/setting/presentation/model/reading_pane.d
import 'package:tmail_ui_user/features/thread/presentation/thread_view.dart';
import 'package:tmail_ui_user/main/routes/app_routes.dart';
class MailboxDashBoardView extends GetWidget<MailboxDashBoardController> {
class MailboxDashBoardView extends GetWidget<MailboxDashBoardController> with NetworkConnectionMixin {
final _responsiveUtils = Get.find<ResponsiveUtils>();
@@ -40,6 +41,9 @@ class MailboxDashBoardView extends GetWidget<MailboxDashBoardController> {
Obx(() => controller.dashBoardAction == DashBoardAction.compose
? ComposerView()
: SizedBox.shrink()),
Obx(() => controller.isNetworkConnectionAvailable()
? SizedBox.shrink()
: Align(alignment: Alignment.bottomCenter, child: buildNetworkConnectionWidget(context))),
]),
);
}