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

@@ -186,6 +186,19 @@ class _EpargnePageState extends State<EpargnePage> {
'Solde disponible total • ${_comptes.length} compte${_comptes.length > 1 ? 's' : ''}',
style: AppTypography.bodyTextSmall.copyWith(color: AppColors.textSecondaryLight),
),
if (_comptes.any((c) => c.soldeBloque > 0)) ...[
const SizedBox(height: SpacingTokens.xs),
Row(
children: [
Icon(Icons.shield_outlined, size: 12, color: Colors.amber.shade700),
const SizedBox(width: 4),
Text(
'Certains fonds sont sous surveillance LCB-FT',
style: AppTypography.bodyTextSmall.copyWith(fontSize: 10, color: Colors.amber.shade700),
),
],
),
],
],
),
);
@@ -231,6 +244,29 @@ class _EpargnePageState extends State<EpargnePage> {
],
),
),
if (c.soldeBloque > 0)
Padding(
padding: const EdgeInsets.only(right: SpacingTokens.xs),
child: Tooltip(
message: 'Fonds bloqués — surveillance LCB-FT',
child: Container(
padding: const EdgeInsets.symmetric(horizontal: 6, vertical: 3),
decoration: BoxDecoration(
color: Colors.amber.withOpacity(0.15),
borderRadius: BorderRadius.circular(6),
border: Border.all(color: Colors.amber.shade700, width: 1),
),
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
Icon(Icons.shield_outlined, size: 12, color: Colors.amber.shade700),
const SizedBox(width: 3),
Text('LCB-FT', style: TextStyle(fontSize: 9, fontWeight: FontWeight.bold, color: Colors.amber.shade700)),
],
),
),
),
),
if (c.statut != null)
InfoBadge(
text: c.statut!,