TF-2078 Hide mailbox loading bar when change state email
(cherry picked from commit 50fa29b2cd403dd3618cf6723e1a70e00c1e7a20)
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user