mirror of
https://github.com/Xevion/paperless-mobile.git
synced 2025-12-06 15:15:50 -06:00
45 lines
1.1 KiB
Dart
45 lines
1.1 KiB
Dart
extension NullableMapKey<K, V> on Map<K, V> {
|
|
V? tryPutIfAbsent(K key, V? Function() ifAbsent) {
|
|
final value = ifAbsent();
|
|
if (value == null) {
|
|
return null;
|
|
}
|
|
return putIfAbsent(key, () => value);
|
|
}
|
|
}
|
|
|
|
extension Unique<E, Id> on List<E> {
|
|
List<E> unique([Id Function(E element)? id, bool inplace = true]) {
|
|
final ids = <Id>{};
|
|
var list = inplace ? this : List<E>.from(this);
|
|
list.retainWhere((x) => ids.add(id != null ? id(x) : x as Id));
|
|
return list;
|
|
}
|
|
}
|
|
|
|
extension DuplicateCheckable<T> on Iterable<T> {
|
|
bool hasDuplicates() {
|
|
return toSet().length != length;
|
|
}
|
|
}
|
|
|
|
extension DateHelpers on DateTime {
|
|
bool get isToday {
|
|
final now = DateTime.now();
|
|
return now.day == day && now.month == month && now.year == year;
|
|
}
|
|
|
|
bool get isYesterday {
|
|
final yesterday = DateTime.now().subtract(const Duration(days: 1));
|
|
return yesterday.day == day &&
|
|
yesterday.month == month &&
|
|
yesterday.year == year;
|
|
}
|
|
}
|
|
|
|
extension StringNormalizer on String {
|
|
String normalized() {
|
|
return trim().toLowerCase();
|
|
}
|
|
}
|