feat: Release version 3.1.4 - Mode terrain et génération PDF
✨ Nouvelles fonctionnalités: - Ajout du mode terrain pour utilisation mobile hors connexion - Génération automatique de reçus PDF avec template personnalisé - Révision complète du système de cartes avec amélioration des performances 🔧 Améliorations techniques: - Refactoring du module chat avec architecture simplifiée - Optimisation du système de sécurité NIST SP 800-63B - Amélioration de la gestion des secteurs géographiques - Support UTF-8 étendu pour les noms d'utilisateurs 📱 Application mobile: - Nouveau mode terrain dans user_field_mode_page - Interface utilisateur adaptative pour conditions difficiles - Synchronisation offline améliorée 🗺️ Cartographie: - Optimisation des performances MapBox - Meilleure gestion des tuiles hors ligne - Amélioration de l'affichage des secteurs 📄 Documentation: - Ajout guide Android (ANDROID-GUIDE.md) - Documentation sécurité API (API-SECURITY.md) - Guide module chat (CHAT_MODULE.md) 🐛 Corrections: - Résolution des erreurs 400 lors de la création d'utilisateurs - Correction de la validation des noms d'utilisateurs - Fix des problèmes de synchronisation chat 🤖 Generated with Claude Code (https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
63
app/lib/chat/models/message.dart
Normal file
63
app/lib/chat/models/message.dart
Normal file
@@ -0,0 +1,63 @@
|
||||
import 'package:hive/hive.dart';
|
||||
|
||||
part 'message.g.dart';
|
||||
|
||||
/// Modèle simple de message
|
||||
@HiveType(typeId: 51)
|
||||
class Message extends HiveObject {
|
||||
@HiveField(0)
|
||||
final String id;
|
||||
|
||||
@HiveField(1)
|
||||
final String roomId;
|
||||
|
||||
@HiveField(2)
|
||||
final String content;
|
||||
|
||||
@HiveField(3)
|
||||
final int senderId;
|
||||
|
||||
@HiveField(4)
|
||||
final String senderName;
|
||||
|
||||
@HiveField(5)
|
||||
final DateTime sentAt;
|
||||
|
||||
@HiveField(6)
|
||||
final bool isMe;
|
||||
|
||||
@HiveField(7)
|
||||
final bool isRead;
|
||||
|
||||
Message({
|
||||
required this.id,
|
||||
required this.roomId,
|
||||
required this.content,
|
||||
required this.senderId,
|
||||
required this.senderName,
|
||||
required this.sentAt,
|
||||
this.isMe = false,
|
||||
this.isRead = false,
|
||||
});
|
||||
|
||||
// Simple factory depuis JSON
|
||||
factory Message.fromJson(Map<String, dynamic> json, int currentUserId) {
|
||||
return Message(
|
||||
id: json['id'],
|
||||
roomId: json['fk_room'],
|
||||
content: json['content'] ?? '',
|
||||
senderId: json['fk_user'] ?? 0,
|
||||
senderName: json['sender_name'] ?? 'Anonyme',
|
||||
sentAt: DateTime.parse(json['date_sent']),
|
||||
isMe: json['fk_user'] == currentUserId,
|
||||
isRead: json['statut'] == 'lu',
|
||||
);
|
||||
}
|
||||
|
||||
// Simple conversion en JSON pour envoi
|
||||
Map<String, dynamic> toJson() => {
|
||||
'fk_room': roomId,
|
||||
'content': content,
|
||||
'fk_user': senderId,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user