'use client' import { useHabits } from "@/hooks/useHabits"; import { habitsAtom, settingsAtom } from "@/lib/atoms"; import { Habit } from "@/lib/types"; import { useAtom } from "jotai"; import { DateTime } from "luxon"; type CompletionCache = { [dateKey: string]: { // dateKey format: "YYYY-MM-DD" [habitId: string]: number // number of completions on that date } } export default function DebugPage() { const [habits] = useAtom(habitsAtom); const [settings] = useAtom(settingsAtom); function buildCompletionCache(habits: Habit[], timezone: string): CompletionCache { const cache: CompletionCache = {}; habits.forEach(habit => { habit.completions.forEach(utcTimestamp => { // Convert UTC timestamp to local date string in specified timezone const localDate = DateTime .fromISO(utcTimestamp) .setZone(timezone) .toFormat('yyyy-MM-dd'); if (!cache[localDate]) { cache[localDate] = {}; } // Increment completion count for this habit on this date cache[localDate][habit.id] = (cache[localDate][habit.id] || 0) + 1; }); }); return cache; } function getCompletedHabitsForDate( habits: Habit[], date: DateTime, timezone: string, completionCache: CompletionCache ): Habit[] { const dateKey = date.setZone(timezone).toFormat('yyyy-MM-dd'); const dateCompletions = completionCache[dateKey] || {}; return habits.filter(habit => { const completionsNeeded = habit.targetCompletions || 1; const completionsAchieved = dateCompletions[habit.id] || 0; return completionsAchieved >= completionsNeeded; }); } const habitCache = buildCompletionCache(habits.habits, settings.system.timezone); return (