letFirestoreTimestampOrNull function
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;
}