summaryrefslogtreecommitdiff
path: root/internal/handlers/widget.go
diff options
context:
space:
mode:
authorPeter Stone <thepeterstone@gmail.com>2026-07-12 11:12:55 +0000
committerPeter Stone <thepeterstone@gmail.com>2026-07-12 11:12:55 +0000
commit6fdd09bfe030ce91ee188f18c198fd6a57c7b42f (patch)
treeb358dcd34aee62de8bcefafdffa2049d57f900df /internal/handlers/widget.go
parentf31b4722243b8b69564c94e47e07678153c31815 (diff)
feat(widget): add recurrence lookup endpoint (GET /api/widget/recurrence)
Diffstat (limited to 'internal/handlers/widget.go')
-rw-r--r--internal/handlers/widget.go22
1 files changed, 22 insertions, 0 deletions
diff --git a/internal/handlers/widget.go b/internal/handlers/widget.go
index 29124fb..6b1e774 100644
--- a/internal/handlers/widget.go
+++ b/internal/handlers/widget.go
@@ -195,6 +195,28 @@ func (h *Handler) HandleWidgetComplete(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusOK)
}
+// HandleWidgetRecurrence looks up and formats a recurring calendar event's schedule.
+func (h *Handler) HandleWidgetRecurrence(w http.ResponseWriter, r *http.Request) {
+ recurringEventID := r.URL.Query().Get("recurring_event_id")
+ if recurringEventID == "" {
+ http.Error(w, "recurring_event_id is required", http.StatusBadRequest)
+ return
+ }
+
+ recurrence, err := h.googleCalendarClient.GetRecurrenceRule(r.Context(), recurringEventID)
+ if err != nil {
+ http.Error(w, "recurring event not found", http.StatusNotFound)
+ return
+ }
+
+ resp := struct {
+ Recurrence string `json:"recurrence"`
+ }{Recurrence: recurrence}
+
+ w.Header().Set("Content-Type", "application/json")
+ _ = json.NewEncoder(w).Encode(resp)
+}
+
// HandleWidgetAdd creates a new undated native task from the widget's quick-add sheet.
func (h *Handler) HandleWidgetAdd(w http.ResponseWriter, r *http.Request) {
var req widgetAddRequest