all repos — homestead @ c1c8d38ce51b2b830bdeacfa1db2959910f7cf9e

Code for my website

calendar: differentiate between confirmed and tentative periods replace golang-ical import with vimagination.zapto.org/ics

Alan Pearce
commit

c1c8d38ce51b2b830bdeacfa1db2959910f7cf9e

parent

4c07535d9120fb999b0c008f1866972865f424f7

1 file changed, 20 insertions(+), 28 deletions(-)

changed files
M internal/calendar/calendar.gointernal/calendar/calendar.go
@@ -13,8 +13,8 @@ "time"
"github.com/Southclaws/fault" "github.com/Southclaws/fault/fmsg" - ical "github.com/arran4/golang-ical" "go.alanpearce.eu/x/log" + ical "vimagination.zapto.org/ics" "go.alanpearce.eu/homestead/internal/cache" "go.alanpearce.eu/homestead/internal/config"
@@ -38,9 +38,10 @@ *ical.Calendar
} type Busy struct { - ical.VBusy + ical.FreeBusy StartTime Date EndTime Date + Type ical.ParamFreeBusyType } type Date struct {
@@ -97,7 +98,7 @@ return err
} defer f.Close() - c.Calendar, err = ical.ParseCalendar(f) + c.Calendar, err = ical.Decode(f) if err != nil { c.log.Warn("error parsing calendar", "error", err)
@@ -157,34 +158,25 @@ if c.Calendar == nil {
return nil, fault.New("calendar not initialised") } - in := c.Busys() - bs := make([]*Busy, 0, len(in)) - - for _, b := range in { - st, err := b.GetStartAt() - if err != nil { - c.log.Warn("could not get start time", "event", b.Id(), "error", err) - - continue - } + bs := make([]*Busy, 0, len(c.FreeBusy)) - et, err := b.GetEndAt() - if err != nil { - c.log.Warn("could not get end time", "event", b.Id(), "error", err) + for _, fb := range c.FreeBusy { + for _, b := range fb.FreeBusy { + st := b.Start + et := b.End - continue - } + if st.Before(from) && et.Before(from) || + st.After(to) && et.After(to) { + continue + } - if st.Before(from) && et.Before(from) || - st.After(to) && et.After(to) { - continue + bs = append(bs, &Busy{ + FreeBusy: fb, + Type: *b.FreeBusyType, + StartTime: Date{Time: st.Time}, + EndTime: Date{Time: et.Time}, + }) } - - bs = append(bs, &Busy{ - VBusy: *b, - StartTime: Date{Time: st}, - EndTime: Date{Time: et}, - }) } slices.SortFunc(bs, func(a, b *Busy) int {
@@ -241,7 +233,7 @@ return nil, fault.Wrap(err, fmsg.With("could not get events"))
} for _, ev := range evs { - c.log.Debug("processing event", "id", ev.Id()) + c.log.Debug("processing event", "id", ev.UID) cd.BusyPeriods = append(cd.BusyPeriods, ev) }