From c53ffd4a15aaa6f74bf957c3614e0856ab5b3b0e Mon Sep 17 00:00:00 2001 From: dab246 Date: Thu, 18 Jan 2024 20:19:14 +0700 Subject: [PATCH] TF-2362 Add `LoadMoreProgressBar` as item email list Signed-off-by: dab246 (cherry picked from commit 1e3ffabfad18df3a1dc72de629413049b96fe595) --- .../thread/presentation/thread_view.dart | 19 ++++++++--- ...thread_view_bottom_loading_bar_widget.dart | 33 ------------------- 2 files changed, 15 insertions(+), 37 deletions(-) delete mode 100644 lib/features/thread/presentation/widgets/thread_view_bottom_loading_bar_widget.dart diff --git a/lib/features/thread/presentation/thread_view.dart b/lib/features/thread/presentation/thread_view.dart index 47f462039..927fb9f59 100644 --- a/lib/features/thread/presentation/thread_view.dart +++ b/lib/features/thread/presentation/thread_view.dart @@ -37,7 +37,6 @@ import 'package:tmail_ui_user/features/thread/presentation/widgets/empty_emails_ import 'package:tmail_ui_user/features/thread/presentation/widgets/filter_message_cupertino_action_sheet_action_builder.dart'; import 'package:tmail_ui_user/features/thread/presentation/widgets/scroll_to_top_button_widget.dart'; import 'package:tmail_ui_user/features/thread/presentation/widgets/spam_banner/spam_report_banner_widget.dart'; -import 'package:tmail_ui_user/features/thread/presentation/widgets/thread_view_bottom_loading_bar_widget.dart'; import 'package:tmail_ui_user/features/thread/presentation/widgets/thread_view_loading_bar_widget.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; import 'package:tmail_ui_user/main/routes/route_navigation.dart'; @@ -190,7 +189,6 @@ class ThreadView extends GetWidget }) ) ), - Obx(() => ThreadViewBottomLoadingBarWidget(viewState: controller.viewState.value)), _buildListButtonSelectionForMobile(context), ] ) @@ -355,13 +353,16 @@ class ThreadView extends GetWidget key: const PageStorageKey('list_presentation_email_in_threads'), controller: controller.listEmailController, physics: const AlwaysScrollableScrollPhysics(), - itemCount: listPresentationEmail.length + 1, + itemCount: listPresentationEmail.length + 2, itemBuilder: (context, index) => Obx(() { if (index == listPresentationEmail.length) { return _buildLoadMoreButton( context, controller.loadingMoreStatus.value); } + if (index == listPresentationEmail.length + 1) { + return _buildLoadMoreProgressBar(controller.loadingMoreStatus.value); + } return _buildEmailItemNotDraggable( context, listPresentationEmail[index]); @@ -386,13 +387,16 @@ class ThreadView extends GetWidget key: const PageStorageKey('list_presentation_email_in_threads'), controller: controller.listEmailController, physics: const AlwaysScrollableScrollPhysics(), - itemCount: listPresentationEmail.length + 1, + itemCount: listPresentationEmail.length + 2, itemBuilder: (context, index) => Obx(() { if (index == listPresentationEmail.length) { return _buildLoadMoreButton( context, controller.loadingMoreStatus.value); } + if (index == listPresentationEmail.length + 1) { + return _buildLoadMoreProgressBar(controller.loadingMoreStatus.value); + } return _buildEmailItem( context, listPresentationEmail[index]); @@ -454,6 +458,13 @@ class ThreadView extends GetWidget return const SizedBox.shrink(); } + Widget _buildLoadMoreProgressBar(LoadingMoreStatus loadingMoreStatus) { + if (loadingMoreStatus.isRunning) { + return const CupertinoLoadingWidget(); + } + return const SizedBox.shrink(); + } + Widget _buildEmailItem(BuildContext context, PresentationEmail presentationEmail) { if (controller.responsiveUtils.isWebDesktop(context)) { return _buildEmailItemDraggable(context, presentationEmail); diff --git a/lib/features/thread/presentation/widgets/thread_view_bottom_loading_bar_widget.dart b/lib/features/thread/presentation/widgets/thread_view_bottom_loading_bar_widget.dart deleted file mode 100644 index 85e717911..000000000 --- a/lib/features/thread/presentation/widgets/thread_view_bottom_loading_bar_widget.dart +++ /dev/null @@ -1,33 +0,0 @@ -import 'package:core/presentation/state/failure.dart'; -import 'package:core/presentation/state/success.dart'; -import 'package:core/presentation/views/loading/cupertino_loading_widget.dart'; -import 'package:dartz/dartz.dart'; -import 'package:flutter/material.dart'; -import 'package:tmail_ui_user/features/thread/domain/state/load_more_emails_state.dart'; -import 'package:tmail_ui_user/features/thread/domain/state/search_more_email_state.dart'; - -class ThreadViewBottomLoadingBarWidget extends StatelessWidget { - - final Either viewState; - - const ThreadViewBottomLoadingBarWidget({ - super.key, - required this.viewState, - }); - - @override - Widget build(BuildContext context) { - return viewState.fold( - (failure) => const SizedBox.shrink(), - (success) { - if (success is SearchingMoreState || success is LoadingMoreEmails) { - return const Padding( - padding: EdgeInsetsDirectional.only(bottom: 16), - child: CupertinoLoadingWidget()); - } else { - return const SizedBox.shrink(); - } - } - ); - } -}