Performance.fromJson constructor

Performance.fromJson(
  1. Map<String, dynamic> json
)

Implementation

factory Performance.fromJson(Map<String, dynamic> json) {
  // Handle both millisecond timestamps and ISO strings
  DateTime parseTimestamp(dynamic ts) {
    if (ts == null) return DateTime.now().toUtc();
    if (ts is int) {
      // Validar timestamp razonable antes de crear DateTime
      if (ts > 0 && ts < 32503680000000) {
        return DateTime.fromMillisecondsSinceEpoch(ts, isUtc: true);
      }
      return DateTime.now().toUtc();
    }
    if (ts is String) {
      return DateTime.tryParse(ts)?.toUtc() ?? DateTime.now().toUtc();
    }
    return DateTime.now().toUtc();
  }

  return Performance(
    timestamp: parseTimestamp(json['timestamp']),
    name: json['name'],
    elapsedMs: json['elapsed_ms'] is num
        ? (json['elapsed_ms'] as num).toInt()
        : null,
    debug: json['debug'],
    steps: json['steps'] is List
        ? (json['steps'] as List)
            .where((e) => e is Map<String, dynamic>)
            .map((e) => PerformanceStep.fromJson(e as Map<String, dynamic>))
            .toList()
        : null,
  );
}