diff options
Diffstat (limited to 'internal/handlers/widget.go')
| -rw-r--r-- | internal/handlers/widget.go | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/internal/handlers/widget.go b/internal/handlers/widget.go index cee2ec8..a56a017 100644 --- a/internal/handlers/widget.go +++ b/internal/handlers/widget.go @@ -7,12 +7,17 @@ import ( "time" "task-dashboard/internal/api" + "task-dashboard/internal/config" "task-dashboard/internal/models" ) // WidgetAuthMiddleware validates the static bearer token for widget API endpoints. func WidgetAuthMiddleware(token string, next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if token == "" { + http.Error(w, "unauthorized", http.StatusUnauthorized) + return + } auth := r.Header.Get("Authorization") if !strings.HasPrefix(auth, "Bearer ") || strings.TrimPrefix(auth, "Bearer ") != token { http.Error(w, "unauthorized", http.StatusUnauthorized) @@ -38,6 +43,9 @@ func TimelineItemToWidgetItem(item models.TimelineItem) models.WidgetItem { wi.Type = "event" case models.TimelineItemTypeMeal: wi.Type = "event" + case models.TimelineItemTypeCard, models.TimelineItemTypeGTask: + wi.Type = "task" + // not completable via widget API default: wi.Type = "task" wi.Completable = item.Source == "todoist" @@ -60,8 +68,9 @@ func TimelineItemToWidgetItem(item models.TimelineItem) models.WidgetItem { // HandleWidgetGet returns today's timeline items as JSON for the Android widget. func (h *Handler) HandleWidgetGet(w http.ResponseWriter, r *http.Request) { - now := time.Now() - start := now.Truncate(24 * time.Hour) + now := config.Now() + tz := config.GetDisplayTimezone() + start := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, tz) end := start.Add(24 * time.Hour) items, err := BuildTimeline(r.Context(), h.store, start, end) |
