Apply new design for spam alert on desktop
Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
-93
@@ -1,93 +0,0 @@
|
||||
|
||||
import 'package:core/presentation/extensions/color_extension.dart';
|
||||
import 'package:core/presentation/utils/style_utils.dart';
|
||||
import 'package:core/presentation/utils/theme_utils.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/styles/spam_banner/spam_report_banner_button_styles.dart';
|
||||
|
||||
class SpamReportBannerButtonWidget extends StatelessWidget {
|
||||
|
||||
final String label;
|
||||
final Color labelColor;
|
||||
final VoidCallback onTap;
|
||||
final String? icon;
|
||||
final bool iconLeftAlignment;
|
||||
final bool wrapContent;
|
||||
|
||||
const SpamReportBannerButtonWidget({
|
||||
super.key,
|
||||
required this.label,
|
||||
required this.labelColor,
|
||||
required this.onTap,
|
||||
this.icon,
|
||||
this.iconLeftAlignment = true,
|
||||
this.wrapContent = false,
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Material(
|
||||
color: Colors.transparent,
|
||||
child: InkWell(
|
||||
onTap: onTap,
|
||||
borderRadius: const BorderRadius.all(Radius.circular(SpamReportBannerButtonStyles.borderRadius)),
|
||||
child: Container(
|
||||
width: wrapContent ? null : double.infinity,
|
||||
padding: const EdgeInsetsDirectional.all(SpamReportBannerButtonStyles.padding),
|
||||
decoration: const BoxDecoration(
|
||||
borderRadius: BorderRadius.all(Radius.circular(SpamReportBannerButtonStyles.borderRadius)),
|
||||
color: SpamReportBannerButtonStyles.backgroundColor
|
||||
),
|
||||
child: icon == null
|
||||
? Text(
|
||||
label,
|
||||
textAlign: TextAlign.center,
|
||||
style: ThemeUtils.defaultTextStyleInterFont.copyWith(
|
||||
fontSize: SpamReportBannerButtonStyles.labelTextSize,
|
||||
color: labelColor,
|
||||
fontWeight: FontWeight.w400
|
||||
)
|
||||
)
|
||||
: Row(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
if (iconLeftAlignment)
|
||||
Padding(
|
||||
padding: const EdgeInsetsDirectional.only(end: SpamReportBannerButtonStyles.paddingIcon),
|
||||
child: SvgPicture.asset(
|
||||
icon!,
|
||||
width: SpamReportBannerButtonStyles.iconSize,
|
||||
height: SpamReportBannerButtonStyles.iconSize,
|
||||
colorFilter: labelColor.asFilter(),
|
||||
),
|
||||
),
|
||||
Text(
|
||||
label,
|
||||
textAlign: TextAlign.center,
|
||||
overflow: CommonTextStyle.defaultTextOverFlow,
|
||||
softWrap: CommonTextStyle.defaultSoftWrap,
|
||||
style: ThemeUtils.defaultTextStyleInterFont.copyWith(
|
||||
fontSize: SpamReportBannerButtonStyles.labelTextSize,
|
||||
color: labelColor,
|
||||
fontWeight: FontWeight.w400
|
||||
)
|
||||
),
|
||||
if (!iconLeftAlignment)
|
||||
Padding(
|
||||
padding: const EdgeInsetsDirectional.only(start: SpamReportBannerButtonStyles.paddingIcon),
|
||||
child: SvgPicture.asset(
|
||||
icon!,
|
||||
width: SpamReportBannerButtonStyles.iconSize,
|
||||
height: SpamReportBannerButtonStyles.iconSize,
|
||||
colorFilter: labelColor.asFilter(),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
-60
@@ -1,60 +0,0 @@
|
||||
|
||||
import 'package:core/presentation/resources/image_paths.dart';
|
||||
import 'package:core/presentation/utils/responsive_utils.dart';
|
||||
import 'package:core/presentation/utils/theme_utils.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/styles/spam_banner/spam_report_banner_label_styles.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
|
||||
class SpamReportBannerLabelWidget extends StatelessWidget {
|
||||
|
||||
final String countSpamEmailsAsString;
|
||||
final Color labelColor;
|
||||
|
||||
const SpamReportBannerLabelWidget({
|
||||
super.key,
|
||||
required this.countSpamEmailsAsString,
|
||||
this.labelColor = SpamReportBannerLabelStyles.labelTextColor
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final responsiveUtils = Get.find<ResponsiveUtils>();
|
||||
final imagePaths = Get.find<ImagePaths>();
|
||||
return Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
SvgPicture.asset(
|
||||
imagePaths.icInfoCircleOutline,
|
||||
width: SpamReportBannerLabelStyles.iconSize,
|
||||
height: SpamReportBannerLabelStyles.iconSize
|
||||
),
|
||||
const SizedBox(width: SpamReportBannerLabelStyles.space),
|
||||
if (responsiveUtils.isWebDesktop(context))
|
||||
Text(
|
||||
AppLocalizations.of(context).countNewSpamEmails(countSpamEmailsAsString),
|
||||
textAlign: TextAlign.center,
|
||||
style: ThemeUtils.defaultTextStyleInterFont.copyWith(
|
||||
fontSize: SpamReportBannerLabelStyles.labelTextSize,
|
||||
color: labelColor,
|
||||
fontWeight: FontWeight.w500
|
||||
),
|
||||
)
|
||||
else
|
||||
Flexible(
|
||||
child: Text(
|
||||
AppLocalizations.of(context).countNewSpamEmails(countSpamEmailsAsString),
|
||||
textAlign: TextAlign.center,
|
||||
style: ThemeUtils.defaultTextStyleInterFont.copyWith(
|
||||
fontSize: SpamReportBannerLabelStyles.labelTextSize,
|
||||
color: labelColor,
|
||||
fontWeight: FontWeight.w500
|
||||
),
|
||||
),
|
||||
)
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
-79
@@ -1,79 +0,0 @@
|
||||
import 'package:core/presentation/resources/image_paths.dart';
|
||||
import 'package:core/utils/direction_utils.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/model/spam_report_state.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/spam_report_controller.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/styles/spam_banner/spam_report_banner_button_styles.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/styles/spam_banner/spam_report_banner_label_styles.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/styles/spam_banner/spam_report_banner_web_styles.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/widgets/spam_banner/spam_report_banner_button_widget.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/widgets/spam_banner/spam_report_banner_label_widget.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
|
||||
class SpamReportBannerWebWidget extends StatelessWidget {
|
||||
const SpamReportBannerWebWidget({ Key? key }) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context){
|
||||
final spamReportController = Get.find<SpamReportController>();
|
||||
final imagePaths = Get.find<ImagePaths>();
|
||||
return Obx(() {
|
||||
if (spamReportController.spamReportState.value == SpamReportState.disabled
|
||||
|| spamReportController.presentationSpamMailbox.value == null) {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
return Container(
|
||||
margin: SpamReportBannerWebStyles.bannerMargin,
|
||||
width: double.infinity,
|
||||
padding: SpamReportBannerWebStyles.bannerPadding,
|
||||
decoration: ShapeDecoration(
|
||||
color: SpamReportBannerWebStyles.backgroundColor,
|
||||
shape: const RoundedRectangleBorder(
|
||||
side: BorderSide(
|
||||
width: 1,
|
||||
color: SpamReportBannerWebStyles.strokeBorderColor,
|
||||
),
|
||||
borderRadius: BorderRadius.all(Radius.circular(SpamReportBannerWebStyles.borderRadius)),
|
||||
),
|
||||
),
|
||||
child: Stack(
|
||||
alignment: AlignmentDirectional.center,
|
||||
children: [
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
SpamReportBannerLabelWidget(
|
||||
countSpamEmailsAsString: spamReportController.numberOfUnreadSpamEmails,
|
||||
labelColor: SpamReportBannerLabelStyles.highlightLabelTextColor
|
||||
),
|
||||
const SizedBox(width: 32),
|
||||
SpamReportBannerButtonWidget(
|
||||
label: AppLocalizations.of(context).showDetails,
|
||||
labelColor: SpamReportBannerButtonStyles.positiveButtonTextColor,
|
||||
onTap: spamReportController.openMailbox,
|
||||
icon: DirectionUtils.isDirectionRTLByLanguage(context)
|
||||
? imagePaths.icArrowLeft
|
||||
: imagePaths.icArrowRight,
|
||||
iconLeftAlignment: false,
|
||||
wrapContent: true,
|
||||
),
|
||||
],
|
||||
),
|
||||
PositionedDirectional(
|
||||
end: 0,
|
||||
child: SpamReportBannerButtonWidget(
|
||||
label: AppLocalizations.of(context).dismiss,
|
||||
labelColor: SpamReportBannerButtonStyles.negativeButtonTextColor,
|
||||
onTap: () => spamReportController.dismissSpamReportAction(context),
|
||||
icon: imagePaths.icClose,
|
||||
wrapContent: true,
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
);
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -1,70 +0,0 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/model/spam_report_state.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/spam_report_controller.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/styles/spam_banner/spam_report_banner_button_styles.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/styles/spam_banner/spam_report_banner_styles.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/widgets/spam_banner/spam_report_banner_button_widget.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/widgets/spam_banner/spam_report_banner_label_widget.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
|
||||
class SpamReportBannerWidget extends StatelessWidget {
|
||||
final EdgeInsetsGeometry? margin;
|
||||
final SpamReportController spamReportController;
|
||||
|
||||
const SpamReportBannerWidget({
|
||||
Key? key,
|
||||
required this.spamReportController,
|
||||
this.margin
|
||||
}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context){
|
||||
return Obx(() {
|
||||
if (spamReportController.spamReportState.value == SpamReportState.disabled
|
||||
|| spamReportController.presentationSpamMailbox.value == null) {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
return Container(
|
||||
margin: margin,
|
||||
padding: const EdgeInsetsDirectional.all(SpamReportBannerStyles.padding),
|
||||
decoration: ShapeDecoration(
|
||||
color: SpamReportBannerStyles.backgroundColor,
|
||||
shape: const RoundedRectangleBorder(
|
||||
side: BorderSide(
|
||||
width: 1,
|
||||
color: SpamReportBannerStyles.strokeBorderColor,
|
||||
),
|
||||
borderRadius: BorderRadius.all(Radius.circular(SpamReportBannerStyles.borderRadius)),
|
||||
),
|
||||
),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
SpamReportBannerLabelWidget(countSpamEmailsAsString: spamReportController.numberOfUnreadSpamEmails),
|
||||
const SizedBox(height: SpamReportBannerStyles.space),
|
||||
Row(
|
||||
children: [
|
||||
Expanded(
|
||||
child: SpamReportBannerButtonWidget(
|
||||
label: AppLocalizations.of(context).showDetails,
|
||||
labelColor: SpamReportBannerButtonStyles.positiveButtonTextColor,
|
||||
onTap: spamReportController.openMailbox
|
||||
),
|
||||
),
|
||||
const SizedBox(width: SpamReportBannerStyles.space),
|
||||
Expanded(
|
||||
child: SpamReportBannerButtonWidget(
|
||||
label: AppLocalizations.of(context).dismiss,
|
||||
labelColor: SpamReportBannerButtonStyles.negativeButtonTextColor,
|
||||
onTap: () => spamReportController.dismissSpamReportAction(context)
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user