Add progress loading view when build tree

This commit is contained in:
dab246
2023-02-17 15:24:46 +07:00
committed by Dat Vu
parent d50b5044e1
commit 062f444b86
5 changed files with 20 additions and 7 deletions
@@ -277,8 +277,7 @@ mixin MailboxWidgetMixin {
EdgeInsets? padding
}
) {
return Container(
color: Colors.transparent,
return Padding(
padding: padding ?? EdgeInsets.only(
top: 10,
left: responsiveUtils.isDesktop(context) ? 0 : 16,
@@ -12,6 +12,7 @@ import 'package:get/get.dart';
import 'package:jmap_dart_client/jmap/core/state.dart' as jmap;
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
import 'package:model/mailbox/expand_mode.dart';
import 'package:model/mailbox/presentation_mailbox.dart';
import 'package:tmail_ui_user/features/base/base_mailbox_controller.dart';
import 'package:tmail_ui_user/features/mailbox/domain/model/mailbox_subscribe_action_state.dart';
import 'package:tmail_ui_user/features/mailbox/domain/model/mailbox_subscribe_state.dart';
@@ -29,6 +30,7 @@ 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_tree_builder.dart';
import 'package:tmail_ui_user/features/mailbox_creator/domain/usecases/verify_name_interactor.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/mailbox_visibility/state/mailbox_visibility_state.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/manage_account_dashboard_controller.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
@@ -68,13 +70,13 @@ class MailboxVisibilityController extends BaseMailboxController {
@override
void onData(Either<Failure, Success> newState) {
super.onData(newState);
newState.fold((failure) => null, (success) async {
newState.fold((failure) => null, (success) {
if (success is GetAllMailboxSuccess) {
currentMailboxState = success.currentMailboxState;
await buildTree(success.mailboxList);
_handleBuildTree(success.mailboxList);
} else if (success is RefreshChangesAllMailboxSuccess) {
currentMailboxState = success.currentMailboxState;
await refreshTree(success.mailboxList);
refreshTree(success.mailboxList);
}
});
}
@@ -102,6 +104,12 @@ class MailboxVisibilityController extends BaseMailboxController {
super.onReady();
}
void _handleBuildTree(List<PresentationMailbox> mailboxList) async {
dispatchState(Right(LoadingBuildTreeMailboxVisibility()));
await buildTree(mailboxList);
dispatchState(Right(BuildTreeMailboxVisibilitySuccess()));
}
void subscribeMailbox(MailboxNode mailboxNode) {
final _mailboxSubscribeState = mailboxNode.item.isSubscribedMailbox
? MailboxSubscribeState.disabled : MailboxSubscribeState.enabled;
@@ -12,6 +12,7 @@ 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/manage_account/presentation/base/setting_detail_view_builder.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/mailbox_visibility/mailbox_visibility_controller.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/mailbox_visibility/state/mailbox_visibility_state.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/mailbox_visibility/utils/mailbox_visibility_utils.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/mailbox_visibility/widgets/mailbox_visibility_folder_tile_builder.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/mailbox_visibility/widgets/mailbox_visibility_header_widget.dart';
@@ -56,7 +57,7 @@ class MailboxVisibilityView extends GetWidget<MailboxVisibilityController>
Widget _buildLoadingView() {
return Obx(() => controller.viewState.value.fold(
(failure) => const SizedBox.shrink(),
(success) => success is LoadingState
(success) => success is LoadingState || success is LoadingBuildTreeMailboxVisibility
? Padding(padding: const EdgeInsets.only(top: 16), child: loadingWidget)
: const SizedBox.shrink()));
}
@@ -0,0 +1,5 @@
import 'package:core/presentation/state/success.dart';
class LoadingBuildTreeMailboxVisibility extends LoadingState {}
class BuildTreeMailboxVisibilitySuccess extends UIState {}
@@ -62,7 +62,7 @@ class MailBoxVisibilityFolderTileBuilder extends StatelessWidget {
_mailboxNode.expandMode == ExpandMode.EXPAND
? _imagePaths.icExpandFolder
: _imagePaths.icCollapseFolder,
color: _mailboxNode.item.isSubscribedMailbox
color: _mailboxNode.item.allowedToDisplay
? AppColor.primaryColor
: AppColor.colorIconUnSubscribedMailbox,
fit: BoxFit.fill