diff options
Diffstat (limited to 'internal/handlers/handlers.go')
| -rw-r--r-- | internal/handlers/handlers.go | 62 |
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) |
