summaryrefslogtreecommitdiff
path: root/internal/api/todoist.go
diff options
context:
space:
mode:
authorPeter Stone <thepeterstone@gmail.com>2026-01-25 11:56:29 -1000
committerPeter Stone <thepeterstone@gmail.com>2026-01-25 11:56:29 -1000
commitec8a9c0ea46dec7d26caa763e3adefcaf3fc7552 (patch)
tree1f91bbc7ec87314189a441c53b7c3b25f1817db0 /internal/api/todoist.go
parent83beddfab9584ae4b64a782c978236472b6d5745 (diff)
Fix bugs and add bug management scripts
Bug fixes: - #36: Hide recurring tasks until due day (add IsRecurring to Task/Atom) - Trello cards missing: change filter=visible to filter=open - Build fix: add missing fmt import in atom.go Infrastructure: - Add scripts/bugs and scripts/resolve-bug for DB bug tracking - Remove issues/ directory (bugs now tracked in DB) - Add timeline_logic_test.go Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Diffstat (limited to 'internal/api/todoist.go')
-rw-r--r--internal/api/todoist.go29
1 files changed, 15 insertions, 14 deletions
diff --git a/internal/api/todoist.go b/internal/api/todoist.go
index 6c998cf..2c94e08 100644
--- a/internal/api/todoist.go
+++ b/internal/api/todoist.go
@@ -41,11 +41,8 @@ type todoistTaskResponse struct {
ProjectID string `json:"project_id"`
Priority int `json:"priority"`
Labels []string `json:"labels"`
- Due *struct {
- Date string `json:"date"`
- Datetime string `json:"datetime"`
- } `json:"due"`
- URL string `json:"url"`
+ Due *dueInfo `json:"due"`
+ URL string `json:"url"`
CreatedAt string `json:"created_at"`
}
@@ -73,11 +70,8 @@ type SyncItemResponse struct {
ProjectID string `json:"project_id"`
Priority int `json:"priority"`
Labels []string `json:"labels"`
- Due *struct {
- Date string `json:"date"`
- Datetime string `json:"datetime"`
- } `json:"due"`
- IsCompleted bool `json:"is_completed"`
+ Due *dueInfo `json:"due"`
+ IsCompleted bool `json:"is_completed"`
IsDeleted bool `json:"is_deleted"`
AddedAt string `json:"added_at"`
}
@@ -125,6 +119,9 @@ func (c *TodoistClient) GetTasks(ctx context.Context) ([]models.Task, error) {
}
task.DueDate = parseDueDate(apiTask.Due)
+ if apiTask.Due != nil {
+ task.IsRecurring = apiTask.Due.IsRecurring
+ }
tasks = append(tasks, task)
}
@@ -276,10 +273,14 @@ func (c *TodoistClient) ReopenTask(ctx context.Context, taskID string) error {
}
// parseDueDate parses due date from API response
-func parseDueDate(due *struct {
- Date string `json:"date"`
- Datetime string `json:"datetime"`
-}) *time.Time {
+// dueInfo represents the due date structure from Todoist API
+type dueInfo struct {
+ Date string `json:"date"`
+ Datetime string `json:"datetime"`
+ IsRecurring bool `json:"is_recurring"`
+}
+
+func parseDueDate(due *dueInfo) *time.Time {
if due == nil {
return nil
}