import 'package:hive_flutter/hive_flutter.dart'; import '../models/focus_session.dart'; /// Service to manage local storage using Hive class StorageService { static const String _focusSessionBox = 'focus_sessions'; /// Initialize Hive static Future init() async { await Hive.initFlutter(); // Register adapters Hive.registerAdapter(FocusSessionAdapter()); // Open boxes await Hive.openBox(_focusSessionBox); } /// Get the focus sessions box Box get _sessionsBox => Hive.box(_focusSessionBox); /// Save a focus session Future saveFocusSession(FocusSession session) async { await _sessionsBox.add(session); } /// Get all focus sessions List getAllSessions() { return _sessionsBox.values.toList(); } /// Get today's focus sessions List getTodaySessions() { final now = DateTime.now(); final today = DateTime(now.year, now.month, now.day); return _sessionsBox.values.where((session) { final sessionDate = DateTime( session.startTime.year, session.startTime.month, session.startTime.day, ); return sessionDate == today; }).toList(); } /// Get total focus minutes for today int getTodayTotalMinutes() { return getTodaySessions() .fold(0, (sum, session) => sum + session.actualMinutes); } /// Get total distractions for today int getTodayDistractionCount() { return getTodaySessions() .fold(0, (sum, session) => sum + session.distractionCount); } /// Get total completed sessions for today int getTodayCompletedCount() { return getTodaySessions() .where((session) => session.completed) .length; } /// Delete a focus session Future deleteSession(FocusSession session) async { await session.delete(); } /// Clear all sessions (for testing/debugging) Future clearAllSessions() async { await _sessionsBox.clear(); } /// Close all boxes static Future close() async { await Hive.close(); } }