# Module Chat GEOSECTOR

## Structure du module

Le module chat est organisé selon une architecture modulaire respectant la séparation des préoccupations :

```
lib/chat/
├── models/                 # Modèles de données
│   ├── conversation_model.dart
│   ├── message_model.dart
│   ├── participant_model.dart
│   └── audience_target_model.dart
├── repositories/          # Gestion des données
│   └── chat_repository.dart
├── services/              # Services techniques
│   ├── chat_api_service.dart
│   └── offline_queue_service.dart
├── widgets/               # Composants UI
│   ├── chat_screen.dart
│   ├── conversations_list.dart
│   ├── message_bubble.dart
│   └── chat_input.dart
├── pages/                 # Pages de l'application
│   └── chat_page.dart
├── chat.dart             # Point d'entrée avec exports
└── README.md             # Documentation du module
```

## Fonctionnalités principales

1. **Conversations** : Support des conversations one-to-one, groupes et annonces
2. **Messages** : Envoi/réception de messages texte et pièces jointes
3. **Participants** : Gestion des participants aux conversations
4. **Annonces** : Diffusion de messages à des groupes spécifiques
5. **Mode hors ligne** : File d'attente pour la synchronisation des données

## Utilisation

### Importation

```dart
import 'package:geosector/chat/chat.dart';
```

### Affichage de la page chat

```dart
Navigator.push(
  context,
  MaterialPageRoute(builder: (context) => const ChatPage()),
);
```

### Création d'une conversation

```dart
final chatRepository = ChatRepository();
final conversation = await chatRepository.createConversation({
  'type': 'one_to_one',
  'participants': [userId1, userId2],
});
```

## États d'implémentation

- [x] Structure de base
- [ ] Modèles de données complets
- [ ] Intégration avec Hive
- [ ] Services API
- [ ] Gestion hors ligne
- [ ] Widgets visuels
- [ ] Tests unitaires

## À faire

1. Compléter l'implémentation des modèles avec les adaptateurs Hive
2. Implémenter les méthodes dans les services et repositories
3. Créer les widgets visuels avec le design approprié
4. Ajouter les adaptateurs Hive pour le stockage local
5. Implémenter la gestion des pièces jointes
6. Ajouter les tests unitaires
