adds retry functionality

This commit is contained in:
2025-09-05 15:13:55 +02:00
parent 99711d56ec
commit 7828e48d9d
7 changed files with 414 additions and 47 deletions

View File

@@ -3,10 +3,12 @@ import 'dart:async';
import 'package:flutter/foundation.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:provider/provider.dart';
import 'package:supplements/logging.dart';
import '../models/supplement.dart';
import '../models/supplement_intake.dart';
import '../providers/settings_provider.dart';
import '../services/database_helper.dart';
import '../services/database_sync_service.dart';
import '../services/simple_notification_service.dart';
@@ -27,6 +29,9 @@ class SupplementProvider with ChangeNotifier, WidgetsBindingObserver {
// Callback for triggering sync when data changes
VoidCallback? _onDataChanged;
// Context for accessing other providers
BuildContext? _context;
List<Supplement> get supplements => _supplements;
List<Map<String, dynamic>> get todayIntakes => _todayIntakes;
List<Map<String, dynamic>> get monthlyIntakes => _monthlyIntakes;
@@ -42,11 +47,12 @@ class SupplementProvider with ChangeNotifier, WidgetsBindingObserver {
_onDataChanged?.call();
}
Future<void> initialize() async {
Future<void> initialize([BuildContext? context]) async {
if (_initialized) {
return;
}
_initialized = true;
_context = context;
// Add this provider as an observer for app lifecycle changes
WidgetsBinding.instance.addObserver(this);
@@ -135,7 +141,21 @@ class SupplementProvider with ChangeNotifier, WidgetsBindingObserver {
}
try {
await _notificationService.scheduleDailyGroupedRemindersSafe(_supplements);
SettingsProvider? settingsProvider;
if (_context != null && _context!.mounted) {
try {
settingsProvider = Provider.of<SettingsProvider>(_context!, listen: false);
} catch (e) {
if (kDebugMode) {
printLog('📱 Could not access SettingsProvider: $e');
}
}
}
await _notificationService.scheduleDailyGroupedRemindersSafe(
_supplements,
settingsProvider: settingsProvider,
);
await _notificationService.getPendingNotifications();
} catch (e) {
if (kDebugMode) {