TF-2925 Write widget test for thread view

This commit is contained in:
dab246
2024-08-13 01:46:28 +07:00
committed by Dat H. Pham
parent 2a3c880d2e
commit df078728bb
8 changed files with 670 additions and 50 deletions
@@ -248,13 +248,21 @@ class ThreadView extends GetWidget<ThreadController>
Widget _buildListButtonSelectionForMobile(BuildContext context) {
return Obx(() {
if ((PlatformInfo.isMobile || (PlatformInfo.isWeb && controller.isSelectionEnabled()
&& controller.isSearchActive && !controller.responsiveUtils.isDesktop(context)))
&& controller.mailboxDashBoardController.emailsInCurrentMailbox.listEmailSelected.isNotEmpty) {
final listEmailSelected = controller.mailboxDashBoardController.emailsInCurrentMailbox.listEmailSelected;
final currentSelectMode = controller.mailboxDashBoardController.currentSelectMode.value;
final isSearchEmailRunning = controller.searchController.simpleSearchIsActivated.isTrue
|| controller.searchController.advancedSearchIsActivated.isTrue;
if (_validateDisplayBottomBarSelection(
context: context,
listEmailSelected: listEmailSelected,
isSearchEmailRunning: isSearchEmailRunning,
currentSelectMode: currentSelectMode
)) {
return BottomBarThreadSelectionWidget(
controller.imagePaths,
controller.responsiveUtils,
controller.mailboxDashBoardController.emailsInCurrentMailbox.listEmailSelected,
listEmailSelected,
controller.mailboxDashBoardController.selectedMailbox.value,
onPressEmailSelectionActionClick: (actionType, selectionEmail) =>
controller.pressEmailSelectionAction(
@@ -269,6 +277,28 @@ class ThreadView extends GetWidget<ThreadController>
});
}
bool _validateDisplayBottomBarSelection({
required BuildContext context,
required List<PresentationEmail> listEmailSelected,
required bool isSearchEmailRunning,
required SelectMode currentSelectMode,
}) {
if (PlatformInfo.isMobile && listEmailSelected.isNotEmpty) {
return true;
}
if (PlatformInfo.isWeb
&& currentSelectMode == SelectMode.ACTIVE
&& isSearchEmailRunning
&& !controller.responsiveUtils.isDesktop(context)
&& listEmailSelected.isNotEmpty
) {
return true;
}
return false;
}
Widget _buildFloatingButtonCompose(BuildContext context) {
if (controller.responsiveUtils.isWebDesktop(context)) {
return const SizedBox.shrink();
@@ -394,7 +424,7 @@ class ThreadView extends GetWidget<ThreadController>
if (index == listPresentationEmail.length + 1) {
return _buildLoadMoreProgressBar(controller.loadingMoreStatus.value);
}
return _buildEmailItem(
return _buildEmailItem(
context,
listPresentationEmail[index]);
}),
@@ -487,6 +517,7 @@ class ThreadView extends GetWidget<ThreadController>
final selectModeAll = controller.mailboxDashBoardController.currentSelectMode.value;
return EmailTileBuilder(
key: Key('email_tile_builder_${presentationEmail.id?.asString}'),
presentationEmail: presentationEmail,
selectAllMode: selectModeAll,
isShowingEmailContent: isShowingEmailContent,
@@ -571,6 +602,7 @@ class ThreadView extends GetWidget<ThreadController>
: null,
confirmDismiss: (direction) => controller.swipeEmailAction(context, presentationEmail, direction),
child: EmailTileBuilder(
key: Key('email_tile_builder_${presentationEmail.id?.asString}'),
presentationEmail: presentationEmail,
selectAllMode: selectModeAll,
isShowingEmailContent: isShowingEmailContent,
@@ -656,24 +688,24 @@ class ThreadView extends GetWidget<ThreadController>
return Obx(() => controller.viewState.value.fold(
(failure) => const SizedBox.shrink(),
(success) {
if (success is! GetAllEmailLoading && success is! SearchingState) {
if (success is GetAllEmailSuccess
&& success.currentMailboxId != controller.selectedMailboxId) {
return const SizedBox.shrink();
} else {
return EmptyEmailsWidget(
key: const Key('empty_thread_view'),
title: _getMessageEmptyEmail(context),
iconSVG: controller.imagePaths.icEmptyEmail,
subTitle: _getSubMessageEmptyEmail(context),
onCreateFiltersActionCallback: controller.isNewFolderCreated
? controller.goToCreateEmailRuleView
: null,
);
}
} else {
if (success is GetAllEmailLoading || success is SearchingState) {
return const SizedBox.shrink();
}
if (success is GetAllEmailSuccess
&& success.currentMailboxId != controller.selectedMailboxId) {
return const SizedBox.shrink();
} else {
return EmptyEmailsWidget(
key: const Key('empty_thread_view'),
title: _getMessageEmptyEmail(context),
iconSVG: controller.imagePaths.icEmptyEmail,
subTitle: _getSubMessageEmptyEmail(context),
onCreateFiltersActionCallback: controller.isNewFolderCreated
? controller.goToCreateEmailRuleView
: null,
);
}
})
);
}