import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../../../core/api/api_client.dart'; import '../../../core/api/api_endpoints.dart'; import '../../../core/api/api_response.dart'; import '../../../core/auth/auth_provider.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 = ApiResponse.object(response.data, 'wallet'); return Wallet.fromJson(json); } Future> fetchTransactions() async { final response = await _apiClient.get(ApiEndpoints.walletTransactions); final list = ApiResponse.list(response.data, 'transactions'); return list .map((json) => WalletTransaction.fromJson(json as Map)) .toList(); } } final walletRepositoryProvider = Provider((ref) { return WalletRepository(ref.watch(apiClientProvider)); }); final walletProvider = FutureProvider((ref) async { final token = ref.watch(authProvider.select((state) => state.accessToken)); if (token == null || token.isEmpty) { throw StateError('Non authentifié'); } return ref.watch(walletRepositoryProvider).fetchWallet(); }); final walletTransactionsProvider = FutureProvider>((ref) async { final token = ref.watch(authProvider.select((state) => state.accessToken)); if (token == null || token.isEmpty) { throw StateError('Non authentifié'); } return ref.watch(walletRepositoryProvider).fetchTransactions(); });