# 📋 TODO List - Module Chat v1.0.0

## 🎯 Objectif
Aligner le module chat avec l'API backend et optimiser l'expérience utilisateur.

## 📊 État d'avancement global : 8/13 (62%)

---

## 🔴 PRIORITÉ HAUTE - Fonctionnalités essentielles

### 1. ✅ Pagination des messages
- **Description** : Implémenter la pagination avec limit=50 et paramètre `before`
- **Endpoint** : `GET /api/chat/rooms/{id}/messages?limit=50&before={message_id}`
- **Fichiers** : `chat_service.dart`, `chat_page.dart`
- **Statut** : ✅ COMPLÉTÉ

### 2. ✅ Chargement progressif
- **Description** : Ajouter bouton "Charger plus" en haut de la conversation
- **UI** : Bouton ou indicateur en haut de la liste des messages
- **Fichiers** : `chat_page.dart`
- **Statut** : ✅ COMPLÉTÉ

### 3. ✅ Gestion du flag has_more
- **Description** : Gérer la réponse API pour savoir s'il reste des messages
- **Logique** : Désactiver "Charger plus" si `has_more: false`
- **Fichiers** : `message.dart`, `chat_service.dart`
- **Statut** : ✅ COMPLÉTÉ

---

## 🟠 PRIORITÉ MOYENNE - Amélioration UX

### 4. ✅ Message initial à la création
- **Description** : Ajouter `initial_message` lors de la création d'une room
- **Endpoint** : `POST /api/chat/rooms` avec body `{..., "initial_message": "..."}`
- **Fichiers** : `chat_service.dart`, `recipient_selector.dart`
- **Statut** : ✅ COMPLÉTÉ

### 5. ⬜ Extraction infos chat du login
- **Description** : Récupérer `total_rooms`, `unread_messages` depuis la réponse login
- **Intégration** : Stocker dans Hive ou service global
- **Fichiers** : `user_repository.dart`, `chat_service.dart`
- **Temps estimé** : 20 min

### 6. ⬜ Badge messages non lus
- **Description** : Afficher un badge rouge avec le nombre sur l'icône chat
- **UI** : Badge sur NavigationDestination et dans la sidebar
- **Fichiers** : `responsive_navigation.dart`, `admin_dashboard_page.dart`
- **Temps estimé** : 15 min

### 7. ✅ Pull-to-refresh RoomsPage
- **Description** : Ajouter RefreshIndicator pour rafraîchir la liste des rooms
- **Geste** : Tirer vers le bas pour recharger
- **Fichiers** : `rooms_page.dart`
- **Statut** : ✅ COMPLÉTÉ (déjà implémenté)

### 8. ✅ Pull-to-refresh ChatPage
- **Description** : Ajouter RefreshIndicator pour rafraîchir les messages
- **Geste** : Tirer vers le bas pour recharger les derniers messages
- **Fichiers** : `chat_page.dart`
- **Statut** : ✅ COMPLÉTÉ

---

## 🟡 PRIORITÉ BASSE - Optimisations

### 9. ✅ Optimiser cache Hive
- **Description** : Limiter à 100 messages max par room dans le cache
- **Logique** : Supprimer les plus anciens si > 100
- **Fichiers** : `chat_service.dart`
- **Statut** : ✅ COMPLÉTÉ

### 10. ⬜ Optimiser le polling
- **Description** : Polling actif seulement si la page chat est visible
- **Optimisation** : Pause/reprise selon WidgetsBindingObserver
- **Fichiers** : `chat_service.dart`, `rooms_page.dart`
- **Temps estimé** : 15 min

### 11. ✅ Indicateurs de chargement
- **Description** : Ajouter spinners lors du chargement de la pagination
- **UI** : CircularProgressIndicator pendant les requêtes
- **Fichiers** : `chat_page.dart`
- **Statut** : ✅ COMPLÉTÉ

### 12. ⬜ Auto-refresh au retour
- **Description** : Rafraîchir quand l'app revient au premier plan
- **Implémentation** : WidgetsBindingObserver avec AppLifecycleState
- **Fichiers** : `chat_module.dart`, `rooms_page.dart`
- **Temps estimé** : 10 min

---

## 📚 DOCUMENTATION

### 13. ⬜ Mettre à jour README.md
- **Description** : Documenter toutes les nouvelles fonctionnalités
- **Sections** : Pagination, pull-to-refresh, badges, optimisations
- **Fichiers** : `README.md`
- **Temps estimé** : 15 min

---

## ⏱️ Temps total restant : ~1h

## 🚀 Ordre de développement recommandé

### Phase 1 : Core ✅ COMPLÉTÉ
1. Pagination des messages ✅
2. Chargement progressif ✅
3. Gestion has_more ✅

### Phase 2 : Intégration (En cours)
4. Message initial ✅
5. Infos chat login ⬜
6. Badge non lus ⬜
7. Pull-to-refresh rooms ✅
8. Pull-to-refresh chat ✅

### Phase 3 : Polish (Partiellement complété)
9. Optimiser cache ✅
10. Optimiser polling ⬜
11. Indicateurs chargement ✅
12. Auto-refresh ⬜

### Phase 4 : Documentation
13. README.md ⬜

---

## 📝 Notes

- **Version actuelle** : 1.0.0
- **Date de création** : 2025-01-17
- **Dernière mise à jour** : 2025-01-17
- **Développeur** : Module Chat Team

## 🔗 Références

- [API Documentation](../../../docs/API_CHAT.md)
- [Architecture Flutter](../README.md)
- [Permissions YAML](../chat_config.yaml)

## ✨ Améliorations implémentées

### Pagination
- Limite de 50 messages par requête
- Paramètre `before` pour charger les messages plus anciens
- Gestion du flag `has_more` pour indiquer s'il reste des messages
- Bouton "Charger plus" en haut de la conversation

### Optimisations cache
- Limitation à 100 messages maximum par room dans Hive
- Suppression automatique des messages les plus anciens
- Méthode `_saveMessagesToCache` dédiée

### Message initial
- Champ de texte ajouté dans le dialog de sélection des destinataires
- Paramètre `initial_message` dans les méthodes de création de room
- Support dans l'API pour envoyer le message initial

### Pull-to-refresh
- RefreshIndicator dans RoomsPage (déjà existant)
- RefreshIndicator dans ChatPage pour rafraîchir les messages
- Rechargement complet des messages récents

### Indicateurs de chargement
- Spinner pendant le chargement de la pagination
- État `_isLoadingMore` pour gérer l'affichage
- CircularProgressIndicator de taille réduite