fromJson method

  1. @override
DateTime? fromJson(
  1. dynamic data
)

Implementation

@override
DateTime? fromJson(dynamic data) {
  if (data == null) return null;

  try {
    // Handle Firestore Timestamp
    if (data is Timestamp) {
      return data.toDate();
    }

    // Handle Cloud Functions Map format
    if (data is Map) {
      final seconds = data['_seconds'] ?? data['seconds'];
      final nanoseconds = data['_nanoseconds'] ?? data['nanoseconds'];

      if (seconds != null) {
        return Timestamp(
          seconds as int,
          (nanoseconds as int?) ?? 0,
        ).toDate();
      }
    }

    // Handle milliseconds
    if (data is int) {
      return DateTime.fromMillisecondsSinceEpoch(data);
    }

    // Handle ISO string
    if (data is String) {
      return DateTime.tryParse(data);
    }
  } catch (e) {
    // ignore: avoid_print
    print('Error parsing timestamp: $e');
  }

  return null;
}