Skip to content

Commit 2bd591d

Browse files
committed
V1.7.3
1 parent 60917a5 commit 2bd591d

File tree

10 files changed

+924
-506
lines changed

10 files changed

+924
-506
lines changed

lib/managers/data_manager.dart

Lines changed: 72 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)