From db7334669bffe4db34041ba7755413ad8c2546cc Mon Sep 17 00:00:00 2001 From: dab246 Date: Wed, 13 Mar 2024 02:38:07 +0700 Subject: [PATCH] TF-2684 Add button `Mail to attendees` to open composer with `to: all attendees` --- lib/features/email/domain/model/event_action.dart | 9 ++++++++- .../presentation/controller/single_email_controller.dart | 4 +++- .../calendar_event_action_button_widget.dart | 4 +++- .../calendar_event_information_widget.dart | 1 + .../presentation/widgets/email_receiver_widget.dart | 1 + lib/l10n/intl_messages.arb | 8 +++++++- lib/main/localizations/app_localizations.dart | 7 +++++++ 7 files changed, 30 insertions(+), 4 deletions(-) diff --git a/lib/features/email/domain/model/event_action.dart b/lib/features/email/domain/model/event_action.dart index 144985f9d..adf04ec47 100644 --- a/lib/features/email/domain/model/event_action.dart +++ b/lib/features/email/domain/model/event_action.dart @@ -8,7 +8,8 @@ import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; enum EventActionType { yes, maybe, - no; + no, + mailToAttendees; String getLabelButton(BuildContext context) { switch(this) { @@ -18,6 +19,8 @@ enum EventActionType { return AppLocalizations.of(context).maybe; case EventActionType.no: return AppLocalizations.of(context).no; + case EventActionType.mailToAttendees: + return AppLocalizations.of(context).mailToAttendees; } } @@ -62,6 +65,10 @@ class EventAction with EquatableMixin { EventAction(this.actionType, this.link); + factory EventAction.mailToAttendees() { + return EventAction(EventActionType.mailToAttendees, ''); + } + @override List get props => [actionType, link]; } \ No newline at end of file diff --git a/lib/features/email/presentation/controller/single_email_controller.dart b/lib/features/email/presentation/controller/single_email_controller.dart index 05b04c452..f7516f01b 100644 --- a/lib/features/email/presentation/controller/single_email_controller.dart +++ b/lib/features/email/presentation/controller/single_email_controller.dart @@ -16,6 +16,8 @@ import 'package:jmap_dart_client/jmap/core/id.dart'; import 'package:jmap_dart_client/jmap/core/session/session.dart'; import 'package:jmap_dart_client/jmap/identities/identity.dart'; import 'package:jmap_dart_client/jmap/mail/calendar/calendar_event.dart'; +import 'package:jmap_dart_client/jmap/mail/calendar/properties/attendee/calendar_attendee.dart'; +import 'package:jmap_dart_client/jmap/mail/calendar/properties/calendar_organizer.dart'; import 'package:jmap_dart_client/jmap/mail/email/email.dart'; import 'package:jmap_dart_client/jmap/mail/email/email_address.dart'; import 'package:jmap_dart_client/jmap/mdn/disposition.dart'; @@ -1659,7 +1661,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin { break; } } - + void _acceptCalendarEventAction(EmailId emailId) { if (_acceptCalendarEventInteractor == null || _displayingEventBlobId == null diff --git a/lib/features/email/presentation/widgets/calendar_event/calendar_event_action_button_widget.dart b/lib/features/email/presentation/widgets/calendar_event/calendar_event_action_button_widget.dart index ffe7bbe5d..eb3df766b 100644 --- a/lib/features/email/presentation/widgets/calendar_event/calendar_event_action_button_widget.dart +++ b/lib/features/email/presentation/widgets/calendar_event/calendar_event_action_button_widget.dart @@ -14,6 +14,7 @@ class CalendarEventActionButtonWidget extends StatelessWidget { final OnCalendarEventReplyActionClick onCalendarEventReplyActionClick; final bool calendarEventReplying; final PresentationEmail? presentationEmail; + final VoidCallback? onMailToAttendeesAction; final _responsiveUtils = Get.find(); @@ -23,6 +24,7 @@ class CalendarEventActionButtonWidget extends StatelessWidget { required this.calendarEventReplying, this.margin, this.presentationEmail, + this.onMailToAttendeesAction, }); @override @@ -57,7 +59,7 @@ class CalendarEventActionButtonWidget extends StatelessWidget { color: _getButtonBorderColor(action) ), onTapActionCallback: _getCallbackFunction(action), - ), + ) )) .toList(), ), diff --git a/lib/features/email/presentation/widgets/calendar_event/calendar_event_information_widget.dart b/lib/features/email/presentation/widgets/calendar_event/calendar_event_information_widget.dart index 2c26565c9..f73562fd5 100644 --- a/lib/features/email/presentation/widgets/calendar_event/calendar_event_information_widget.dart +++ b/lib/features/email/presentation/widgets/calendar_event/calendar_event_information_widget.dart @@ -8,6 +8,7 @@ import 'package:tmail_ui_user/features/email/presentation/extensions/calendar_ev import 'package:tmail_ui_user/features/email/presentation/styles/calendar_event_information_widget_styles.dart'; import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/calendar_date_icon_widget.dart'; import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/calendar_event_action_button_widget.dart'; +import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/calendar_event_detail_widget.dart'; import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/event_attendee_information_widget.dart'; import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/event_location_detail_widget.dart'; import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/event_location_information_widget.dart'; diff --git a/lib/features/email/presentation/widgets/email_receiver_widget.dart b/lib/features/email/presentation/widgets/email_receiver_widget.dart index 7c1b859f5..4c385aa60 100644 --- a/lib/features/email/presentation/widgets/email_receiver_widget.dart +++ b/lib/features/email/presentation/widgets/email_receiver_widget.dart @@ -151,6 +151,7 @@ class _EmailReceiverWidgetState extends State { constraints: BoxConstraints(maxHeight: _maxHeight), child: Column( crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, children: [ if (widget.emailSelected.to.numberEmailAddress() > 0) _buildRecipientsWidgetToDisplayFull( diff --git a/lib/l10n/intl_messages.arb b/lib/l10n/intl_messages.arb index e71195ee2..4fc020a49 100644 --- a/lib/l10n/intl_messages.arb +++ b/lib/l10n/intl_messages.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2024-03-12T12:50:35.525381", + "@@last_modified": "2024-03-13T01:12:22.224880", "initializing_data": "Initializing data...", "@initializing_data": { "type": "text", @@ -3851,5 +3851,11 @@ "type": "text", "placeholders_order": [], "placeholders": {} + }, + "mailToAttendees": "Mail to attendees", + "@mailToAttendees": { + "type": "text", + "placeholders_order": [], + "placeholders": {} } } \ No newline at end of file diff --git a/lib/main/localizations/app_localizations.dart b/lib/main/localizations/app_localizations.dart index 73c17632b..f2147bf8e 100644 --- a/lib/main/localizations/app_localizations.dart +++ b/lib/main/localizations/app_localizations.dart @@ -4023,4 +4023,11 @@ class AppLocalizations { name: 'canceling' ); } + + String get mailToAttendees { + return Intl.message( + 'Mail to attendees', + name: 'mailToAttendees' + ); + } } \ No newline at end of file