Add progress loading view when build tree
This commit is contained in:
@@ -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,
|
||||
|
||||
+11
-3
@@ -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;
|
||||
|
||||
+2
-1
@@ -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()));
|
||||
}
|
||||
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
import 'package:core/presentation/state/success.dart';
|
||||
|
||||
class LoadingBuildTreeMailboxVisibility extends LoadingState {}
|
||||
|
||||
class BuildTreeMailboxVisibilitySuccess extends UIState {}
|
||||
+1
-1
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user