From 465ec16e30ac09d771d8204b0e33e88df6ecfefc Mon Sep 17 00:00:00 2001 From: rathi Date: Sun, 17 Nov 2024 20:55:35 -0500 Subject: [PATCH] manual streaking --- habits.db | Bin 20480 -> 20480 bytes src/App.tsx | 17 ++++++++++++++++- src/components/HabitList.tsx | 28 ++++++++++++++++++++++------ src/types.ts | 1 + 4 files changed, 39 insertions(+), 7 deletions(-) diff --git a/habits.db b/habits.db index 0e4c2f4bcffee12b0e1ad84452f8f6d6ec3fbe2f..182af3838250dc17a978ac5a17b80fa79a0d7ebe 100644 GIT binary patch delta 236 zcmZozz}T>Wae_3X+e8^>Mz@U#OZ1uL_(UeN8(6aNsql$x78JO^8^9;e%&5p_WME{X zYiOuzXv!zY%&5qY#Fs_k8}rGas5j=5Mv*t#oMN|tky(!S+hleJ6HZOuZ+upK5`65N r1qC+oh6u1QDl#HjCJz=svP}+6z*rV6fY4$r0~SDNG1~0qw~Y}1phGGt delta 161 zcmZozz}T>Wae_3X)kGO*MyrhpOZ1s#_)I3V8(3}@6!^kxz$eShsK{<)U}U0eXsByw z%qN4wH{p|JW>jQD$Zt-uTfoRH!zVGB-NA&_icf-1bF-kp4PGMw7Dh!zB!gtp1WaVW M0?0;r`E6qa0EI#x*Z=?k 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} + + +