TF-616 Update presentation layer for MarkAsReadMailbox

This commit is contained in:
dab246
2022-06-30 11:16:20 +07:00
committed by Dat H. Pham
parent 71da676212
commit 589abfafb8
14 changed files with 246 additions and 134 deletions
@@ -34,7 +34,7 @@ import 'package:tmail_ui_user/features/email/domain/usecases/mark_as_star_email_
import 'package:tmail_ui_user/features/email/domain/usecases/move_to_mailbox_interactor.dart';
import 'package:tmail_ui_user/features/email/presentation/model/composer_arguments.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_actions.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/mark_as_mailbox_read_state.dart';
import 'package:tmail_ui_user/features/mailbox/domain/state/mark_as_mailbox_read_state.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/remove_email_drafts_state.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/action/dashboard_action.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
@@ -299,6 +299,7 @@ class ThreadController extends BaseController {
|| success is RemoveEmailDraftsSuccess
|| success is SendEmailSuccess
|| success is MarkAsMailboxReadAllSuccess
|| success is MarkAsMailboxReadHasSomeEmailFailure
|| success is UpdateEmailDraftsSuccess) {
_refreshEmailChanges();
}
@@ -7,6 +7,7 @@ import 'package:model/model.dart';
import 'package:tmail_ui_user/features/base/mixin/app_loader_mixin.dart';
import 'package:tmail_ui_user/features/email/presentation/model/composer_arguments.dart';
import 'package:tmail_ui_user/features/email/presentation/widgets/email_action_cupertino_action_sheet_action_builder.dart';
import 'package:tmail_ui_user/features/mailbox/domain/state/mark_as_mailbox_read_state.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/model/recent_search.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/mixin/filter_email_popup_menu_mixin.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_receive_time_type.dart';
@@ -102,6 +103,8 @@ class ThreadView extends GetWidget<ThreadController> with AppLoaderMixin,
return const SizedBox.shrink();
}
}),
if (!_responsiveUtils.isDesktop(context))
_buildMarkAsMailboxReadLoading(context),
Expanded(child: Container(
alignment: Alignment.center,
margin: BuildUtils.isWeb && _responsiveUtils.isDesktop(context)
@@ -805,4 +808,33 @@ class ThreadView extends GetWidget<ThreadController> with AppLoaderMixin,
]));
});
}
Widget _buildMarkAsMailboxReadLoading(BuildContext context) {
return Obx(() {
final viewState = controller.mailboxDashBoardController.viewStateMarkAsReadMailbox.value;
return viewState.fold(
(failure) => const SizedBox.shrink(),
(success) {
if (success is MarkAsMailboxReadLoading) {
return Padding(
padding: EdgeInsets.only(
top: _responsiveUtils.isDesktop(context) ? 16 : 0,
left: 16,
right: 16,
bottom: _responsiveUtils.isDesktop(context) ? 0 : 16),
child: horizontalLoadingWidget);
} else if (success is UpdatingMarkAsMailboxReadState) {
final percent = success.countRead / success.totalUnread;
return Padding(
padding: EdgeInsets.only(
top: _responsiveUtils.isDesktop(context) ? 16 : 0,
left: 16,
right: 16,
bottom: _responsiveUtils.isDesktop(context) ? 0 : 16),
child: horizontalPercentLoadingWidget(percent));
}
return const SizedBox.shrink();
});
});
}
}