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:jmap_dart_client/jmap/core/state.dart';
|
||||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||||
|
|
||||||
|
class GetAllMailboxLoading extends LoadingState {}
|
||||||
|
|
||||||
class GetAllMailboxSuccess extends UIState {
|
class GetAllMailboxSuccess extends UIState {
|
||||||
final List<PresentationMailbox> mailboxList;
|
final List<PresentationMailbox> mailboxList;
|
||||||
final State? currentMailboxState;
|
final State? currentMailboxState;
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import 'package:core/presentation/state/failure.dart';
|
|||||||
import 'package:core/presentation/state/success.dart';
|
import 'package:core/presentation/state/success.dart';
|
||||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||||
|
|
||||||
class LoadingSearchMailbox extends UIState {}
|
class LoadingSearchMailbox extends LoadingState {}
|
||||||
|
|
||||||
class SearchMailboxSuccess extends UIState {
|
class SearchMailboxSuccess extends UIState {
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ class GetAllMailboxInteractor {
|
|||||||
|
|
||||||
Stream<Either<Failure, Success>> execute(Session session, AccountId accountId, {Properties? properties}) async* {
|
Stream<Either<Failure, Success>> execute(Session session, AccountId accountId, {Properties? properties}) async* {
|
||||||
try {
|
try {
|
||||||
yield Right<Failure, Success>(LoadingState());
|
yield Right<Failure, Success>(GetAllMailboxLoading());
|
||||||
|
|
||||||
yield* _mailboxRepository
|
yield* _mailboxRepository
|
||||||
.getAllMailbox(
|
.getAllMailbox(
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import 'package:core/presentation/extensions/color_extension.dart';
|
import 'package:core/presentation/extensions/color_extension.dart';
|
||||||
import 'package:core/presentation/resources/image_paths.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:core/presentation/utils/responsive_utils.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
@@ -30,12 +29,4 @@ abstract class BaseMailboxView extends GetWidget<MailboxController>
|
|||||||
const Divider(color: AppColor.colorDividerMailbox, height: 1)
|
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/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/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_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/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/mailbox_dashboard/presentation/model/dashboard_routes.dart';
|
||||||
import 'package:tmail_ui_user/features/quotas/presentation/quotas_view.dart';
|
import 'package:tmail_ui_user/features/quotas/presentation/quotas_view.dart';
|
||||||
@@ -166,7 +168,7 @@ class MailboxView extends BaseMailboxView {
|
|||||||
}
|
}
|
||||||
return buildUserInformation(context);
|
return buildUserInformation(context);
|
||||||
}),
|
}),
|
||||||
buildLoadingView(),
|
Obx(() => MailboxLoadingBarWidget(viewState: controller.viewState.value)),
|
||||||
AppConfig.appGridDashboardAvailable
|
AppConfig.appGridDashboardAvailable
|
||||||
? buildAppGridDashboard(context, responsiveUtils, imagePaths, controller)
|
? buildAppGridDashboard(context, responsiveUtils, imagePaths, controller)
|
||||||
: const SizedBox.shrink(),
|
: 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_categories.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_node.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_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/features/quotas/presentation/quotas_view.dart';
|
||||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||||
import 'package:tmail_ui_user/main/utils/app_config.dart';
|
import 'package:tmail_ui_user/main/utils/app_config.dart';
|
||||||
@@ -100,7 +102,7 @@ class MailboxView extends BaseMailboxView {
|
|||||||
child: Column(children: [
|
child: Column(children: [
|
||||||
if (!responsiveUtils.isDesktop(context))
|
if (!responsiveUtils.isDesktop(context))
|
||||||
buildUserInformation(context),
|
buildUserInformation(context),
|
||||||
buildLoadingView(),
|
Obx(() => MailboxLoadingBarWidget(viewState: controller.viewState.value)),
|
||||||
AppConfig.appGridDashboardAvailable && responsiveUtils.isWebNotDesktop(context)
|
AppConfig.appGridDashboardAvailable && responsiveUtils.isWebNotDesktop(context)
|
||||||
? buildAppGridDashboard(context, responsiveUtils, imagePaths, controller)
|
? buildAppGridDashboard(context, responsiveUtils, imagePaths, controller)
|
||||||
: const SizedBox.shrink(),
|
: 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