diff --git a/lib/features/email/presentation/widgets/calendar_event/attendee_widget.dart b/lib/features/email/presentation/widgets/calendar_event/attendee_widget.dart index 91053ee44..c3d601e70 100644 --- a/lib/features/email/presentation/widgets/calendar_event/attendee_widget.dart +++ b/lib/features/email/presentation/widgets/calendar_event/attendee_widget.dart @@ -2,19 +2,15 @@ import 'package:core/presentation/extensions/color_extension.dart'; import 'package:flutter/material.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:tmail_ui_user/features/email/presentation/styles/attendee_widget_styles.dart'; -import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; class AttendeeWidget extends StatelessWidget { final CalendarAttendee attendee; - final CalendarOrganizer organizer; const AttendeeWidget({ super.key, - required this.attendee, - required this.organizer + required this.attendee }); @override @@ -38,8 +34,6 @@ class AttendeeWidget extends StatelessWidget { fontWeight: FontWeight.w500 ), ), - if (attendee.mailto?.mailAddress == organizer.mailto) - TextSpan(text: '(${AppLocalizations.of(context).organizer})'), const TextSpan(text: ', '), ] ) diff --git a/lib/features/email/presentation/widgets/calendar_event/event_attendee_detail_widget.dart b/lib/features/email/presentation/widgets/calendar_event/event_attendee_detail_widget.dart index 7b4a0333d..9a450d680 100644 --- a/lib/features/email/presentation/widgets/calendar_event/event_attendee_detail_widget.dart +++ b/lib/features/email/presentation/widgets/calendar_event/event_attendee_detail_widget.dart @@ -6,11 +6,12 @@ import 'package:jmap_dart_client/jmap/mail/calendar/properties/calendar_organize import 'package:tmail_ui_user/features/email/presentation/extensions/list_attendee_extension.dart'; import 'package:tmail_ui_user/features/email/presentation/styles/event_attendee_detail_widget_styles.dart'; import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/attendee_widget.dart'; +import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/organizer_widget.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; class EventAttendeeDetailWidget extends StatelessWidget { - static const int _maxAttendeeDisplayed = 5; + static const int _maxAttendeeDisplayed = 6; final List attendees; final CalendarOrganizer organizer; @@ -40,10 +41,9 @@ class EventAttendeeDetailWidget extends StatelessWidget { Expanded(child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - if (attendeeOrganizer != null) - AttendeeWidget(attendee: attendeeOrganizer!, organizer: organizer), + OrganizerWidget(organizer: organizer), ..._attendeesDisplayed - .map((attendee) => AttendeeWidget(attendee: attendee, organizer: organizer)) + .map((attendee) => AttendeeWidget(attendee: attendee)) .toList() ] )) @@ -51,14 +51,6 @@ class EventAttendeeDetailWidget extends StatelessWidget { ); } - CalendarAttendee? get attendeeOrganizer { - try { - return attendees.firstWhere((attendee) => attendee.mailto?.mailAddress == organizer.mailto); - } catch (e) { - return null; - } - } - List get _attendeesDisplayed { final attendeesWithoutOrganizer = attendees.withoutOrganizer(organizer); return attendeesWithoutOrganizer.length > _maxAttendeeDisplayed diff --git a/lib/features/email/presentation/widgets/calendar_event/organizer_widget.dart b/lib/features/email/presentation/widgets/calendar_event/organizer_widget.dart new file mode 100644 index 000000000..0925bb758 --- /dev/null +++ b/lib/features/email/presentation/widgets/calendar_event/organizer_widget.dart @@ -0,0 +1,44 @@ + +import 'package:core/presentation/extensions/color_extension.dart'; +import 'package:flutter/material.dart'; +import 'package:jmap_dart_client/jmap/mail/calendar/properties/calendar_organizer.dart'; +import 'package:tmail_ui_user/features/email/presentation/styles/attendee_widget_styles.dart'; +import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; + +class OrganizerWidget extends StatelessWidget { + + final CalendarOrganizer organizer; + + const OrganizerWidget({ + super.key, + required this.organizer + }); + + @override + Widget build(BuildContext context) { + return RichText( + text: TextSpan( + style: const TextStyle( + fontSize: AttendeeWidgetStyles.textSize, + fontWeight: FontWeight.w500, + color: Colors.black + ), + children: [ + if (organizer.name?.isNotEmpty == true) + TextSpan(text: organizer.name!), + if (organizer.mailto?.value.isNotEmpty == true) + TextSpan( + text: ' <${organizer.mailto!.value}> ', + style: const TextStyle( + color: AppColor.colorMailto, + fontSize: AttendeeWidgetStyles.textSize, + fontWeight: FontWeight.w500 + ), + ), + TextSpan(text: '(${AppLocalizations.of(context).organizer})'), + const TextSpan(text: ', '), + ] + ) + ); + } +} \ No newline at end of file