diff --git a/app/src/main/java/eu/faircode/email/AdapterMessage.java b/app/src/main/java/eu/faircode/email/AdapterMessage.java index e6361e4bd5..f78de47e3a 100644 --- a/app/src/main/java/eu/faircode/email/AdapterMessage.java +++ b/app/src/main/java/eu/faircode/email/AdapterMessage.java @@ -189,8 +189,11 @@ import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import biweekly.Biweekly; +import biweekly.ICalVersion; import biweekly.ICalendar; import biweekly.component.VEvent; +import biweekly.io.WriteContext; +import biweekly.io.scribe.property.RecurrenceRuleScribe; import biweekly.parameter.ParticipationStatus; import biweekly.property.Attendee; import biweekly.property.CalendarScale; @@ -199,6 +202,7 @@ import biweekly.property.LastModified; import biweekly.property.Method; import biweekly.property.Organizer; import biweekly.property.RawProperty; +import biweekly.property.RecurrenceRule; import biweekly.property.Summary; import biweekly.property.Transparency; import biweekly.util.ICalDate; @@ -3652,6 +3656,14 @@ public class AdapterMessage extends RecyclerView.Adapter 0) // intent.putExtra(Intent.EXTRA_EMAIL, TextUtils.join(",", attendee)); diff --git a/app/src/main/java/eu/faircode/email/MessageHelper.java b/app/src/main/java/eu/faircode/email/MessageHelper.java index 8ac5ac08e4..69fc84ce07 100644 --- a/app/src/main/java/eu/faircode/email/MessageHelper.java +++ b/app/src/main/java/eu/faircode/email/MessageHelper.java @@ -144,9 +144,13 @@ import javax.mail.internet.ParameterList; import javax.mail.internet.ParseException; import biweekly.Biweekly; +import biweekly.ICalVersion; import biweekly.ICalendar; import biweekly.component.VEvent; +import biweekly.io.WriteContext; +import biweekly.io.scribe.property.RecurrenceRuleScribe; import biweekly.property.Method; +import biweekly.property.RecurrenceRule; import biweekly.util.ICalDate; public class MessageHelper { @@ -3901,14 +3905,27 @@ public class MessageHelper { ICalDate start = (event.getDateStart() == null ? null : event.getDateStart().getValue()); ICalDate end = (event.getDateEnd() == null ? null : event.getDateEnd().getValue()); + String rrule = null; + RecurrenceRule recurrence = event.getRecurrenceRule(); + if (recurrence != null) { + RecurrenceRuleScribe scribe = new RecurrenceRuleScribe(); + WriteContext wcontext = new WriteContext(ICalVersion.V2_0, icalendar.getTimezoneInfo(), null); + rrule = scribe.writeText(recurrence, wcontext); + } + String uid = (event.getUid() == null ? null : event.getUid().getValue()); EntityLog.log(context, EntityLog.Type.General, message, "Processing event" + - " uid=" + uid + " method=" + method + " calendar=" + account.calendar); + " uid=" + uid + + " method=" + method + + " start=" + (start != null) + + " end=" + (end != null) + + " rrule=" + rrule + + " calendar=" + account.calendar); - if (icalendar.getMethod() != null && - start != null && end != null && - !TextUtils.isEmpty(uid)) { + if (!TextUtils.isEmpty(uid) && + icalendar.getMethod() != null && + start != null && end != null) { ContentResolver resolver = context.getContentResolver(); if (icalendar.getMethod().isRequest() || icalendar.getMethod().isCancel()) @@ -3948,6 +3965,8 @@ public class MessageHelper { values.put(CalendarContract.Events.EVENT_TIMEZONE, TimeZone.getDefault().getID()); values.put(CalendarContract.Events.DTSTART, start.getTime()); values.put(CalendarContract.Events.DTEND, end.getTime()); + if (rrule != null) + values.put(CalendarContract.Events.RRULE, rrule); if (!TextUtils.isEmpty(summary)) values.put(CalendarContract.Events.TITLE, summary); if (!TextUtils.isEmpty(description))