summaryrefslogtreecommitdiff
path: root/internal/handlers/widget.go
diff options
context:
space:
mode:
authorPeter Stone <thepeterstone@gmail.com>2026-07-12 10:34:34 +0000
committerPeter Stone <thepeterstone@gmail.com>2026-07-12 10:34:34 +0000
commitdfb06e896b92003d219979cbb1476ed16b7734a3 (patch)
treee8ff6a8ad2e73172a6b352dfe9a12094ee2c27ef /internal/handlers/widget.go
parente1e632c1e57c8aa0940e7ff566a1c7ab267625c8 (diff)
feat(widget): add POST /api/widget/add for quick-add
Diffstat (limited to 'internal/handlers/widget.go')
-rw-r--r--internal/handlers/widget.go31
1 files changed, 31 insertions, 0 deletions
diff --git a/internal/handlers/widget.go b/internal/handlers/widget.go
index 3a30fcf..0c88c16 100644
--- a/internal/handlers/widget.go
+++ b/internal/handlers/widget.go
@@ -124,6 +124,10 @@ type widgetCompleteRequest struct {
Source string `json:"source"`
}
+type widgetAddRequest struct {
+ Title string `json:"title"`
+}
+
type widgetRescheduleRequest struct {
ID string `json:"id"`
Source string `json:"source"`
@@ -189,3 +193,30 @@ func (h *Handler) HandleWidgetComplete(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusOK)
}
+
+// 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
+ if err := json.NewDecoder(r.Body).Decode(&req); err != nil {
+ http.Error(w, "bad request", http.StatusBadRequest)
+ return
+ }
+
+ title := strings.TrimSpace(req.Title)
+ if title == "" {
+ http.Error(w, "title is required", http.StatusBadRequest)
+ return
+ }
+
+ task := models.Task{
+ ID: newID(),
+ Content: title,
+ Priority: 1,
+ }
+ if err := h.store.CreateNativeTask(task); err != nil {
+ http.Error(w, "failed to create task", http.StatusInternalServerError)
+ return
+ }
+
+ w.WriteHeader(http.StatusOK)
+}