@@ -34,6 +34,8 @@ class DataManager extends ChangeNotifier {
3434 double totalUsdcBorrowBalance = 0 ;
3535 double totalXdaiDepositBalance = 0 ;
3636 double totalXdaiBorrowBalance = 0 ;
37+ double gnosisUsdcBalance = 0 ;
38+ double gnosisXdaiBalance = 0 ;
3739 int totalRealtTokens = 0 ;
3840 double totalRealtInvestment = 0.0 ;
3941 double netRealtRentYear = 0.0 ;
@@ -85,17 +87,16 @@ class DataManager extends ChangeNotifier {
8587 Map <String , List <Map <String , dynamic >>> transactionsByToken = {};
8688
8789 var customInitPricesBox = Hive .box ('CustomInitPrices' );
88-
8990 final String rwaTokenAddress = '0x0675e8f4a52ea6c845cb6427af03616a2af42170' ;
9091
9192 DateTime ? lastArchiveTime; // Variable pour stocker le dernier archivage
93+ DateTime ? _lastUpdated; // Stocker la dernière mise à jour
94+ final Duration _updateCooldown = Duration (minutes: 5 ); // Délai minimal avant la prochaine mise à jour
9295
9396 DataManager () {
9497 loadCustomInitPrices (); // Charger les prix personnalisés lors de l'initialisation
9598 }
9699
97- DateTime ? _lastUpdated; // Stocker la dernière mise à jour
98- final Duration _updateCooldown = Duration (minutes: 5 ); // Délai minimal avant la prochaine mise à jour
99100
100101 Future <void > updateMainInformations ({bool forceFetch = false }) async {
101102 var box = Hive .box ('realTokens' ); // Ouvrir la boîte Hive pour le cache
@@ -176,60 +177,71 @@ class DataManager extends ChangeNotifier {
176177 }
177178
178179 Future <void > updateSecondaryInformations (BuildContext context, {bool forceFetch = false }) async {
179- var box = Hive .box ('realTokens' ); // Ouvrir la boîte Hive pour le cache
180-
181- // Mise à jour des données YAM Market
182- var yamWalletsTransactionsData = await ApiService .fetchYamWalletsTransactions (forceFetch: forceFetch);
183- if (yamWalletsTransactionsData.isNotEmpty) {
184- debugPrint ("✅ Mise à jour des données YAM Wallets Transactions avec de nouvelles valeurs." );
185- box.put ('cachedWalletsTransactions' , json.encode (yamWalletsTransactionsData));
186- yamWalletsTransactionsFetched = yamWalletsTransactionsData.cast <Map <String , dynamic >>(); // Remplacez par votre variable de stockage
187- notifyListeners ();
188- } else {
189- debugPrint ("Les données YAM Wallets Transactions sont vides, pas de mise à jour." );
190- }
191-
192- // Mise à jour des données YAM Market
193- var yamMarketData = await ApiService .fetchYamMarket (forceFetch: forceFetch);
194- if (yamMarketData.isNotEmpty) {
195- debugPrint ("✅ Mise à jour des données YAM Market avec de nouvelles valeurs." );
196- box.put ('cachedYamMarket' , json.encode (yamMarketData));
197- yamMarketFetched = yamMarketData.cast <Map <String , dynamic >>(); // Remplacez par votre variable de stockage
180+ var box = Hive .box ('realTokens' ); // Ouvrir la boîte Hive pour le cache
181+
182+ // Fonction générique pour fetch + cache
183+ Future <void > fetchData ({
184+ required Future <List <dynamic >> Function () apiCall,
185+ required String cacheKey,
186+ required void Function (List <Map <String , dynamic >>) updateVariable,
187+ required String debugName,
188+ }) async {
189+ try {
190+ var data = await apiCall ();
191+ if (data.isNotEmpty) {
192+ debugPrint ("✅ Mise à jour des données $debugName ." );
193+ box.put (cacheKey, json.encode (data));
194+ updateVariable (List <Map <String , dynamic >>.from (data));
195+ } else {
196+ debugPrint ("⚠️ Pas de nouvelles données $debugName , chargement du cache..." );
197+ var cachedData = box.get (cacheKey);
198+ if (cachedData != null ) {
199+ updateVariable (List <Map <String , dynamic >>.from (json.decode (cachedData)));
200+ }
201+ }
198202 notifyListeners ();
199- } else {
200- debugPrint ("Les données YAM Market sont vides, pas de mise à jour." );
201- }
202-
203- // Mise à jour des Yam Volumes History
204- var yamHistoryData = await ApiService .fetchTokenVolumes (forceFetch: forceFetch);
205- if (yamHistoryData.isNotEmpty) {
206- debugPrint ("✅ Mise à jour de l'historiques YAM avec de nouvelles valeurs." );
207-
208- // Sauvegarder les balances dans Hive
209- box.put ('yamHistory' , json.encode (yamHistoryData));
210- rmmBalances = yamHistoryData.cast <Map <String , dynamic >>();
211- fetchYamHistory ();
212- notifyListeners (); // Notifier les listeners après la mise à jour
213- } else {
214- debugPrint ("Les RMM Balances sont vides, pas de mise à jour." );
215- }
216-
217- // Mise à jour des transactions History
218- var transactionsHistoryData = await ApiService .fetchTransactionsHistory (portfolio: portfolio, forceFetch: forceFetch);
219- if (transactionsHistoryData.isNotEmpty) {
220- debugPrint ("✅ Mise à jour de l'historique des transactions avec de nouvelles valeurs." );
221-
222- // Sauvegarder les balances dans Hive
223- box.put ('transactionsHistory' , json.encode (transactionsHistoryData));
224- transactionsHistory = transactionsHistoryData.cast <Map <String , dynamic >>();
225- await processTransactionsHistory (context, transactionsHistory, yamWalletsTransactionsFetched);
226- notifyListeners (); // Notifier les listeners après la mise à jour
227- } else {
228- debugPrint ("L'historique des transactions est vide, pas de mise à jour." );
203+ } catch (e) {
204+ debugPrint ("❌ Erreur lors de la mise à jour $debugName : $e " );
229205 }
230- isLoadingSecondary = false ;
231206 }
232207
208+ // Exécution des mises à jour en parallèle
209+ await Future .wait ([
210+ fetchData (
211+ apiCall: () => ApiService .fetchYamWalletsTransactions (forceFetch: forceFetch),
212+ cacheKey: 'cachedWalletsTransactions' ,
213+ updateVariable: (data) => yamWalletsTransactionsFetched = data,
214+ debugName: "YAM Wallets Transactions"
215+ ),
216+ fetchData (
217+ apiCall: () => ApiService .fetchYamMarket (forceFetch: forceFetch),
218+ cacheKey: 'cachedYamMarket' ,
219+ updateVariable: (data) => yamMarketFetched = data,
220+ debugName: "YAM Market"
221+ ),
222+ fetchData (
223+ apiCall: () => ApiService .fetchTokenVolumes (forceFetch: forceFetch),
224+ cacheKey: 'yamHistory' ,
225+ updateVariable: (data) {
226+ rmmBalances = data;
227+ fetchYamHistory ();
228+ },
229+ debugName: "YAM Volumes History"
230+ ),
231+ fetchData (
232+ apiCall: () => ApiService .fetchTransactionsHistory (portfolio: portfolio, forceFetch: forceFetch),
233+ cacheKey: 'transactionsHistory' ,
234+ updateVariable: (data) async {
235+ transactionsHistory = data;
236+ await processTransactionsHistory (context, transactionsHistory, yamWalletsTransactionsFetched);
237+ },
238+ debugName: "Transactions History"
239+ ),
240+ ]);
241+
242+ isLoadingSecondary = false ;
243+ }
244+
233245 Future <void > loadWalletBalanceHistory () async {
234246 try {
235247 var box = Hive .box ('walletValueArchive' ); // Ouvrir la boîte Hive
@@ -1034,7 +1046,6 @@ class DataManager extends ChangeNotifier {
10341046 }
10351047
10361048 // Méthode pour extraire les mises à jour récentes sur les 30 derniers jours
1037-
10381049 List <Map <String , dynamic >> _extractRecentUpdates (List <dynamic > realTokensRaw) {
10391050 final List <Map <String , dynamic >> realTokens = realTokensRaw.cast <Map <String , dynamic >>();
10401051 List <Map <String , dynamic >> recentUpdates = [];
@@ -1318,6 +1329,9 @@ class DataManager extends ChangeNotifier {
13181329 double usdcBorrowSum = 0 ;
13191330 double xdaiDepositSum = 0 ;
13201331 double xdaiBorrowSum = 0 ;
1332+ double gnosisUsdcSum = 0 ;
1333+ double gnosisXdaiSum = 0 ;
1334+
13211335 String ? timestamp;
13221336
13231337 // Cumuler les balances de tous les wallets pour chaque type de token
@@ -1326,6 +1340,8 @@ class DataManager extends ChangeNotifier {
13261340 usdcBorrowSum += balance['usdcBorrowBalance' ];
13271341 xdaiDepositSum += balance['xdaiDepositBalance' ];
13281342 xdaiBorrowSum += balance['xdaiBorrowBalance' ];
1343+ gnosisUsdcSum += balance['gnosisUsdcBalance' ];
1344+ gnosisXdaiSum += balance['gnosisXdaiBalance' ];
13291345 timestamp = balance['timestamp' ]; // Dernier timestamp
13301346 }
13311347
@@ -1345,6 +1361,8 @@ class DataManager extends ChangeNotifier {
13451361 totalUsdcBorrowBalance = usdcBorrowSum;
13461362 totalXdaiDepositBalance = xdaiDepositSum;
13471363 totalXdaiBorrowBalance = xdaiBorrowSum;
1364+ gnosisXdaiBalance = gnosisXdaiSum;
1365+ gnosisUsdcBalance = gnosisUsdcSum;
13481366
13491367 notifyListeners (); // Notifier l'interface que les données ont été mises à jour
13501368
0 commit comments