@@ -3,7 +3,8 @@ import 'package:flutter/material.dart';
33import 'package:shared_preferences/shared_preferences.dart' ;
44import '../services/logger.dart' ;
55import '../models/ai_theme.dart' ;
6- import '../services/sync_service.dart' ;
6+ import '../services/sync_service_v2.dart' ;
7+ import '../services/sync/sync_types_v2.dart' ;
78import '../utils/automatic_error_reporter.dart' ;
89import '../error/error_handler.dart' ;
910import '../error/error_types.dart' ;
@@ -61,6 +62,7 @@ class SettingsProvider extends ChangeNotifier {
6162 String ? _error;
6263 String ? _selectedCustomThemeKey;
6364 bool _syncListenerSetup = false ;
65+ void Function (Map <String , dynamic >)? _syncCallback;
6466 Set <String > _unlockedThemes = {};
6567 final Map <String , AITheme > _aiThemes = {};
6668
@@ -69,7 +71,7 @@ class SettingsProvider extends ChangeNotifier {
6971 // Navigation settings
7072 bool _showNavigationLabels = true ;
7173
72- SyncService get syncService => SyncService .instance;
74+ SyncServiceV2 get syncService => SyncServiceV2 .instance;
7375
7476 // Layout type enum
7577 static const String layoutGrid = 'grid' ;
@@ -99,7 +101,7 @@ class SettingsProvider extends ChangeNotifier {
99101 'settings' ,
100102 onSyncError: (key, error) {
101103 if (key == 'settings' ) {
102- _error = 'Synchronisatie mislukt: $error ' ;
104+ _error = 'Synchronisatie mislukt: ${ error . message } ' ;
103105 notifyListeners ();
104106 }
105107 },
@@ -494,7 +496,7 @@ class SettingsProvider extends ChangeNotifier {
494496 AppLogger .info ('fetchAllData returned: $allData ' );
495497
496498 if (allData != null && allData.containsKey ('settings' )) {
497- final syncedSettings = allData['settings' ];
499+ final syncedSettings = allData['settings' ]? .data ;
498500 AppLogger .info ('Found synced settings: $syncedSettings ' );
499501
500502 if (syncedSettings != null ) {
@@ -515,7 +517,7 @@ class SettingsProvider extends ChangeNotifier {
515517
516518 // Merge AI themes (add themes that don't exist locally)
517519 final syncedAIThemes =
518- syncedSettings['aiThemes' ] as Map <String , dynamic >? ;
520+ syncedSettings? ['aiThemes' ] as Map <String , dynamic >? ;
519521 if (syncedAIThemes != null ) {
520522 for (final entry in syncedAIThemes.entries) {
521523 final themeId = entry.key;
@@ -1158,17 +1160,21 @@ class SettingsProvider extends ChangeNotifier {
11581160 return ;
11591161 }
11601162 _syncListenerSetup = true ;
1161- syncService. addListener ( 'settings' , (data) {
1163+ _syncCallback = (data) {
11621164 loadImportData (data);
1163- });
1165+ };
1166+ syncService.addListener ('settings' , _syncCallback! );
11641167 }
11651168
11661169 /// Cleans up resources and listeners
11671170 @override
11681171 void dispose () {
11691172 // Remove sync listeners to prevent memory leaks
1170- syncService.removeListener ('settings' );
1173+ if (_syncCallback != null ) {
1174+ syncService.removeListener ('settings' , _syncCallback! );
1175+ }
11711176 _syncListenerSetup = false ;
1177+ _syncCallback = null ;
11721178 AppLogger .debug ('SettingsProvider disposed - listeners cleaned up' );
11731179 super .dispose ();
11741180 }
0 commit comments