all repos — homestead @ e4d12f32aa706978ff3df94cddea060d0438e743

Code for my website

calendar: switch from using VEvent to VBusy

Alan Pearce
commit

e4d12f32aa706978ff3df94cddea060d0438e743

parent

610418737cec7dcd954f0080da40417b54f2e937

2 files changed, 18 insertions(+), 17 deletions(-)

changed files
M internal/calendar/calendar.gointernal/calendar/calendar.go
@@ -2,6 +2,7 @@ package calendar
import ( "context" + "fmt" "io" "io/fs" "net/http"
@@ -33,8 +34,8 @@
*ical.Calendar } -type Event struct { - ical.VEvent +type Busy struct { + ical.VBusy StartTime Date EndTime Date }
@@ -45,7 +46,7 @@ }
type CalendarDate struct { Date - Events []*Event + Events []*Busy } func New(opts *Options, logger *log.Logger) *Calendar {
@@ -121,7 +122,7 @@ }
defer res.Body.Close() if res.StatusCode != http.StatusOK { - return errors.New("unexpected status code") + return errors.New(fmt.Sprintf("unexpected status code %d", res.StatusCode)) } if _, err := io.Copy(f, res.Body); err != nil {
@@ -136,25 +137,25 @@
return nil } -func (c *Calendar) EventsBetween(from time.Time, to time.Time) ([]*Event, error) { +func (c *Calendar) EventsBetween(from time.Time, to time.Time) ([]*Busy, error) { if c.Calendar == nil { return nil, errors.New("calendar not initialised") } - evs := c.Events() - events := make([]*Event, 0, len(evs)) + in := c.Busys() + bs := make([]*Busy, 0, len(in)) - for _, ev := range evs { - st, err := ev.GetStartAt() + for _, b := range in { + st, err := b.GetStartAt() if err != nil { - c.log.Warn("could not get start time", "event", ev.Id(), "error", err) + c.log.Warn("could not get start time", "event", b.Id(), "error", err) continue } - et, err := ev.GetEndAt() + et, err := b.GetEndAt() if err != nil { - c.log.Warn("could not get end time", "event", ev.Id(), "error", err) + c.log.Warn("could not get end time", "event", b.Id(), "error", err) continue }
@@ -164,18 +165,18 @@ st.After(to) && et.After(to) {
continue } - events = append(events, &Event{ - VEvent: *ev, + bs = append(bs, &Busy{ + VBusy: *b, StartTime: Date{Time: st}, EndTime: Date{Time: et}, }) } - slices.SortFunc(events, func(a, b *Event) int { + slices.SortFunc(bs, func(a, b *Busy) int { return a.StartTime.Compare(b.StartTime.Time) }) - return events, nil + return bs, nil } func (c *Calendar) Weeks(count int) []Date {
M templates/calendar.gotemplates/calendar.go
@@ -46,7 +46,7 @@ Time(
DateTime(date.Format(time.DateOnly)), g.Text(date.Format("Mon _2"))), ), - g.Map(date.Events, func(e *calendar.Event) g.Node { + g.Map(date.Events, func(e *calendar.Busy) g.Node { return Div( Class("event"), TitleAttr(