Performance.fromJson constructor
Performance.fromJson(
- 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) {
// Validate reasonable timestamp before creating 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: JsonFactoryMixin.safeString(json['name']),
elapsedMs: JsonFactoryMixin.safeInt(json['elapsed_ms']),
debug: JsonFactoryMixin.safeString(json['debug']),
steps: json['steps'] is List
? (json['steps'] as List)
.whereType<Map<String, dynamic>>()
.map(PerformanceStep.fromJson)
.toList()
: null,
);
}