diff --git a/habits.db b/habits.db index 0e4c2f4..182af38 100644 Binary files a/habits.db and b/habits.db differ diff --git a/src/App.tsx b/src/App.tsx index cd59938..5d0d5ec 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -151,6 +151,21 @@ export default function HabitTracker() { return streak; }; + const handleUpdateStreak = async (id: number, newStreak: number) => { + // Prevent negative streaks + if (newStreak < 0) return; + + // Update in database + await db.habits.update(id, { manualStreak: newStreak }); + + // Update state + setHabits(habits.map(habit => + habit.id === id + ? { ...habit, manualStreak: newStreak } + : habit + )); + }; + return (
@@ -246,7 +261,7 @@ export default function HabitTracker() { onToggleHabit={toggleHabit} onUpdateHabit={updateHabit} onDeleteHabit={deleteHabit} - getStreakForHabit={getStreakForHabit} + onUpdateStreak={handleUpdateStreak} />
diff --git a/src/components/HabitList.tsx b/src/components/HabitList.tsx index c84fbd6..d6a19e2 100644 --- a/src/components/HabitList.tsx +++ b/src/components/HabitList.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { Trash2 } from 'lucide-react'; +import { Trash2, ChevronUp, ChevronDown } from 'lucide-react'; import { Habit } from '../types'; interface HabitListProps { @@ -9,7 +9,7 @@ interface HabitListProps { onToggleHabit: (id: number, date: string) => void; onUpdateHabit: (id: number, name: string) => void; onDeleteHabit: (id: number) => void; - getStreakForHabit: (habit: Habit) => number; + onUpdateStreak: (id: number, streak: number) => void; } export function HabitList({ @@ -19,7 +19,7 @@ export function HabitList({ onToggleHabit, onUpdateHabit, onDeleteHabit, - getStreakForHabit + onUpdateStreak }: HabitListProps) { return ( @@ -34,7 +34,7 @@ export function HabitList({ ))} - + @@ -59,8 +59,24 @@ export function HabitList({ /> ))} -
StreakManual Streak Actions
- {getStreakForHabit(habit)} + +
+ + + {habit.manualStreak || 0} + + +