From 0ef9b55536edf33d0f059de384ea2ca82fd40a1d Mon Sep 17 00:00:00 2001 From: kolaente Date: Sat, 1 Apr 2023 12:52:10 +0200 Subject: [PATCH] chore: refactor parseVAlarm --- pkg/caldav/parsing.go | 59 +++++++++++++++++++++++-------------------- 1 file changed, 32 insertions(+), 27 deletions(-) diff --git a/pkg/caldav/parsing.go b/pkg/caldav/parsing.go index 9b635d8c3..56838e455 100644 --- a/pkg/caldav/parsing.go +++ b/pkg/caldav/parsing.go @@ -152,34 +152,39 @@ func ParseTaskFromVTODO(content string) (vTask *models.Task, err error) { func parseVAlarm(vAlarm *ics.VAlarm, vTask *models.Task) *models.Task { for _, property := range vAlarm.UnknownPropertiesIANAProperties() { - if property.IANAToken == "TRIGGER" { - if contains(property.ICalParameters["VALUE"], "DATE-TIME") { - // Example: TRIGGER;VALUE=DATE-TIME:20181201T011210Z - vTask.Reminders = append(vTask.Reminders, &models.TaskReminder{ - Reminder: caldavTimeToTimestamp(property.Value)}) - } else { - if contains(property.ICalParameters["RELATED"], "END") { - // Example: TRIGGER;RELATED=END:-P2D - duration := utils.ParseISO8601Duration(property.Value) - if vTask.EndDate.IsZero() { - vTask.Reminders = append(vTask.Reminders, &models.TaskReminder{ - RelativePeriod: int64(duration.Seconds()), - RelativeTo: models.ReminderRelationDueDate}) - } else { - vTask.Reminders = append(vTask.Reminders, &models.TaskReminder{ - RelativePeriod: int64(duration.Seconds()), - RelativeTo: models.ReminderRelationEndDate}) - } - } else { - // Example: TRIGGER;RELATED=START:-P2D - // Example: TRIGGER:-PT60M - duration := utils.ParseISO8601Duration(property.Value) - vTask.Reminders = append(vTask.Reminders, &models.TaskReminder{ - RelativePeriod: int64(duration.Seconds()), - RelativeTo: models.ReminderRelationStartDate}) - } - } + if property.IANAToken != "TRIGGER" { + continue } + + if contains(property.ICalParameters["VALUE"], "DATE-TIME") { + // Example: TRIGGER;VALUE=DATE-TIME:20181201T011210Z + vTask.Reminders = append(vTask.Reminders, &models.TaskReminder{ + Reminder: caldavTimeToTimestamp(property.Value), + }) + continue + } + + duration := utils.ParseISO8601Duration(property.Value) + + if contains(property.ICalParameters["RELATED"], "END") { + // Example: TRIGGER;RELATED=END:-P2D + if vTask.EndDate.IsZero() { + vTask.Reminders = append(vTask.Reminders, &models.TaskReminder{ + RelativePeriod: int64(duration.Seconds()), + RelativeTo: models.ReminderRelationDueDate}) + } else { + vTask.Reminders = append(vTask.Reminders, &models.TaskReminder{ + RelativePeriod: int64(duration.Seconds()), + RelativeTo: models.ReminderRelationEndDate}) + } + continue + } + + // Example: TRIGGER;RELATED=START:-P2D + // Example: TRIGGER:-PT60M + vTask.Reminders = append(vTask.Reminders, &models.TaskReminder{ + RelativePeriod: int64(duration.Seconds()), + RelativeTo: models.ReminderRelationStartDate}) } return vTask }