/// Modèle de données Message v4 avec désérialisation JSON library message_model; import '../../domain/entities/message.dart'; /// Modèle Message v4 class MessageModel extends Message { const MessageModel({ required super.id, required super.typeMessage, super.contenu, super.urlFichier, super.dureeAudio, super.supprime, super.expediteurId, super.expediteurNom, super.expediteurPrenom, super.messageParentId, super.messageParentApercu, super.dateEnvoi, }); factory MessageModel.fromJson(Map json) { return MessageModel( id: json['id']?.toString() ?? '', typeMessage: json['typeMessage']?.toString() ?? 'TEXTE', contenu: json['contenu']?.toString(), urlFichier: json['urlFichier']?.toString(), dureeAudio: _parseInt(json['dureeAudio']), supprime: json['supprime'] == true, expediteurId: json['expediteurId']?.toString(), expediteurNom: json['expediteurNom']?.toString(), expediteurPrenom: json['expediteurPrenom']?.toString(), messageParentId: json['messageParentId']?.toString(), messageParentApercu: json['messageParentApercu']?.toString(), dateEnvoi: json['dateEnvoi'] != null ? DateTime.tryParse(json['dateEnvoi'].toString()) : null, ); } } int? _parseInt(dynamic value) { if (value == null) return null; if (value is int) return value; if (value is double) return value.toInt(); return int.tryParse(value.toString()); }