TF-1115 Implement catch exception when for GetAllEmail and RefreshChangesEmail
This commit is contained in:
@@ -77,7 +77,7 @@ packages:
|
|||||||
name: build_runner_core
|
name: build_runner_core
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "7.2.6"
|
version: "7.2.7"
|
||||||
built_collection:
|
built_collection:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -91,7 +91,7 @@ packages:
|
|||||||
name: built_value
|
name: built_value
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "8.4.1"
|
version: "8.4.2"
|
||||||
characters:
|
characters:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -365,7 +365,7 @@ packages:
|
|||||||
name: graphs
|
name: graphs
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.0"
|
version: "2.2.0"
|
||||||
html:
|
html:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -420,7 +420,7 @@ packages:
|
|||||||
description:
|
description:
|
||||||
path: "."
|
path: "."
|
||||||
ref: master
|
ref: master
|
||||||
resolved-ref: ab07a8a03d63e20f6ea5e62bcc1ca8cdc1fd93ff
|
resolved-ref: "45ea109f70be0d868b005aadf11a39e2ac816c38"
|
||||||
url: "https://github.com/linagora/jmap-dart-client.git"
|
url: "https://github.com/linagora/jmap-dart-client.git"
|
||||||
source: git
|
source: git
|
||||||
version: "0.0.1"
|
version: "0.0.1"
|
||||||
@@ -631,7 +631,7 @@ packages:
|
|||||||
name: sqflite_common
|
name: sqflite_common
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.3.0"
|
version: "2.4.0"
|
||||||
stack_trace:
|
stack_trace:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -729,7 +729,7 @@ packages:
|
|||||||
name: url_launcher_android
|
name: url_launcher_android
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.0.19"
|
version: "6.0.20"
|
||||||
url_launcher_ios:
|
url_launcher_ios:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ packages:
|
|||||||
name: build_runner_core
|
name: build_runner_core
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "7.2.6"
|
version: "7.2.7"
|
||||||
built_collection:
|
built_collection:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -91,7 +91,7 @@ packages:
|
|||||||
name: built_value
|
name: built_value
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "8.4.1"
|
version: "8.4.2"
|
||||||
characters:
|
characters:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -234,7 +234,7 @@ packages:
|
|||||||
name: graphs
|
name: graphs
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.0"
|
version: "2.2.0"
|
||||||
http_mock_adapter:
|
http_mock_adapter:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@@ -268,7 +268,7 @@ packages:
|
|||||||
description:
|
description:
|
||||||
path: "."
|
path: "."
|
||||||
ref: master
|
ref: master
|
||||||
resolved-ref: ab07a8a03d63e20f6ea5e62bcc1ca8cdc1fd93ff
|
resolved-ref: "45ea109f70be0d868b005aadf11a39e2ac816c38"
|
||||||
url: "https://github.com/linagora/jmap-dart-client.git"
|
url: "https://github.com/linagora/jmap-dart-client.git"
|
||||||
source: git
|
source: git
|
||||||
version: "0.0.1"
|
version: "0.0.1"
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
import 'package:contact/contact/model/capability_contact.dart';
|
import 'package:contact/contact/model/capability_contact.dart';
|
||||||
import 'package:core/core.dart';
|
import 'package:core/core.dart';
|
||||||
import 'package:dartz/dartz.dart';
|
import 'package:dartz/dartz.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_svg/flutter_svg.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:jmap_dart_client/jmap/account_id.dart';
|
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/capability/capability_identifier.dart';
|
import 'package:jmap_dart_client/jmap/core/capability/capability_identifier.dart';
|
||||||
@@ -12,18 +14,30 @@ import 'package:tmail_ui_user/features/email/presentation/mdn_interactor_binding
|
|||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/bindings/contact_autocomplete_bindings.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/bindings/contact_autocomplete_bindings.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/bindings/tmail_autocomplete_bindings.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/bindings/tmail_autocomplete_bindings.dart';
|
||||||
import 'package:tmail_ui_user/main/error/capability_validator.dart';
|
import 'package:tmail_ui_user/main/error/capability_validator.dart';
|
||||||
|
import 'package:tmail_ui_user/main/exceptions/remote_exception.dart';
|
||||||
|
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||||
|
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||||
|
|
||||||
abstract class BaseController extends GetxController
|
abstract class BaseController extends GetxController
|
||||||
with MessageDialogActionMixin,
|
with MessageDialogActionMixin,
|
||||||
PopupContextMenuActionMixin,
|
PopupContextMenuActionMixin,
|
||||||
ViewAsDialogActionMixin {
|
ViewAsDialogActionMixin {
|
||||||
|
|
||||||
|
final _appToast = Get.find<AppToast>();
|
||||||
|
final _imagePaths = Get.find<ImagePaths>();
|
||||||
|
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
||||||
|
|
||||||
final viewState = Rx<Either<Failure, Success>>(Right(UIState.idle));
|
final viewState = Rx<Either<Failure, Success>>(Right(UIState.idle));
|
||||||
FpsCallback? fpsCallback;
|
FpsCallback? fpsCallback;
|
||||||
|
|
||||||
void consumeState(Stream<Either<Failure, Success>> newStateStream) async {
|
void consumeState(Stream<Either<Failure, Success>> newStateStream) async {
|
||||||
newStateStream.listen(
|
newStateStream.listen(
|
||||||
(state) => onData(state),
|
(state) => onData(state),
|
||||||
onError: (error) => onError(error),
|
onError: (error, stackTrace) {
|
||||||
|
logError('BaseController::consumeState():onError:error: $error');
|
||||||
|
logError('BaseController::consumeState():onError:stackTrace: $stackTrace');
|
||||||
|
onError(error);
|
||||||
|
},
|
||||||
onDone: () => onDone()
|
onDone: () => onDone()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -48,7 +62,34 @@ abstract class BaseController extends GetxController
|
|||||||
viewState.value = newState;
|
viewState.value = newState;
|
||||||
}
|
}
|
||||||
|
|
||||||
void onError(dynamic error);
|
void onError(dynamic error) {
|
||||||
|
String messageError = '';
|
||||||
|
if (error is MethodLevelErrors) {
|
||||||
|
messageError = error.message ?? error.type.value;
|
||||||
|
} else {
|
||||||
|
if (currentContext != null) {
|
||||||
|
messageError = AppLocalizations
|
||||||
|
.of(currentContext!)
|
||||||
|
.unknown_error_login_message;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (messageError.isNotEmpty && currentContext != null && currentOverlayContext != null) {
|
||||||
|
_appToast.showBottomToast(
|
||||||
|
currentOverlayContext!,
|
||||||
|
messageError,
|
||||||
|
leadingIcon: SvgPicture.asset(
|
||||||
|
_imagePaths.icNotConnection,
|
||||||
|
width: 24,
|
||||||
|
height: 24,
|
||||||
|
color: Colors.white,
|
||||||
|
fit: BoxFit.fill),
|
||||||
|
backgroundColor: AppColor.toastErrorBackgroundColor,
|
||||||
|
textColor: Colors.white,
|
||||||
|
textActionColor: Colors.white,
|
||||||
|
maxWidth: _responsiveUtils.getMaxWidthToast(currentContext!));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void onDone();
|
void onDone();
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import 'package:tmail_ui_user/features/caching/email_cache_client.dart';
|
|||||||
import 'package:tmail_ui_user/features/caching/mailbox_cache_client.dart';
|
import 'package:tmail_ui_user/features/caching/mailbox_cache_client.dart';
|
||||||
import 'package:tmail_ui_user/features/caching/recent_search_cache_client.dart';
|
import 'package:tmail_ui_user/features/caching/recent_search_cache_client.dart';
|
||||||
import 'package:tmail_ui_user/features/caching/state_cache_client.dart';
|
import 'package:tmail_ui_user/features/caching/state_cache_client.dart';
|
||||||
|
import 'package:tmail_ui_user/features/mailbox/data/model/state_type.dart';
|
||||||
|
|
||||||
class CachingManager {
|
class CachingManager {
|
||||||
|
|
||||||
@@ -41,4 +42,11 @@ class CachingManager {
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<void> cleanEmailCache() async {
|
||||||
|
await Future.wait([
|
||||||
|
_stateCacheClient.deleteItem(StateType.email.value),
|
||||||
|
_emailCacheClient.clearAllData(),
|
||||||
|
]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -14,13 +14,19 @@ import 'package:tmail_ui_user/features/thread/data/network/thread_isolate_worker
|
|||||||
import 'package:tmail_ui_user/features/thread/domain/model/email_response.dart';
|
import 'package:tmail_ui_user/features/thread/domain/model/email_response.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/data/network/thread_api.dart';
|
import 'package:tmail_ui_user/features/thread/data/network/thread_api.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/domain/model/filter_message_option.dart';
|
import 'package:tmail_ui_user/features/thread/domain/model/filter_message_option.dart';
|
||||||
|
import 'package:tmail_ui_user/main/exceptions/exception_thrower.dart';
|
||||||
|
|
||||||
class ThreadDataSourceImpl extends ThreadDataSource {
|
class ThreadDataSourceImpl extends ThreadDataSource {
|
||||||
|
|
||||||
final ThreadAPI threadAPI;
|
final ThreadAPI threadAPI;
|
||||||
final ThreadIsolateWorker _threadIsolateWorker;
|
final ThreadIsolateWorker _threadIsolateWorker;
|
||||||
|
final ExceptionThrower _exceptionThrower;
|
||||||
|
|
||||||
ThreadDataSourceImpl(this.threadAPI, this._threadIsolateWorker);
|
ThreadDataSourceImpl(
|
||||||
|
this.threadAPI,
|
||||||
|
this._threadIsolateWorker,
|
||||||
|
this._exceptionThrower
|
||||||
|
);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<EmailsResponse> getAllEmail(
|
Future<EmailsResponse> getAllEmail(
|
||||||
@@ -40,7 +46,7 @@ class ThreadDataSourceImpl extends ThreadDataSource {
|
|||||||
filter: filter,
|
filter: filter,
|
||||||
properties: properties);
|
properties: properties);
|
||||||
}).catchError((error) {
|
}).catchError((error) {
|
||||||
throw error;
|
_exceptionThrower.throwException(error);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -60,7 +66,7 @@ class ThreadDataSourceImpl extends ThreadDataSource {
|
|||||||
propertiesCreated: propertiesCreated,
|
propertiesCreated: propertiesCreated,
|
||||||
propertiesUpdated: propertiesUpdated);
|
propertiesUpdated: propertiesUpdated);
|
||||||
}).catchError((error) {
|
}).catchError((error) {
|
||||||
throw error;
|
_exceptionThrower.throwException(error);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import 'package:core/core.dart';
|
import 'package:core/core.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:tmail_ui_user/features/base/base_bindings.dart';
|
import 'package:tmail_ui_user/features/base/base_bindings.dart';
|
||||||
|
import 'package:tmail_ui_user/features/caching/caching_manager.dart';
|
||||||
import 'package:tmail_ui_user/features/caching/state_cache_client.dart';
|
import 'package:tmail_ui_user/features/caching/state_cache_client.dart';
|
||||||
import 'package:tmail_ui_user/features/email/data/datasource/email_datasource.dart';
|
import 'package:tmail_ui_user/features/email/data/datasource/email_datasource.dart';
|
||||||
import 'package:tmail_ui_user/features/email/data/datasource/html_datasource.dart';
|
import 'package:tmail_ui_user/features/email/data/datasource/html_datasource.dart';
|
||||||
@@ -42,6 +43,7 @@ import 'package:tmail_ui_user/features/thread/domain/usecases/refresh_changes_em
|
|||||||
import 'package:tmail_ui_user/features/thread/domain/usecases/search_email_interactor.dart';
|
import 'package:tmail_ui_user/features/thread/domain/usecases/search_email_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/domain/usecases/search_more_email_interactor.dart';
|
import 'package:tmail_ui_user/features/thread/domain/usecases/search_more_email_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/presentation/thread_controller.dart';
|
import 'package:tmail_ui_user/features/thread/presentation/thread_controller.dart';
|
||||||
|
import 'package:tmail_ui_user/main/exceptions/remote_exception_thrower.dart';
|
||||||
|
|
||||||
class ThreadBindings extends BaseBindings {
|
class ThreadBindings extends BaseBindings {
|
||||||
|
|
||||||
@@ -61,6 +63,7 @@ class ThreadBindings extends BaseBindings {
|
|||||||
Get.find<EmptyTrashFolderInteractor>(),
|
Get.find<EmptyTrashFolderInteractor>(),
|
||||||
Get.find<MarkAsEmailReadInteractor>(),
|
Get.find<MarkAsEmailReadInteractor>(),
|
||||||
Get.find<MoveToMailboxInteractor>(),
|
Get.find<MoveToMailboxInteractor>(),
|
||||||
|
Get.find<CachingManager>(),
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -77,7 +80,10 @@ class ThreadBindings extends BaseBindings {
|
|||||||
void bindingsDataSourceImpl() {
|
void bindingsDataSourceImpl() {
|
||||||
Get.lazyPut(() => MailboxDataSourceImpl(Get.find<MailboxAPI>(), Get.find<MailboxIsolateWorker>()));
|
Get.lazyPut(() => MailboxDataSourceImpl(Get.find<MailboxAPI>(), Get.find<MailboxIsolateWorker>()));
|
||||||
Get.lazyPut(() => MailboxCacheDataSourceImpl(Get.find<MailboxCacheManager>()));
|
Get.lazyPut(() => MailboxCacheDataSourceImpl(Get.find<MailboxCacheManager>()));
|
||||||
Get.lazyPut(() => ThreadDataSourceImpl(Get.find<ThreadAPI>(), Get.find<ThreadIsolateWorker>()));
|
Get.lazyPut(() => ThreadDataSourceImpl(
|
||||||
|
Get.find<ThreadAPI>(),
|
||||||
|
Get.find<ThreadIsolateWorker>(),
|
||||||
|
Get.find<RemoteExceptionThrower>()));
|
||||||
Get.lazyPut(() => LocalThreadDataSourceImpl(Get.find<EmailCacheManager>()));
|
Get.lazyPut(() => LocalThreadDataSourceImpl(Get.find<EmailCacheManager>()));
|
||||||
Get.lazyPut(() => StateDataSourceImpl(Get.find<StateCacheClient>()));
|
Get.lazyPut(() => StateDataSourceImpl(Get.find<StateCacheClient>()));
|
||||||
Get.lazyPut(() => EmailDataSourceImpl(Get.find<EmailAPI>()));
|
Get.lazyPut(() => EmailDataSourceImpl(Get.find<EmailAPI>()));
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
|||||||
import 'package:model/model.dart';
|
import 'package:model/model.dart';
|
||||||
import 'package:pointer_interceptor/pointer_interceptor.dart';
|
import 'package:pointer_interceptor/pointer_interceptor.dart';
|
||||||
import 'package:tmail_ui_user/features/base/base_controller.dart';
|
import 'package:tmail_ui_user/features/base/base_controller.dart';
|
||||||
|
import 'package:tmail_ui_user/features/caching/caching_manager.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/domain/state/save_email_as_drafts_state.dart';
|
import 'package:tmail_ui_user/features/composer/domain/state/save_email_as_drafts_state.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/domain/state/send_email_state.dart';
|
import 'package:tmail_ui_user/features/composer/domain/state/send_email_state.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/domain/state/update_email_drafts_state.dart';
|
import 'package:tmail_ui_user/features/composer/domain/state/update_email_drafts_state.dart';
|
||||||
@@ -71,6 +72,7 @@ import 'package:tmail_ui_user/features/thread/domain/usecases/search_more_email_
|
|||||||
import 'package:tmail_ui_user/features/thread/presentation/model/delete_action_type.dart';
|
import 'package:tmail_ui_user/features/thread/presentation/model/delete_action_type.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/presentation/model/search_state.dart';
|
import 'package:tmail_ui_user/features/thread/presentation/model/search_state.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/presentation/model/search_status.dart';
|
import 'package:tmail_ui_user/features/thread/presentation/model/search_status.dart';
|
||||||
|
import 'package:tmail_ui_user/main/exceptions/remote_exception.dart';
|
||||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||||
import 'package:tmail_ui_user/main/routes/app_routes.dart';
|
import 'package:tmail_ui_user/main/routes/app_routes.dart';
|
||||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||||
@@ -95,6 +97,7 @@ class ThreadController extends BaseController {
|
|||||||
final EmptyTrashFolderInteractor _emptyTrashFolderInteractor;
|
final EmptyTrashFolderInteractor _emptyTrashFolderInteractor;
|
||||||
final MarkAsEmailReadInteractor _markAsEmailReadInteractor;
|
final MarkAsEmailReadInteractor _markAsEmailReadInteractor;
|
||||||
final MoveToMailboxInteractor _moveToMailboxInteractor;
|
final MoveToMailboxInteractor _moveToMailboxInteractor;
|
||||||
|
final CachingManager _cachingManager;
|
||||||
|
|
||||||
final emailList = <PresentationEmail>[].obs;
|
final emailList = <PresentationEmail>[].obs;
|
||||||
final listEmailDrag = <PresentationEmail>[].obs;
|
final listEmailDrag = <PresentationEmail>[].obs;
|
||||||
@@ -139,6 +142,7 @@ class ThreadController extends BaseController {
|
|||||||
this._emptyTrashFolderInteractor,
|
this._emptyTrashFolderInteractor,
|
||||||
this._markAsEmailReadInteractor,
|
this._markAsEmailReadInteractor,
|
||||||
this._moveToMailboxInteractor,
|
this._moveToMailboxInteractor,
|
||||||
|
this._cachingManager,
|
||||||
);
|
);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -199,8 +203,6 @@ class ThreadController extends BaseController {
|
|||||||
} else if (failure is MarkAsStarMultipleEmailAllFailure
|
} else if (failure is MarkAsStarMultipleEmailAllFailure
|
||||||
|| failure is MarkAsStarMultipleEmailFailure) {
|
|| failure is MarkAsStarMultipleEmailFailure) {
|
||||||
_markAsStarMultipleEmailFailure(failure);
|
_markAsStarMultipleEmailFailure(failure);
|
||||||
} else if (failure is LoadMoreEmailsFailure) {
|
|
||||||
stopFpsMeter();
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
(success) {
|
(success) {
|
||||||
@@ -224,15 +226,15 @@ class ThreadController extends BaseController {
|
|||||||
_markAsEmailReadSuccess(success);
|
_markAsEmailReadSuccess(success);
|
||||||
} else if (success is MoveToMailboxSuccess) {
|
} else if (success is MoveToMailboxSuccess) {
|
||||||
_moveToMailboxSuccess(success);
|
_moveToMailboxSuccess(success);
|
||||||
} else if (success is LoadMoreEmailsSuccess) {
|
|
||||||
stopFpsMeter();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onError(error) {}
|
void onError(error) {
|
||||||
|
_handleErrorGetAllOrRefreshChangesEmail(error);
|
||||||
|
}
|
||||||
|
|
||||||
void _initWorker() {
|
void _initWorker() {
|
||||||
mailboxWorker = ever(mailboxDashBoardController.selectedMailbox, (mailbox) {
|
mailboxWorker = ever(mailboxDashBoardController.selectedMailbox, (mailbox) {
|
||||||
@@ -345,6 +347,16 @@ class ThreadController extends BaseController {
|
|||||||
viewStateWorker.call();
|
viewStateWorker.call();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void _handleErrorGetAllOrRefreshChangesEmail(dynamic error) async {
|
||||||
|
logError('ThreadController::_handleErrorGetAllOrRefreshChangesEmail():Error: $error');
|
||||||
|
if (error is CannotCalculateChangesMethodResponseException) {
|
||||||
|
await _cachingManager.cleanEmailCache();
|
||||||
|
_getAllEmail();
|
||||||
|
} else {
|
||||||
|
super.onError(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void _getAllEmail() {
|
void _getAllEmail() {
|
||||||
if (_accountId != null) {
|
if (_accountId != null) {
|
||||||
_getAllEmailAction(_accountId!, mailboxId: _currentMailboxId);
|
_getAllEmailAction(_accountId!, mailboxId: _currentMailboxId);
|
||||||
@@ -427,10 +439,7 @@ class ThreadController extends BaseController {
|
|||||||
dispatchState(Right(LoadingState()));
|
dispatchState(Right(LoadingState()));
|
||||||
canLoadMore = true;
|
canLoadMore = true;
|
||||||
cancelSelectEmail();
|
cancelSelectEmail();
|
||||||
|
_getAllEmail();
|
||||||
if (_accountId != null) {
|
|
||||||
_getAllEmail();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void _refreshEmailChanges({jmap.State? currentEmailState}) {
|
void _refreshEmailChanges({jmap.State? currentEmailState}) {
|
||||||
|
|||||||
+6
-6
@@ -77,7 +77,7 @@ packages:
|
|||||||
name: build_runner_core
|
name: build_runner_core
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "7.2.6"
|
version: "7.2.7"
|
||||||
built_collection:
|
built_collection:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -91,7 +91,7 @@ packages:
|
|||||||
name: built_value
|
name: built_value
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "8.4.1"
|
version: "8.4.2"
|
||||||
characters:
|
characters:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -372,7 +372,7 @@ packages:
|
|||||||
name: graphs
|
name: graphs
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.0"
|
version: "2.2.0"
|
||||||
html:
|
html:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -420,7 +420,7 @@ packages:
|
|||||||
description:
|
description:
|
||||||
path: "."
|
path: "."
|
||||||
ref: master
|
ref: master
|
||||||
resolved-ref: ab07a8a03d63e20f6ea5e62bcc1ca8cdc1fd93ff
|
resolved-ref: "45ea109f70be0d868b005aadf11a39e2ac816c38"
|
||||||
url: "https://github.com/linagora/jmap-dart-client.git"
|
url: "https://github.com/linagora/jmap-dart-client.git"
|
||||||
source: git
|
source: git
|
||||||
version: "0.0.1"
|
version: "0.0.1"
|
||||||
@@ -617,7 +617,7 @@ packages:
|
|||||||
name: sqflite_common
|
name: sqflite_common
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.3.0"
|
version: "2.4.0"
|
||||||
stack_trace:
|
stack_trace:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -715,7 +715,7 @@ packages:
|
|||||||
name: url_launcher_android
|
name: url_launcher_android
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.0.19"
|
version: "6.0.20"
|
||||||
url_launcher_ios:
|
url_launcher_ios:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|||||||
+7
-7
@@ -91,7 +91,7 @@ packages:
|
|||||||
name: build_runner_core
|
name: build_runner_core
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "7.2.6"
|
version: "7.2.7"
|
||||||
built_collection:
|
built_collection:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@@ -105,7 +105,7 @@ packages:
|
|||||||
name: built_value
|
name: built_value
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "8.4.1"
|
version: "8.4.2"
|
||||||
byte_converter:
|
byte_converter:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@@ -658,7 +658,7 @@ packages:
|
|||||||
name: graphs
|
name: graphs
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.0"
|
version: "2.2.0"
|
||||||
hive:
|
hive:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@@ -757,7 +757,7 @@ packages:
|
|||||||
description:
|
description:
|
||||||
path: "."
|
path: "."
|
||||||
ref: master
|
ref: master
|
||||||
resolved-ref: ab07a8a03d63e20f6ea5e62bcc1ca8cdc1fd93ff
|
resolved-ref: "45ea109f70be0d868b005aadf11a39e2ac816c38"
|
||||||
url: "https://github.com/linagora/jmap-dart-client.git"
|
url: "https://github.com/linagora/jmap-dart-client.git"
|
||||||
source: git
|
source: git
|
||||||
version: "0.0.1"
|
version: "0.0.1"
|
||||||
@@ -1231,7 +1231,7 @@ packages:
|
|||||||
name: sqflite_common
|
name: sqflite_common
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.3.0"
|
version: "2.4.0"
|
||||||
stack_trace:
|
stack_trace:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -1273,7 +1273,7 @@ packages:
|
|||||||
name: syncfusion_flutter_core
|
name: syncfusion_flutter_core
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "20.3.50"
|
version: "20.3.52"
|
||||||
syncfusion_flutter_datepicker:
|
syncfusion_flutter_datepicker:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -1364,7 +1364,7 @@ packages:
|
|||||||
name: url_launcher_android
|
name: url_launcher_android
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.0.19"
|
version: "6.0.20"
|
||||||
url_launcher_ios:
|
url_launcher_ios:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ packages:
|
|||||||
name: build_runner_core
|
name: build_runner_core
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "7.2.6"
|
version: "7.2.7"
|
||||||
built_collection:
|
built_collection:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -91,7 +91,7 @@ packages:
|
|||||||
name: built_value
|
name: built_value
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "8.4.1"
|
version: "8.4.2"
|
||||||
characters:
|
characters:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -234,7 +234,7 @@ packages:
|
|||||||
name: graphs
|
name: graphs
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.0"
|
version: "2.2.0"
|
||||||
http_mock_adapter:
|
http_mock_adapter:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@@ -268,7 +268,7 @@ packages:
|
|||||||
description:
|
description:
|
||||||
path: "."
|
path: "."
|
||||||
ref: master
|
ref: master
|
||||||
resolved-ref: ab07a8a03d63e20f6ea5e62bcc1ca8cdc1fd93ff
|
resolved-ref: "45ea109f70be0d868b005aadf11a39e2ac816c38"
|
||||||
url: "https://github.com/linagora/jmap-dart-client.git"
|
url: "https://github.com/linagora/jmap-dart-client.git"
|
||||||
source: git
|
source: git
|
||||||
version: "0.0.1"
|
version: "0.0.1"
|
||||||
|
|||||||
Reference in New Issue
Block a user