summaryrefslogtreecommitdiff
path: root/internal/handlers
diff options
context:
space:
mode:
Diffstat (limited to 'internal/handlers')
-rw-r--r--internal/handlers/agent.go38
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)