Skip to content

Commit 3dcb2a3

Browse files
committed
fix(timer): prevent division by zero in progress calculation and sanitize negative settings input
1 parent 0e4ad09 commit 3dcb2a3

1 file changed

Lines changed: 6 additions & 1 deletion

File tree

src/lib/features/note/viewmodel/focus_viewmodel.dart

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ class FocusViewModel extends ChangeNotifier {
142142
}
143143

144144
// Calculate progress for the circular indicator
145-
double get progress => timeRemaining / totalTime;
145+
double get progress => totalTime <= 0 ? 0.0 : (timeRemaining / totalTime).clamp(0.0, 1.0);
146146

147147
// --- TIMER OPERATIONS ---
148148

@@ -212,6 +212,11 @@ class FocusViewModel extends ChangeNotifier {
212212

213213
// Update preferences from the settings dialog
214214
void updateSettings({required int newPomodoroMinutes, required int newBreakMinutes, required bool vibrate, required int ringtone}) {
215+
if (newPomodoroMinutes <= 0 || newBreakMinutes <= 0) {
216+
debugPrint('Lỗi: Thời gian cài đặt phải lớn hơn 0 phút. Đã tự động set về 1.');
217+
newPomodoroMinutes = newPomodoroMinutes <= 0 ? 1 : newPomodoroMinutes;
218+
newBreakMinutes = newBreakMinutes <= 0 ? 1 : newBreakMinutes;
219+
}
215220
stopAlarm(); // Stop alarm if opening settings
216221
pomodoroTime = newPomodoroMinutes * 60;
217222
shortBreakTime = newBreakMinutes * 60;

0 commit comments

Comments
 (0)