-
-
Notifications
You must be signed in to change notification settings - Fork 14
commit fe43518
abduznik edited this page May 23, 2026
·
1 revision
Commit: fe43518f5f96f550d1355e97d07ba330b4d86c0e
Author: abduznik
Date: 2026-04-29
Why: Adds a new feature or capability to the application.
lib/providers/library_provider.dart | 2 ++
lib/providers/romm_provider.dart | 25 +++++++++++++++++++++++++
2 files changed, 27 insertions(+)
lib/providers/library_provider.dartlib/providers/romm_provider.dart
diff --git a/lib/providers/library_provider.dart b/lib/providers/library_provider.dart
index 9f7ae68..d5451fc 100644
--- a/lib/providers/library_provider.dart
+++ b/lib/providers/library_provider.dart
@@ -104,6 +104,7 @@ final activePresetLoaderProvider = FutureProvider<void>((ref) async {});
final platformsProvider = FutureProvider<List<Platform>>((ref) async {
final service = ref.watch(rommServiceProvider);
+ ref.watch(isOfflineProvider);
if (service == null) return [];
final cached = await _loadPlatformsCache(ref);
@@ -144,6 +145,7 @@ final platformsProvider = FutureProvider<List<Platform>>((ref) async {
final allGamesProvider = FutureProvider<List<Game>>((ref) async {
final service = ref.watch(rommServiceProvider);
+ ref.watch(isOfflineProvider);
final selectedPlatformId = ref.watch(selectedPlatformIdProvider);
if (service == null) return [];
diff --git a/lib/providers/romm_provider.dart b/lib/providers/romm_provider.dart
index 66855fc..8636875 100644
--- a/lib/providers/romm_provider.dart
+++ b/lib/providers/romm_provider.dart
@@ -44,6 +44,7 @@ final emulatorStatusProvider = FutureProvider<Map<String, bool>>((ref) async {
final firmwareServiceProvider = FutureProvider<FirmwareService?>((ref) async {
final rommService = ref.watch(rommServiceProvider);
+ ref.watch(isOfflineProvider);
final directoryService = ref.watch(directoryServiceProvider).asData?.value;
final strategyRegistry = await ref.watch(strategyRegistryProvider.future);
if (rommService == null || directoryService == null || strategyRegistry == null) return null;
@@ -135,6 +136,7 @@ final strategyRegistryProvider = FutureProvider<StrategyRegistry?>((ref) async {
// SaveSyncService provider
final saveSyncServiceProvider = FutureProvider<SaveSyncService?>((ref) async {
final rommService = ref.watch(rommServiceProvider);
+ ref.watch(isOfflineProvider);
final directoryService = ref.watch(directoryServiceProvider).asData?.value;
final strategyRegistry = await ref.watch(strategyRegistryProvider.future);
final prefs = ref.watch(sharedPreferencesProvider);
@@ -188,6 +190,7 @@ final romMappingServiceProvider = FutureProvider<RomMappingService>((ref) async
final romScannerServiceProvider = Provider<RomScannerService?>((ref) {
final rommService = ref.watch(rommServiceProvider);
+ ref.watch(isOfflineProvider);
final mappingServiceAsync = ref.watch(romMappingServiceProvider);
final directoryServiceAsync = ref.watch(directoryServiceProvider);
@@ -200,6 +203,28 @@ final romScannerServiceProvider = Provider<RomScannerService?>((ref) {
return null;
});
+final isOfflineProvider = StateNotifierProvider<ConnectivityNotifier, bool>((ref) {
+ final service = ref.watch(rommServiceProvider);
+ return ConnectivityNotifier(service);
+});
+
+class ConnectivityNotifier extends StateNotifier<bool> {
+ final RommService? _service;
+ ConnectivityNotifier(this._service) : super(_service?.isOffline.value ?? true) {
+ _service?.isOffline.addListener(_listener);
+ }
+
+ void _listener() {
+ if (mounted) state = _service?.isOffline.value ?? true;
+ }
+
+ @override
+ void dispose() {
+ _service?.isOffline.removeListener(_listener);
+ super.dispose();
+ }
+}
+
// ---------------------------------------------------------------------------
// Backup providers
// ---------------------------------------------------------------------------