diff options
Diffstat (limited to 'internal/handlers')
| -rw-r--r-- | internal/handlers/handlers.go | 34 | ||||
| -rw-r--r-- | internal/handlers/timeline_logic_test.go | 10 |
2 files changed, 44 insertions, 0 deletions
diff --git a/internal/handlers/handlers.go b/internal/handlers/handlers.go index 8abd4d7..fa97be0 100644 --- a/internal/handlers/handlers.go +++ b/internal/handlers/handlers.go @@ -373,6 +373,24 @@ func (h *Handler) fetchCalendarEvents(ctx context.Context, forceRefresh bool) ([ if h.googleCalendarClient == nil { return nil, nil } + + // Get enabled calendars from store + configs, _ := h.store.GetSourceConfigsBySource("gcal") + var enabledIDs []string + for _, cfg := range configs { + if cfg.Enabled { + enabledIDs = append(enabledIDs, cfg.ItemID) + } + } + + // If none enabled but we have a default from config, use that as a fallback + // (or if we want to respect the toggle strictly, we should only use enabled ones) + if len(enabledIDs) == 0 { + return nil, nil + } + + h.googleCalendarClient.SetCalendarIDs(enabledIDs) + fetcher := &CacheFetcher[models.CalendarEvent]{ Store: h.store, CacheKey: store.CacheKeyGoogleCalendar, @@ -389,6 +407,22 @@ func (h *Handler) fetchGoogleTasks(ctx context.Context, forceRefresh bool) ([]mo if h.googleTasksClient == nil { return nil, nil } + + // Get enabled task lists from store + configs, _ := h.store.GetSourceConfigsBySource("gtasks") + var enabledIDs []string + for _, cfg := range configs { + if cfg.Enabled { + enabledIDs = append(enabledIDs, cfg.ItemID) + } + } + + if len(enabledIDs) == 0 { + return nil, nil + } + + h.googleTasksClient.SetTaskListID(strings.Join(enabledIDs, ",")) + fetcher := &CacheFetcher[models.GoogleTask]{ Store: h.store, CacheKey: store.CacheKeyGoogleTasks, diff --git a/internal/handlers/timeline_logic_test.go b/internal/handlers/timeline_logic_test.go index d6959da..03bc291 100644 --- a/internal/handlers/timeline_logic_test.go +++ b/internal/handlers/timeline_logic_test.go @@ -33,6 +33,8 @@ func (m *MockCalendarClient) GetCalendarList(ctx context.Context) ([]models.Cale return nil, m.Err } +func (m *MockCalendarClient) SetCalendarIDs(ids []string) {} + func setupTestStore(t *testing.T) *store.Store { t.Helper() tempDir := t.TempDir() @@ -398,6 +400,14 @@ func TestFetchCalendarEvents_CacheFallbackOnAPIError(t *testing.T) { t.Fatalf("Failed to update cache metadata: %v", err) } + // Enable the calendar in config + err = db.SyncSourceConfigs("gcal", "calendar", []models.SourceConfig{ + {Source: "gcal", ItemType: "calendar", ItemID: "e-cached", ItemName: "Cached", Enabled: true}, + }) + if err != nil { + t.Fatalf("Failed to seed calendar config: %v", err) + } + // Create handler with a failing calendar client failingCal := &MockCalendarClient{Err: fmt.Errorf("API unavailable")} h := &Handler{ |
