diff options
Diffstat (limited to 'internal/handlers/agent.go')
| -rw-r--r-- | internal/handlers/agent.go | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/internal/handlers/agent.go b/internal/handlers/agent.go index 073084f..cf1eaa1 100644 --- a/internal/handlers/agent.go +++ b/internal/handlers/agent.go @@ -414,6 +414,12 @@ func (h *Handler) handleAgentTaskToggle(w http.ResponseWriter, r *http.Request, var err error ctx := r.Context() switch source { + case "doot": + if complete { + err = h.store.CompleteNativeTask(id) + } else { + err = h.store.UncompleteNativeTask(id) + } case "trello": err = h.trelloClient.UpdateCard(ctx, id, map[string]interface{}{"closed": complete}) case "gtasks": @@ -473,6 +479,12 @@ func (h *Handler) HandleAgentTaskUpdateDue(w http.ResponseWriter, r *http.Reques var err error ctx := r.Context() switch source { + case "doot": + if req.Due == nil { + http.Error(w, "due is required", http.StatusBadRequest) + return + } + err = h.store.RescheduleNativeTask(id, *req.Due) case "trello": err = h.trelloClient.UpdateCard(ctx, id, map[string]interface{}{"due": req.Due}) default: @@ -508,6 +520,20 @@ func (h *Handler) HandleAgentTaskUpdate(w http.ResponseWriter, r *http.Request) var err error ctx := r.Context() switch source { + case "doot": + var existing *models.Task + existing, err = h.store.GetNativeTaskByID(id) + if err == nil { + content := existing.Content + if title, ok := updates["title"].(string); ok { + content = title + } + description := existing.Description + if desc, ok := updates["description"].(string); ok { + description = desc + } + err = h.store.UpdateNativeTask(id, content, description) + } case "trello": if title, ok := updates["title"].(string); ok { updates["name"] = title @@ -560,6 +586,18 @@ func (h *Handler) HandleAgentTaskCreate(w http.ResponseWriter, r *http.Request) var err error ctx := r.Context() switch req.Source { + case "doot": + priority := req.Priority + if priority == 0 { + priority = 1 + } + task := models.Task{ + ID: newID(), + Content: req.Title, + DueDate: req.DueDate, + Priority: priority, + } + err = h.store.CreateNativeTask(task) case "trello": if req.ListID == "" { http.Error(w, "list_id is required for Trello", http.StatusBadRequest) |
