PerformanceStep.fromJson constructor

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

Implementation

factory PerformanceStep.fromJson(Map<String, dynamic> json) {
  return JsonFactoryMixin.safeFromJson(
    json,
    (j) {
      // Handle both millisecond timestamps and ISO strings
      DateTime parseTimestamp(dynamic ts) {
        if (ts == null) {
          return DateTime.now().toUtc();
        }
        if (ts is int) {
          return DateTime.fromMillisecondsSinceEpoch(ts, isUtc: true);
        }
        if (ts is String) {
          return DateTime.tryParse(ts)?.toUtc() ?? DateTime.now().toUtc();
        }
        return DateTime.now().toUtc();
      }

      return PerformanceStep(
        timestamp: parseTimestamp(j['timestamp']),
        name: JsonFactoryMixin.safeString(j['name']),
        elapsedMs: JsonFactoryMixin.safeInt(j['elapsed_ms']),
        debug: JsonFactoryMixin.safeString(j['debug']),
      );
    },
    () => PerformanceStep(timestamp: DateTime.now().toUtc()),
  );
}