mirror of
https://github.com/vleeuwenmenno/supplements.git
synced 2025-09-11 18:29:12 +02:00
adds retry functionality
This commit is contained in:
@@ -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) {
|
||||
|
Reference in New Issue
Block a user