TF-2078 Hide mailbox loading bar when change state email

(cherry picked from commit 50fa29b2cd403dd3618cf6723e1a70e00c1e7a20)
This commit is contained in:
dab246
2023-08-10 18:47:36 +07:00
committed by Dat Vu
parent d29321da39
commit 500767ce7c
8 changed files with 49 additions and 13 deletions
@@ -2,6 +2,8 @@ import 'package:core/core.dart';
import 'package:jmap_dart_client/jmap/core/state.dart';
import 'package:model/mailbox/presentation_mailbox.dart';
class GetAllMailboxLoading extends LoadingState {}
class GetAllMailboxSuccess extends UIState {
final List<PresentationMailbox> mailboxList;
final State? currentMailboxState;
@@ -2,7 +2,7 @@ import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
import 'package:model/mailbox/presentation_mailbox.dart';
class LoadingSearchMailbox extends UIState {}
class LoadingSearchMailbox extends LoadingState {}
class SearchMailboxSuccess extends UIState {
@@ -15,7 +15,7 @@ class GetAllMailboxInteractor {
Stream<Either<Failure, Success>> execute(Session session, AccountId accountId, {Properties? properties}) async* {
try {
yield Right<Failure, Success>(LoadingState());
yield Right<Failure, Success>(GetAllMailboxLoading());
yield* _mailboxRepository
.getAllMailbox(
@@ -1,6 +1,5 @@
import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/resources/image_paths.dart';
import 'package:core/presentation/state/success.dart';
import 'package:core/presentation/utils/responsive_utils.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
@@ -30,12 +29,4 @@ abstract class BaseMailboxView extends GetWidget<MailboxController>
const Divider(color: AppColor.colorDividerMailbox, height: 1)
]);
}
Widget buildLoadingView() {
return Obx(() => controller.viewState.value.fold(
(failure) => const SizedBox.shrink(),
(success) => success is LoadingState
? Padding(padding: const EdgeInsets.only(top: 16), child: loadingWidget)
: const SizedBox.shrink()));
}
}
@@ -10,6 +10,8 @@ import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_catego
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_node.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/bottom_bar_selection_mailbox_widget.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/mailbox_item_widget.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/mailbox_folder_tile_builder.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/mailbox_loading_bar_widget.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/sending_queue_mailbox_widget.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/dashboard_routes.dart';
import 'package:tmail_ui_user/features/quotas/presentation/quotas_view.dart';
@@ -166,7 +168,7 @@ class MailboxView extends BaseMailboxView {
}
return buildUserInformation(context);
}),
buildLoadingView(),
Obx(() => MailboxLoadingBarWidget(viewState: controller.viewState.value)),
AppConfig.appGridDashboardAvailable
? buildAppGridDashboard(context, responsiveUtils, imagePaths, controller)
: const SizedBox.shrink(),
@@ -9,6 +9,8 @@ import 'package:tmail_ui_user/features/mailbox/presentation/base_mailbox_view.da
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_categories.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_node.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/mailbox_item_widget.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/mailbox_folder_tile_builder.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/mailbox_loading_bar_widget.dart';
import 'package:tmail_ui_user/features/quotas/presentation/quotas_view.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
import 'package:tmail_ui_user/main/utils/app_config.dart';
@@ -100,7 +102,7 @@ class MailboxView extends BaseMailboxView {
child: Column(children: [
if (!responsiveUtils.isDesktop(context))
buildUserInformation(context),
buildLoadingView(),
Obx(() => MailboxLoadingBarWidget(viewState: controller.viewState.value)),
AppConfig.appGridDashboardAvailable && responsiveUtils.isWebNotDesktop(context)
? buildAppGridDashboard(context, responsiveUtils, imagePaths, controller)
: const SizedBox.shrink(),
@@ -0,0 +1,6 @@
import 'package:flutter/material.dart';
class MailboxLoadingBarWidgetStyles {
static const EdgeInsetsGeometry padding = EdgeInsetsDirectional.only(top: 16);
}
@@ -0,0 +1,33 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
import 'package:dartz/dartz.dart';
import 'package:flutter/material.dart';
import 'package:tmail_ui_user/features/base/widget/cupertino_loading_widget.dart';
import 'package:tmail_ui_user/features/mailbox/domain/state/get_all_mailboxes_state.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/styles/mailbox_loading_bar_widget_styles.dart';
class MailboxLoadingBarWidget extends StatelessWidget {
final Either<Failure, Success> viewState;
const MailboxLoadingBarWidget({
super.key,
required this.viewState,
});
@override
Widget build(BuildContext context) {
return viewState.fold(
(failure) => const SizedBox.shrink(),
(success) {
if (success is GetAllMailboxLoading) {
return const Padding(
padding: MailboxLoadingBarWidgetStyles.padding,
child: CupertinoLoadingWidget());
} else {
return const SizedBox.shrink();
}
}
);
}
}