import 'dart:typed_data'; class Pendiente { final String hash; final String? titulo; final Uint8List contenido; final int intentos; final DateTime? ultimoIntento; final DateTime? proximoIntento; final int? destinoId; Pendiente({ required this.hash, this.titulo, required this.contenido, this.intentos = 0, this.ultimoIntento, this.proximoIntento, this.destinoId, }); factory Pendiente.fromMap(Map map) => Pendiente( hash: map['hash'] as String, titulo: map['titulo'] as String?, contenido: map['contenido'] as Uint8List, intentos: map['intentos'] as int? ?? 0, ultimoIntento: map['ultimo_intento'] != null ? DateTime.parse(map['ultimo_intento'] as String) : null, proximoIntento: map['proximo_intento'] != null ? DateTime.parse(map['proximo_intento'] as String) : null, destinoId: map['destino_id'] as int?, ); Map toMap() => { 'hash': hash, 'titulo': titulo, 'contenido': contenido, 'intentos': intentos, 'ultimo_intento': ultimoIntento?.toIso8601String(), 'proximo_intento': proximoIntento?.toIso8601String(), 'destino_id': destinoId, }; bool get puedeReintentar => intentos < 20; String get estado { if (intentos >= 20) return 'agotado'; if (proximoIntento != null && proximoIntento!.isAfter(DateTime.now())) { return 'esperando'; } return 'listo'; } }