letFirestoreTimestampOrNull function

FirestoreTimestamp? letFirestoreTimestampOrNull(
  1. dynamic input
)

Let's you convert input to a FirestoreTimestamp type if possible, or returns null if the conversion cannot be performed.

Implementation

FirestoreTimestamp? letFirestoreTimestampOrNull(dynamic input) {
  if (input is DateTime) {
    return FirestoreTimestamp.fromMillisecondsSinceEpoch(
      input.millisecondsSinceEpoch,
    );
  }
  if (input is int) {
    return FirestoreTimestamp.fromMillisecondsSinceEpoch(input);
  }
  if (input is Duration) {
    return FirestoreTimestamp.fromMillisecondsSinceEpoch(input.inMilliseconds);
  }
  if (input is String) {
    final date = DateTime.tryParse(input.trim());
    if (date != null) {
      return FirestoreTimestamp.fromDate(date);
    }
  }
  if (input is num) {
    return FirestoreTimestamp.fromMillisecondsSinceEpoch(input.round());
  }
  try {
    // Assume input is a Timestamp (from Firestore package).
    return FirestoreTimestamp.fromMillisecondsSinceEpoch(
      input.millisecondsSinceEpoch,
    );
  } catch (_) {}
  return null;
}