summaryrefslogtreecommitdiff
path: root/internal/handlers/handlers.go
diff options
context:
space:
mode:
authorPeter Stone <thepeterstone@gmail.com>2026-03-22 23:45:19 +0000
committerPeter Stone <thepeterstone@gmail.com>2026-03-22 23:45:19 +0000
commit8abc63efdbc0bb96cd6c9aa99d6e9166e0bcabae (patch)
treef4d6a082eed9b10bc67436a3ca5188e0182961eb /internal/handlers/handlers.go
parent11b905fd437d651b2e39745aa82a5dd36f70331e (diff)
chore: unify and centralize agent configuration in .agent/
Diffstat (limited to 'internal/handlers/handlers.go')
-rw-r--r--internal/handlers/handlers.go62
1 files changed, 7 insertions, 55 deletions
diff --git a/internal/handlers/handlers.go b/internal/handlers/handlers.go
index c2e903f..b0fd952 100644
--- a/internal/handlers/handlers.go
+++ b/internal/handlers/handlers.go
@@ -327,10 +327,9 @@ func filterAndSortTrelloTasks(boards []models.Board) []models.Card {
return tasks
}
-// fetchTasks fetches tasks from cache or API using incremental sync
+// fetchTasks fetches tasks from cache or API
func (h *Handler) fetchTasks(ctx context.Context, forceRefresh bool) ([]models.Task, error) {
cacheKey := store.CacheKeyTodoistTasks
- syncService := "todoist"
// Check cache validity
if !forceRefresh {
@@ -340,22 +339,9 @@ func (h *Handler) fetchTasks(ctx context.Context, forceRefresh bool) ([]models.T
}
}
- // Get stored sync token (empty string means full sync)
- syncToken, err := h.store.GetSyncToken(syncService)
+ tasks, err := h.todoistClient.GetTasks(ctx)
if err != nil {
- log.Printf("Failed to get sync token, will do full sync: %v", err)
- syncToken = ""
- }
-
- // Force full sync if requested
- if forceRefresh {
- syncToken = ""
- }
-
- // Fetch using Sync API
- syncResp, err := h.todoistClient.Sync(ctx, syncToken)
- if err != nil {
- // Try to return cached data even if stale
+ // Fall back to cached data if available
cachedTasks, cacheErr := h.store.GetTasks()
if cacheErr == nil && len(cachedTasks) > 0 {
return cachedTasks, nil
@@ -363,49 +349,15 @@ func (h *Handler) fetchTasks(ctx context.Context, forceRefresh bool) ([]models.T
return nil, err
}
- // Build project map from sync response
- projectMap := api.BuildProjectMapFromSync(syncResp.Projects)
-
- // Process sync response
- if syncResp.FullSync {
- // Full sync: replace all tasks
- tasks := api.ConvertSyncItemsToTasks(syncResp.Items, projectMap)
- if err := h.store.SaveTasks(tasks); err != nil {
- log.Printf("Failed to save tasks to cache: %v", err)
- }
- } else {
- // Incremental sync: merge changes
- var deletedIDs []string
- for _, item := range syncResp.Items {
- if item.IsDeleted || item.IsCompleted {
- deletedIDs = append(deletedIDs, item.ID)
- } else {
- // Upsert active task
- task, _ := api.ConvertSyncItemToTask(item, projectMap)
- if err := h.store.UpsertTask(task); err != nil {
- log.Printf("Failed to upsert task %s: %v", item.ID, err)
- }
- }
- }
- // Delete removed tasks
- if len(deletedIDs) > 0 {
- if err := h.store.DeleteTasksByIDs(deletedIDs); err != nil {
- log.Printf("Failed to delete tasks: %v", err)
- }
- }
- }
-
- // Store the new sync token
- if err := h.store.SetSyncToken(syncService, syncResp.SyncToken); err != nil {
- log.Printf("Failed to save sync token: %v", err)
+ if err := h.store.SaveTasks(tasks); err != nil {
+ log.Printf("Failed to save tasks to cache: %v", err)
}
- // Update cache metadata
if err := h.store.UpdateCacheMetadata(cacheKey, h.config.CacheTTLMinutes); err != nil {
log.Printf("Failed to update cache metadata: %v", err)
}
- return h.store.GetTasks()
+ return tasks, nil
}
// fetchMeals fetches meals from cache or API
@@ -1022,7 +974,7 @@ type CombinedMeal struct {
// HandleTabMeals renders the Meals tab (PlanToEat)
func (h *Handler) HandleTabMeals(w http.ResponseWriter, r *http.Request) {
- startDate := config.Now()
+ startDate := config.Today()
endDate := startDate.AddDate(0, 0, 7)
meals, err := h.store.GetMeals(startDate, endDate)