import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../../../core/api/api_client.dart'; import '../../../core/api/api_endpoints.dart'; import '../domain/wallet.dart'; /// Dépôt de données pour le portefeuille électronique. class WalletRepository { WalletRepository(this._apiClient); final ApiClient _apiClient; Future fetchWallet() async { final response = await _apiClient.get(ApiEndpoints.wallet); final json = _extractObject(response.data); return Wallet.fromJson(json); } Future> fetchTransactions() async { final response = await _apiClient.get(ApiEndpoints.walletTransactions); final list = _extractList(response.data); return list .map((json) => WalletTransaction.fromJson(json as Map)) .toList(); } List _extractList(dynamic data) { if (data is List) return data; if (data is Map && data['data'] is List) { return data['data'] as List; } return []; } Map _extractObject(dynamic data) { if (data is Map) { if (data['data'] is Map) { return data['data'] as Map; } return data; } throw StateError('Réponse API inattendue'); } } final walletRepositoryProvider = Provider((ref) { return WalletRepository(ref.watch(apiClientProvider)); }); final walletProvider = FutureProvider((ref) async { return ref.watch(walletRepositoryProvider).fetchWallet(); }); final walletTransactionsProvider = FutureProvider>((ref) async { return ref.watch(walletRepositoryProvider).fetchTransactions(); });