From eb4806ad642d22cdc681c8a81965ee456250ec25 Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 26 Oct 2023 11:37:09 +0200 Subject: [PATCH] Refactoring --- .../eu/faircode/email/CalendarHelper.java | 34 +++++++++++++++++-- .../java/eu/faircode/email/MessageHelper.java | 33 ++---------------- 2 files changed, 34 insertions(+), 33 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/CalendarHelper.java b/app/src/main/java/eu/faircode/email/CalendarHelper.java index d9741968f4..6e7557a83e 100644 --- a/app/src/main/java/eu/faircode/email/CalendarHelper.java +++ b/app/src/main/java/eu/faircode/email/CalendarHelper.java @@ -33,16 +33,18 @@ import androidx.preference.PreferenceManager; import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Arrays; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.TimeZone; +import javax.mail.Address; +import javax.mail.internet.InternetAddress; + import biweekly.ICalVersion; import biweekly.ICalendar; import biweekly.component.ICalComponent; -import biweekly.component.Observance; -import biweekly.component.StandardTime; import biweekly.component.VAlarm; import biweekly.component.VEvent; import biweekly.io.TimezoneAssignment; @@ -450,4 +452,32 @@ public class CalendarHelper { } } } + + static int getReplyStatus(Context context, VEvent event, EntityMessage message) { + List
recipients = new ArrayList<>(); + if (message.to != null) + recipients.addAll(Arrays.asList(message.to)); + if (message.cc != null) + recipients.addAll(Arrays.asList(message.cc)); + if (message.bcc != null) + recipients.addAll(Arrays.asList(message.bcc)); + + List attendees = event.getAttendees(); + if (attendees != null) + for (Attendee attendee : attendees) { + String email = attendee.getEmail(); + for (Address address : recipients) { + String recipient = ((InternetAddress) address).getAddress(); + if (!TextUtils.isEmpty(email) && email.equalsIgnoreCase(recipient)) { + ParticipationStatus pstatus = attendee.getParticipationStatus(); + if (ParticipationStatus.ACCEPTED.equals(pstatus)) + return CalendarContract.Events.STATUS_CONFIRMED; + else if (ParticipationStatus.DECLINED.equals(pstatus)) + return CalendarContract.Events.STATUS_CANCELED; + } + } + } + + return CalendarContract.Events.STATUS_TENTATIVE; + } } diff --git a/app/src/main/java/eu/faircode/email/MessageHelper.java b/app/src/main/java/eu/faircode/email/MessageHelper.java index 3a11ca68c1..0d3b94d7ac 100644 --- a/app/src/main/java/eu/faircode/email/MessageHelper.java +++ b/app/src/main/java/eu/faircode/email/MessageHelper.java @@ -158,8 +158,6 @@ import javax.mail.internet.ParseException; import biweekly.Biweekly; import biweekly.ICalendar; import biweekly.component.VEvent; -import biweekly.parameter.ParticipationStatus; -import biweekly.property.Attendee; import biweekly.property.Method; import ezvcard.VCard; import ezvcard.VCardVersion; @@ -4454,35 +4452,8 @@ public class MessageHelper { CalendarHelper.delete(context, event, message); else if (method == null || method.isRequest() || method.isReply()) { int status = CalendarContract.Events.STATUS_TENTATIVE; - if (method != null && method.isReply()) { - List
recipients = new ArrayList<>(); - if (message.to != null) - recipients.addAll(Arrays.asList(message.to)); - if (message.cc != null) - recipients.addAll(Arrays.asList(message.cc)); - if (message.bcc != null) - recipients.addAll(Arrays.asList(message.bcc)); - List attendees = event.getAttendees(); - if (attendees != null) - for (Attendee attendee : attendees) { - String email = attendee.getEmail(); - for (Address address : recipients) { - String recipient = ((InternetAddress) address).getAddress(); - if (!TextUtils.isEmpty(email) && email.equalsIgnoreCase(recipient)) { - ParticipationStatus pstatus = attendee.getParticipationStatus(); - if (ParticipationStatus.ACCEPTED.equals(pstatus)) { - status = CalendarContract.Events.STATUS_CONFIRMED; - break; - } else if (ParticipationStatus.DECLINED.equals(pstatus)) { - status = CalendarContract.Events.STATUS_CANCELED; - break; - } - } - } - if (status != CalendarContract.Events.STATUS_TENTATIVE) - break; - } - } + if (method != null && method.isReply()) + status = CalendarHelper.getReplyStatus(context, event, message); if (status == CalendarContract.Events.STATUS_CANCELED) { CalendarHelper.delete(context, event, message);