Fix email content loaded after 10s

This commit is contained in:
dab246
2022-10-28 14:03:54 +07:00
committed by Dat H. Pham
parent 6554ca5f23
commit 1e855c26bc
4 changed files with 21 additions and 28 deletions
@@ -2,13 +2,7 @@ import 'package:core/core.dart';
import 'package:jmap_dart_client/jmap/mail/email/email.dart'; import 'package:jmap_dart_client/jmap/mail/email/email.dart';
import 'package:model/model.dart'; import 'package:model/model.dart';
class GetEmailContentLoading extends UIState { class GetEmailContentLoading extends LoadingState {}
GetEmailContentLoading();
@override
List<Object> get props => [];
}
class GetEmailContentSuccess extends UIState { class GetEmailContentSuccess extends UIState {
final List<EmailContent> emailContents; final List<EmailContent> emailContents;
@@ -142,7 +142,8 @@ class EmailController extends BaseController with AppLoaderMixin {
} }
void _initWorker() { void _initWorker() {
emailWorker = ever( mailboxDashBoardController.selectedEmail, (presentationEmail) { emailWorker = ever(mailboxDashBoardController.selectedEmail, (presentationEmail) {
log('EmailController::_initWorker(): $presentationEmail');
if (presentationEmail is PresentationEmail) { if (presentationEmail is PresentationEmail) {
if (_currentEmailId != presentationEmail.id) { if (_currentEmailId != presentationEmail.id) {
_currentEmailId = presentationEmail.id; _currentEmailId = presentationEmail.id;
@@ -927,6 +928,7 @@ class EmailController extends BaseController with AppLoaderMixin {
void closeEmailView(BuildContext context) { void closeEmailView(BuildContext context) {
mailboxDashBoardController.clearSelectedEmail(); mailboxDashBoardController.clearSelectedEmail();
_currentEmailId = null; _currentEmailId = null;
_resetToOriginalValue();
if (mailboxDashBoardController.searchController.isSearchEmailRunning) { if (mailboxDashBoardController.searchController.isSearchEmailRunning) {
if (responsiveUtils.isWebDesktop(context)) { if (responsiveUtils.isWebDesktop(context)) {
mailboxDashBoardController.dispatchRoute(DashboardRoutes.thread); mailboxDashBoardController.dispatchRoute(DashboardRoutes.thread);
+16 -19
View File
@@ -7,7 +7,6 @@ import 'package:get/get.dart';
import 'package:jmap_dart_client/jmap/mail/email/email_address.dart'; import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
import 'package:model/model.dart'; import 'package:model/model.dart';
import 'package:tmail_ui_user/features/composer/presentation/extensions/prefix_email_address_extension.dart'; import 'package:tmail_ui_user/features/composer/presentation/extensions/prefix_email_address_extension.dart';
import 'package:tmail_ui_user/features/email/domain/state/get_email_content_state.dart';
import 'package:tmail_ui_user/features/email/presentation/email_controller.dart'; import 'package:tmail_ui_user/features/email/presentation/email_controller.dart';
import 'package:tmail_ui_user/features/email/presentation/widgets/app_bar_mail_widget_builder.dart'; import 'package:tmail_ui_user/features/email/presentation/widgets/app_bar_mail_widget_builder.dart';
import 'package:tmail_ui_user/features/email/presentation/widgets/attachment_file_tile_builder.dart'; import 'package:tmail_ui_user/features/email/presentation/widgets/attachment_file_tile_builder.dart';
@@ -55,6 +54,7 @@ class EmailView extends GetWidget<EmailController> {
: const BoxDecoration(color: Colors.white), : const BoxDecoration(color: Colors.white),
margin: _getMarginEmailView(context), margin: _getMarginEmailView(context),
child: Obx(() { child: Obx(() {
log('EmailView::_buildLoadingView(): ${controller.currentEmail}');
if (controller.currentEmail != null) { if (controller.currentEmail != null) {
return _buildEmailView(context, controller.currentEmail!); return _buildEmailView(context, controller.currentEmail!);
} else { } else {
@@ -286,24 +286,21 @@ class EmailView extends GetWidget<EmailController> {
Widget _buildLoadingView() { Widget _buildLoadingView() {
return Obx(() { return Obx(() {
if (controller.emailContents.isEmpty) { return controller.viewState.value.fold(
return controller.viewState.value.fold( (failure) => const SizedBox.shrink(),
(failure) => const SizedBox.shrink(), (success) {
(success) { log('EmailView::_buildLoadingView(): $success');
if (success is GetEmailContentLoading) { if (success is LoadingState) {
return const Align(alignment: Alignment.topCenter, child: Padding( return const Align(alignment: Alignment.topCenter, child: Padding(
padding: EdgeInsets.all(16), padding: EdgeInsets.all(16),
child: SizedBox( child: SizedBox(
width: 30, width: 30,
height: 30, height: 30,
child: CupertinoActivityIndicator(color: AppColor.colorLoading)))); child: CupertinoActivityIndicator(color: AppColor.colorLoading))));
} else { } else {
return const SizedBox.shrink(); return const SizedBox.shrink();
} }
}); });
} else {
return const SizedBox.shrink();
}
}); });
} }
@@ -2,7 +2,7 @@ import 'package:core/core.dart';
import 'package:jmap_dart_client/jmap/core/state.dart'; import 'package:jmap_dart_client/jmap/core/state.dart';
import 'package:jmap_dart_client/jmap/identities/identity.dart'; import 'package:jmap_dart_client/jmap/identities/identity.dart';
class GetAllIdentitiesLoading extends UIState {} class GetAllIdentitiesLoading extends LoadingState {}
class GetAllIdentitiesSuccess extends UIState { class GetAllIdentitiesSuccess extends UIState {
final List<Identity>? identities; final List<Identity>? identities;