summaryrefslogtreecommitdiff
path: root/internal/config/config.go
diff options
context:
space:
mode:
authorPeter Stone <thepeterstone@gmail.com>2026-01-26 20:55:50 -1000
committerPeter Stone <thepeterstone@gmail.com>2026-01-26 20:55:50 -1000
commita3156a2f399ea03c645ee23b0099d9d722ce7e1e (patch)
tree03c813717e77ae27d8aee9e676f1b75a6a01648c /internal/config/config.go
parent70e6e51b6781a3986c51e3496b81c88665286872 (diff)
Add Google Tasks integration (#43)
- New GoogleTasksClient for fetching and managing Google Tasks - Tasks appear in Timeline view with yellow indicator dot - Tap checkbox to complete/uncomplete tasks via Google API - Shares credentials file with Google Calendar (GOOGLE_CREDENTIALS_FILE) - Configure task list via GOOGLE_TASKS_LIST_ID env var (default: @default) - Supports comma-separated list IDs for multiple lists New files: - internal/api/google_tasks.go - Google Tasks API client Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Diffstat (limited to 'internal/config/config.go')
-rw-r--r--internal/config/config.go11
1 files changed, 11 insertions, 0 deletions
diff --git a/internal/config/config.go b/internal/config/config.go
index cf3af49..2d77025 100644
--- a/internal/config/config.go
+++ b/internal/config/config.go
@@ -19,6 +19,9 @@ type Config struct {
GoogleCredentialsFile string
GoogleCalendarID string
+ // Google Tasks
+ GoogleTasksListID string
+
// Paths
DatabasePath string
MigrationDir string
@@ -48,6 +51,9 @@ func Load() (*Config, error) {
GoogleCredentialsFile: os.Getenv("GOOGLE_CREDENTIALS_FILE"),
GoogleCalendarID: getEnvWithDefault("GOOGLE_CALENDAR_ID", "primary"),
+ // Google Tasks
+ GoogleTasksListID: getEnvWithDefault("GOOGLE_TASKS_LIST_ID", "@default"),
+
// Paths
DatabasePath: getEnvWithDefault("DATABASE_PATH", "./dashboard.db"),
MigrationDir: getEnvWithDefault("MIGRATION_DIR", "migrations"),
@@ -109,6 +115,11 @@ func (c *Config) HasGoogleCalendar() bool {
return c.GoogleCredentialsFile != ""
}
+// HasGoogleTasks checks if Google Tasks is configured
+func (c *Config) HasGoogleTasks() bool {
+ return c.GoogleCredentialsFile != "" && c.GoogleTasksListID != ""
+}
+
// getEnvWithDefault returns environment variable value or default if not set
func getEnvWithDefault(key, defaultValue string) string {
if value := os.Getenv(key); value != "" {