Add progress loading view when build tree
This commit is contained in:
@@ -277,8 +277,7 @@ mixin MailboxWidgetMixin {
|
|||||||
EdgeInsets? padding
|
EdgeInsets? padding
|
||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
return Container(
|
return Padding(
|
||||||
color: Colors.transparent,
|
|
||||||
padding: padding ?? EdgeInsets.only(
|
padding: padding ?? EdgeInsets.only(
|
||||||
top: 10,
|
top: 10,
|
||||||
left: responsiveUtils.isDesktop(context) ? 0 : 16,
|
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/core/state.dart' as jmap;
|
||||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||||
import 'package:model/mailbox/expand_mode.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/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_action_state.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/domain/model/mailbox_subscribe_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_node.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_tree_builder.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/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/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/localizations/app_localizations.dart';
|
||||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||||
@@ -68,13 +70,13 @@ class MailboxVisibilityController extends BaseMailboxController {
|
|||||||
@override
|
@override
|
||||||
void onData(Either<Failure, Success> newState) {
|
void onData(Either<Failure, Success> newState) {
|
||||||
super.onData(newState);
|
super.onData(newState);
|
||||||
newState.fold((failure) => null, (success) async {
|
newState.fold((failure) => null, (success) {
|
||||||
if (success is GetAllMailboxSuccess) {
|
if (success is GetAllMailboxSuccess) {
|
||||||
currentMailboxState = success.currentMailboxState;
|
currentMailboxState = success.currentMailboxState;
|
||||||
await buildTree(success.mailboxList);
|
_handleBuildTree(success.mailboxList);
|
||||||
} else if (success is RefreshChangesAllMailboxSuccess) {
|
} else if (success is RefreshChangesAllMailboxSuccess) {
|
||||||
currentMailboxState = success.currentMailboxState;
|
currentMailboxState = success.currentMailboxState;
|
||||||
await refreshTree(success.mailboxList);
|
refreshTree(success.mailboxList);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -102,6 +104,12 @@ class MailboxVisibilityController extends BaseMailboxController {
|
|||||||
super.onReady();
|
super.onReady();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void _handleBuildTree(List<PresentationMailbox> mailboxList) async {
|
||||||
|
dispatchState(Right(LoadingBuildTreeMailboxVisibility()));
|
||||||
|
await buildTree(mailboxList);
|
||||||
|
dispatchState(Right(BuildTreeMailboxVisibilitySuccess()));
|
||||||
|
}
|
||||||
|
|
||||||
void subscribeMailbox(MailboxNode mailboxNode) {
|
void subscribeMailbox(MailboxNode mailboxNode) {
|
||||||
final _mailboxSubscribeState = mailboxNode.item.isSubscribedMailbox
|
final _mailboxSubscribeState = mailboxNode.item.isSubscribedMailbox
|
||||||
? MailboxSubscribeState.disabled : MailboxSubscribeState.enabled;
|
? 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/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/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/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/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_folder_tile_builder.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/presentation/mailbox_visibility/widgets/mailbox_visibility_header_widget.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() {
|
Widget _buildLoadingView() {
|
||||||
return Obx(() => controller.viewState.value.fold(
|
return Obx(() => controller.viewState.value.fold(
|
||||||
(failure) => const SizedBox.shrink(),
|
(failure) => const SizedBox.shrink(),
|
||||||
(success) => success is LoadingState
|
(success) => success is LoadingState || success is LoadingBuildTreeMailboxVisibility
|
||||||
? Padding(padding: const EdgeInsets.only(top: 16), child: loadingWidget)
|
? Padding(padding: const EdgeInsets.only(top: 16), child: loadingWidget)
|
||||||
: const SizedBox.shrink()));
|
: 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
|
_mailboxNode.expandMode == ExpandMode.EXPAND
|
||||||
? _imagePaths.icExpandFolder
|
? _imagePaths.icExpandFolder
|
||||||
: _imagePaths.icCollapseFolder,
|
: _imagePaths.icCollapseFolder,
|
||||||
color: _mailboxNode.item.isSubscribedMailbox
|
color: _mailboxNode.item.allowedToDisplay
|
||||||
? AppColor.primaryColor
|
? AppColor.primaryColor
|
||||||
: AppColor.colorIconUnSubscribedMailbox,
|
: AppColor.colorIconUnSubscribedMailbox,
|
||||||
fit: BoxFit.fill
|
fit: BoxFit.fill
|
||||||
|
|||||||
Reference in New Issue
Block a user