From 1fe14e966f040a10e862d4610f0b34c44cd424a1 Mon Sep 17 00:00:00 2001 From: "Adam R. Grey" Date: Fri, 3 Sep 2021 11:44:44 -0400 Subject: [PATCH] hopefully won't double-enqueue if it happens to check calendars again while the previous event is waiting --- Program.cs | 9 +++++++-- iCalHoopJumping.cs | 4 ++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/Program.cs b/Program.cs index 51f8a1a..2c615ce 100644 --- a/Program.cs +++ b/Program.cs @@ -131,8 +131,13 @@ namespace director Occurrence = occurrence, Showtime = occurrence.OccurrenceStart }; - createSchedulable(ref newSchedulable); - scratch.agenda.Add(newSchedulable); + var asActualEvent = iCalHoopJumping.parseEvent(calLabel, occurrence.Event); + + if(scratch.agenda.FirstOrDefault(s => iCalHoopJumping.parseEvent(calLabel, s.Occurrence.Event)?.Uid == asActualEvent.Uid) == null) + { + createSchedulable(ref newSchedulable); + scratch.agenda.Add(newSchedulable); + } } } } diff --git a/iCalHoopJumping.cs b/iCalHoopJumping.cs index 33a9183..b4bf442 100644 --- a/iCalHoopJumping.cs +++ b/iCalHoopJumping.cs @@ -20,12 +20,12 @@ namespace director //I don't understand why the entire .net ecosystem insists on ignoring ToString(). Is it really that much fun writing ThingSerializerFactory? ...java programmers. private static EventSerializer ser = new EventSerializer(); - public static CalendarEvent parseEvent(string calendar, string eventStr) + public static CalendarEvent parseEvent(string calendarLabel, string eventStr) { //return new CalendarEvent(eventStr); //lol no //return CalendarEvent.Parse(eventStr); //lol no - var cal = Calendar.Load(Program.scratch.Calendars[calendar]); + var cal = Calendar.Load(Program.scratch.Calendars[calendarLabel]); foreach (var evt in cal.Events) { if (ser.SerializeToString(evt) == eventStr)