TF-1714 Display animation loading when click refresh mailbox button
(cherry picked from commit d4912afe2e38fdcb15fe4c2d37bde9ae30ff214d)
This commit is contained in:
+8
@@ -110,6 +110,7 @@ import 'package:tmail_ui_user/features/thread/domain/model/filter_message_option
|
||||
import 'package:tmail_ui_user/features/thread/domain/model/search_query.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/state/empty_spam_folder_state.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/state/empty_trash_folder_state.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/state/get_all_email_state.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/state/get_email_by_id_state.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/state/mark_as_multiple_email_read_state.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/state/mark_as_star_multiple_email_state.dart';
|
||||
@@ -192,6 +193,7 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
final _isDraggingMailbox = RxBool(false);
|
||||
final searchMailboxActivated = RxBool(false);
|
||||
final listSendingEmails = RxList<SendingEmail>();
|
||||
final refreshingMailboxState = Rx<Either<Failure, Success>>(Right(UIState.idle));
|
||||
|
||||
Session? sessionCurrent;
|
||||
Map<Role, MailboxId> mapDefaultMailboxIdByRole = {};
|
||||
@@ -2059,6 +2061,12 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
void refreshMailboxAction() async {
|
||||
refreshingMailboxState.value = Right(RefreshAllEmailLoading());
|
||||
await Future.delayed(const Duration(milliseconds: 500));
|
||||
dispatchAction(RefreshAllEmailAction());
|
||||
}
|
||||
|
||||
@override
|
||||
void onClose() {
|
||||
|
||||
@@ -3,6 +3,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:flutter_portal/flutter_portal.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:tmail_ui_user/features/base/widget/cupertino_loading_widget.dart';
|
||||
import 'package:tmail_ui_user/features/base/widget/popup_item_no_icon_widget.dart';
|
||||
import 'package:tmail_ui_user/features/composer/presentation/composer_view_web.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/email_view.dart';
|
||||
@@ -17,6 +18,7 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/sear
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/quick_search_filter.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/download/download_task_item_widget.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/search_input_form_widget.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/state/get_all_email_state.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/styles/banner_delete_all_spam_emails_styles.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/styles/banner_empty_trash_styles.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/widgets/banner_delete_all_spam_emails_widget.dart';
|
||||
@@ -365,17 +367,35 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
||||
|
||||
Widget _buildListButtonTopBar(BuildContext context) {
|
||||
return Row(children: [
|
||||
(ButtonBuilder(imagePaths.icRefresh)
|
||||
..key(const Key('button_reload_thread'))
|
||||
..decoration(const BoxDecoration(
|
||||
borderRadius: BorderRadius.all(Radius.circular(10)),
|
||||
color: AppColor.colorButtonHeaderThread))
|
||||
..paddingIcon(EdgeInsets.zero)
|
||||
..size(16)
|
||||
..radiusSplash(10)
|
||||
..padding(const EdgeInsets.symmetric(horizontal: 8, vertical: 8))
|
||||
..onPressActionClick(() => controller.dispatchAction(RefreshAllEmailAction())))
|
||||
.build(),
|
||||
Obx(() {
|
||||
return controller.refreshingMailboxState.value.fold(
|
||||
(failure) {
|
||||
return TMailButtonWidget.fromIcon(
|
||||
key: const Key('refresh_mailbox_button'),
|
||||
icon: imagePaths.icRefresh,
|
||||
borderRadius: 10,
|
||||
iconSize: 16,
|
||||
onTapActionCallback: controller.refreshMailboxAction,
|
||||
);
|
||||
},
|
||||
(success) {
|
||||
if (success is RefreshAllEmailLoading) {
|
||||
return const TMailContainerWidget(
|
||||
borderRadius: 10,
|
||||
padding: EdgeInsetsDirectional.symmetric(vertical: 8, horizontal: 8.5),
|
||||
child: CupertinoLoadingWidget(size: 16));
|
||||
} else {
|
||||
return TMailButtonWidget.fromIcon(
|
||||
key: const Key('refresh_mailbox_button'),
|
||||
icon: imagePaths.icRefresh,
|
||||
borderRadius: 10,
|
||||
iconSize: 16,
|
||||
onTapActionCallback: controller.refreshMailboxAction,
|
||||
);
|
||||
}
|
||||
}
|
||||
);
|
||||
}),
|
||||
const SizedBox(width: 16),
|
||||
(ButtonBuilder(imagePaths.icSelectAll)
|
||||
..key(const Key('button_select_all'))
|
||||
|
||||
Reference in New Issue
Block a user