TF-1710 Show banner delete all spam emails

(cherry picked from commit 6b45dcd8de1ca83225994d8918c0998515634d40)
This commit is contained in:
dab246
2023-08-03 18:42:40 +07:00
committed by Dat Vu
parent b0e21bd479
commit 7f35974b3b
7 changed files with 223 additions and 1 deletions
@@ -0,0 +1,21 @@
import 'package:core/presentation/extensions/color_extension.dart';
import 'package:flutter/material.dart';
class BannerDeleteAllSpamEmailsStyles {
static const double borderRadius = 14;
static const double buttonBorderRadius = 20;
static const double horizontalPadding = 16;
static const double verticalPadding = 10;
static const double webEndMargin = 16;
static const double webTopMargin = 8;
static const double mobileMargin = 16;
static const double labelTextSize = 13;
static const double buttonTextSize = 17;
static const double iconSize = 20;
static const double space = 8;
static const Color backgroundColor = Colors.white;
static const Color borderStrokeColor = AppColor.colorBorderBodyThread;
static const Color labelTextColor = AppColor.colorSubtitle;
static const Color buttonTextColor = AppColor.toastErrorBackgroundColor;
}
@@ -20,8 +20,10 @@ import 'package:tmail_ui_user/features/thread/domain/model/filter_message_option
import 'package:tmail_ui_user/features/thread/domain/state/search_email_state.dart';
import 'package:tmail_ui_user/features/thread/domain/state/search_more_email_state.dart';
import 'package:tmail_ui_user/features/thread/presentation/model/delete_action_type.dart';
import 'package:tmail_ui_user/features/thread/presentation/styles/banner_delete_all_spam_emails_styles.dart';
import 'package:tmail_ui_user/features/thread/presentation/thread_controller.dart';
import 'package:tmail_ui_user/features/thread/presentation/widgets/app_bar_thread_widget_builder.dart';
import 'package:tmail_ui_user/features/thread/presentation/widgets/banner_delete_all_spam_emails_widget.dart';
import 'package:tmail_ui_user/features/thread/presentation/widgets/bottom_bar_thread_selection_widget.dart';
import 'package:tmail_ui_user/features/thread/presentation/widgets/email_tile_builder.dart'
if (dart.library.html) 'package:tmail_ui_user/features/thread/presentation/widgets/email_tile_web_builder.dart';
@@ -77,6 +79,20 @@ class ThreadView extends GetWidget<ThreadController>
_buildVacationNotificationMessage(context),
],
_buildEmptyTrashButton(context),
Obx(() {
if (controller.mailboxDashBoardController.isEmptySpamBannerEnabledOnMobile(context)) {
return Padding(
padding: const EdgeInsetsDirectional.symmetric(
horizontal: BannerDeleteAllSpamEmailsStyles.mobileMargin
),
child: BannerDeleteAllSpamEmailsWidget(
onTapAction: () => controller.mailboxDashBoardController.openDialogEmptySpamFolder(context)
),
);
} else {
return const SizedBox.shrink();
}
}),
if (!_responsiveUtils.isDesktop(context))
_buildMarkAsMailboxReadLoading(context),
_buildLoadingView(),
@@ -0,0 +1,79 @@
import 'package:core/presentation/resources/image_paths.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.dart';
import 'package:tmail_ui_user/features/thread/presentation/styles/banner_delete_all_spam_emails_styles.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
class BannerDeleteAllSpamEmailsWidget extends StatelessWidget {
final VoidCallback onTapAction;
const BannerDeleteAllSpamEmailsWidget({super.key, required this.onTapAction});
@override
Widget build(BuildContext context) {
final imagePaths = Get.find<ImagePaths>();
return Container(
decoration: const ShapeDecoration(
color: BannerDeleteAllSpamEmailsStyles.backgroundColor,
shape: RoundedRectangleBorder(
side: BorderSide(
width: 1,
color: BannerDeleteAllSpamEmailsStyles.borderStrokeColor,
),
borderRadius: BorderRadius.all(Radius.circular(BannerDeleteAllSpamEmailsStyles.borderRadius)),
),
),
child: Material(
color: Colors.transparent,
child: InkWell(
onTap: onTapAction,
borderRadius: const BorderRadius.all(Radius.circular(BannerDeleteAllSpamEmailsStyles.borderRadius)),
child: Padding(
padding: const EdgeInsetsDirectional.symmetric(
horizontal: BannerDeleteAllSpamEmailsStyles.horizontalPadding,
vertical: BannerDeleteAllSpamEmailsStyles.verticalPadding
),
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SvgPicture.asset(
imagePaths.icDeleteRuleMobile,
width: BannerDeleteAllSpamEmailsStyles.iconSize,
height: BannerDeleteAllSpamEmailsStyles.iconSize,
fit: BoxFit.fill
),
const SizedBox(width: BannerDeleteAllSpamEmailsStyles.space),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
AppLocalizations.of(context).deleteAllSpamEmailsNow,
style: const TextStyle(
fontSize: BannerDeleteAllSpamEmailsStyles.buttonTextSize,
fontWeight: FontWeight.w500,
color: BannerDeleteAllSpamEmailsStyles.buttonTextColor
)
),
Text(
AppLocalizations.of(context).bannerDeleteAllSpamEmailsMessage,
style: const TextStyle(
color: BannerDeleteAllSpamEmailsStyles.labelTextColor,
fontSize: BannerDeleteAllSpamEmailsStyles.labelTextSize,
fontWeight: FontWeight.w400
)
),
]
)
)
]
),
),
),
),
);
}
}