From 0bbf0ad4d0c3d9b4944cf869002a3f184f4d27ca Mon Sep 17 00:00:00 2001 From: dab246 Date: Tue, 8 Aug 2023 12:23:22 +0700 Subject: [PATCH] TF-1714 Add ThreadViewLoadingBar widget (cherry picked from commit 5f18ad49d9d9ca8e077716df7f0aa9567275dcd7) --- ...thread_view_bottom_loading_bar_widget.dart | 33 +++++++++++++++++++ .../thread_view_loading_bar_widget.dart | 33 +++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 lib/features/thread/presentation/widgets/thread_view_bottom_loading_bar_widget.dart create mode 100644 lib/features/thread/presentation/widgets/thread_view_loading_bar_widget.dart 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 new file mode 100644 index 000000000..6440543e1 --- /dev/null +++ b/lib/features/thread/presentation/widgets/thread_view_bottom_loading_bar_widget.dart @@ -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/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(); + } + } + ); + } +} diff --git a/lib/features/thread/presentation/widgets/thread_view_loading_bar_widget.dart b/lib/features/thread/presentation/widgets/thread_view_loading_bar_widget.dart new file mode 100644 index 000000000..236559210 --- /dev/null +++ b/lib/features/thread/presentation/widgets/thread_view_loading_bar_widget.dart @@ -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/thread/domain/state/get_all_email_state.dart'; +import 'package:tmail_ui_user/features/thread/domain/state/search_email_state.dart'; + +class ThreadViewLoadingBarWidget extends StatelessWidget { + + final Either viewState; + + const ThreadViewLoadingBarWidget({ + super.key, + required this.viewState, + }); + + @override + Widget build(BuildContext context) { + return viewState.fold( + (failure) => const SizedBox.shrink(), + (success) { + if (success is SearchingState || success is GetAllEmailLoading) { + return const Padding( + padding: EdgeInsetsDirectional.only(top: 16), + child: CupertinoLoadingWidget()); + } else { + return const SizedBox.shrink(); + } + } + ); + } +}