Files
HealthLog/src/lib/query-keys/settings.ts
T
Marc-André Bombeck f50f92902e feat(settings): add the Module (what-you-track) hub
Surface a dedicated settings section for enabling and disabling the
secondary tracking domains (mood, sleep, glucose, workouts, recovery,
labs, achievements, coach, insights, doctor report, cycle). Each row
carries an icon, label, and one-line description with a switch bound to
the resolved module map on /auth/me; toggling PATCHes /api/auth/me/modules
and invalidates the auth/me query so the navigation, Insights pills, and
dashboard tiles re-gate live. Core domains (weight, blood pressure, pulse,
medications) render as a read-only always-on group. The entry sits right
below Account in the settings navigation.
2026-06-15 22:36:04 +02:00

47 lines
2.0 KiB
TypeScript

/**
* Query keys — settings + notification surfaces, version/meta reads,
* gamification, share links, and feature flags.
* Part of the centralized factory; aggregated in `./index.ts`.
*/
export const settingsKeys = {
gamificationAchievements: () => ["gamification", "achievements"] as const,
notificationsPreferences: () => ["notifications", "preferences"] as const,
notificationsStatus: () => ["notifications", "status"] as const,
settingsGlobalServices: () => ["settings", "global-services"] as const,
settingsNtfy: () => ["settings", "ntfy"] as const,
/** v1.17.1 — generic-webhook channel config. */
settingsWebhook: () => ["settings", "webhook"] as const,
/** v1.17.1 — SMTP / email channel config. */
settingsEmail: () => ["settings", "email"] as const,
settingsReminderThresholds: () =>
["settings", "reminder-thresholds"] as const,
/** v1.8.5 — user-level injection-site preferences (global exclusion). */
injectionSitePrefs: () => ["settings", "injection-site-prefs"] as const,
/**
* v1.18.0 — the per-user module enable/disable map behind
* `GET/PATCH /api/auth/me/modules`. Used as the Module-hub mutation key;
* the resolved map itself rides on `authMe()` (the `/auth/me` payload),
* so the toggle mutation invalidates `authMe()` to re-gate the nav,
* Insights pills, and dashboard tiles in lockstep.
*/
modulesPrefs: () => ["settings", "modules"] as const,
apiVersion: () => ["api", "version"] as const,
publicVersion: () => ["public", "version"] as const,
/** v1.15.12 H1 — admin overview "update available" check against the
* latest GitHub release tag (best-effort, day-stale). */
versionUpdateCheck: () => ["version", "update-check"] as const,
researchMode: () => ["research-mode"] as const,
/** v1.11.0 — owner's clinician share links (Settings → Sharing). */
shareLinks: () => ["share-links"] as const,
featureFlags: () => ["feature-flags"] as const,
bugreportStatus: () => ["bugreport", "status"] as const,
};