Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 55 additions & 0 deletions lib/app/data/models/pomodoro_state_model.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
class PomodoroStateModel {
final int workMinutes;
final int shortBreakMinutes;
final int totalSessions;
final int currentSession;
final String currentPhase;
final int phaseDurationMs;
final int remainingMs;
final bool isRunning;
final int phaseAnchorRemainingMs;
final int? phaseStartedAtMs;

const PomodoroStateModel({
required this.workMinutes,
required this.shortBreakMinutes,
required this.totalSessions,
required this.currentSession,
required this.currentPhase,
required this.phaseDurationMs,
required this.remainingMs,
required this.isRunning,
required this.phaseAnchorRemainingMs,
this.phaseStartedAtMs,
});

Map<String, dynamic> toJson() {
return {
'workMinutes': workMinutes,
'shortBreakMinutes': shortBreakMinutes,
'totalSessions': totalSessions,
'currentSession': currentSession,
'currentPhase': currentPhase,
'phaseDurationMs': phaseDurationMs,
'remainingMs': remainingMs,
'isRunning': isRunning,
'phaseAnchorRemainingMs': phaseAnchorRemainingMs,
'phaseStartedAtMs': phaseStartedAtMs,
};
}

factory PomodoroStateModel.fromJson(Map<String, dynamic> map) {
return PomodoroStateModel(
workMinutes: (map['workMinutes'] ?? 25) as int,
shortBreakMinutes: (map['shortBreakMinutes'] ?? 5) as int,
totalSessions: (map['totalSessions'] ?? 4) as int,
currentSession: (map['currentSession'] ?? 1) as int,
currentPhase: (map['currentPhase'] ?? 'idle') as String,
phaseDurationMs: (map['phaseDurationMs'] ?? 0) as int,
remainingMs: (map['remainingMs'] ?? 0) as int,
isRunning: (map['isRunning'] ?? false) as bool,
phaseAnchorRemainingMs: (map['phaseAnchorRemainingMs'] ?? 0) as int,
phaseStartedAtMs: map['phaseStartedAtMs'] as int?,
);
}
}
16 changes: 16 additions & 0 deletions lib/app/data/providers/get_storage_provider.dart
Original file line number Diff line number Diff line change
Expand Up @@ -65,4 +65,20 @@ class GetStorageProvider {
void writeWorldClocks(List<WorldClockModel> clocks) {
_getStorage.write('worldClocks', clocks.map((e) => e.toJson()).toList());
}

Future<void> writePomodoroState(Map<String, dynamic> state) async {
await _getStorage.write('pomodoroState', state);
}

Map<String, dynamic>? readPomodoroState() {
final dynamic raw = _getStorage.read('pomodoroState');
if (raw is Map) {
return Map<String, dynamic>.from(raw);
}
return null;
}

Future<void> clearPomodoroState() async {
await _getStorage.remove('pomodoroState');
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import 'package:ultimate_alarm_clock/app/modules/settings/controllers/theme_cont
import 'package:ultimate_alarm_clock/app/modules/splashScreen/controllers/splash_screen_controller.dart';

import '../../home/controllers/home_controller.dart';
import '../../timer/controllers/pomodoro_controller.dart';
import '../../timer/controllers/timer_controller.dart';

class SplashScreenBinding extends Bindings {
Expand All @@ -21,5 +22,9 @@ class SplashScreenBinding extends Bindings {
TimerController(),
permanent: true,
);
Get.put<PomodoroController>(
PomodoroController(),
permanent: true,
);
}
}
16 changes: 11 additions & 5 deletions lib/app/modules/timer/bindings/timer_binding.dart
Original file line number Diff line number Diff line change
@@ -1,13 +1,19 @@
import 'package:get/get.dart';
import 'package:ultimate_alarm_clock/app/modules/timer/controllers/pomodoro_controller.dart';
import 'package:ultimate_alarm_clock/app/modules/timer/controllers/timer_controller.dart';

class TimerBinding extends Bindings {
@override
void dependencies() {
Get.put<TimerController>(
TimerController(),
);


if (!Get.isRegistered<TimerController>()) {
Get.put<TimerController>(
TimerController(),
);
}
if (!Get.isRegistered<PomodoroController>()) {
Get.put<PomodoroController>(
PomodoroController(),
);
}
}
}
Loading