feat(mobile): consolidation modules epargne, messaging, organisations

- Epargne: badge LCB-FT (bouclier ambre) sur comptes avec fonds bloques + note recap
- EpargneDetail: historique pagine (page/size), affichage soldeAvant/soldeApres/motif dans chaque transaction, bouton "Charger plus"
- TransactionEpargneRepository: getByCompte accepte page et size, gere reponse paginee Spring (content[])
- MessagingDatasource: markMessageAsRead silencieuse (pas d'endpoint unitaire), getUnreadCount somme unreadCount des conversations
- OrganizationDetail: _memberCount charge le vrai nombre depuis GET /membres/count, affiche la valeur reelle au lieu de nombreMembres (toujours 0)
This commit is contained in:
dahoud
2026-04-05 13:37:21 +00:00
parent 65b5c79c43
commit 289efc4956
7 changed files with 160 additions and 38 deletions

View File

@@ -111,12 +111,23 @@ class TransactionEpargneRepository {
throw Exception('Erreur transfert: ${response.statusCode}');
}
/// Historique des transactions d'un compte.
Future<List<Map<String, dynamic>>> getByCompte(String compteId) async {
final response = await _apiClient.get('$_base/compte/$compteId');
/// Historique des transactions d'un compte (paginé).
Future<List<Map<String, dynamic>>> getByCompte(
String compteId, {
int page = 0,
int size = 20,
}) async {
final response = await _apiClient.get(
'$_base/compte/$compteId',
queryParameters: {'page': page, 'size': size},
);
if (response.statusCode == 200) {
final data = response.data;
if (data is List) return List<Map<String, dynamic>>.from(data.map((e) => e as Map<String, dynamic>));
if (data is Map && data.containsKey('content')) {
final content = data['content'] as List? ?? [];
return List<Map<String, dynamic>>.from(content.map((e) => e as Map<String, dynamic>));
}
return [];
}
throw Exception('Erreur chargement historique: ${response.statusCode}');