Files
sm-emby-share/lib/shared/utils/lru_eviction.dart
T

24 lines
666 B
Dart
Raw Normal View History

2026-07-14 11:11:36 +08:00
void evictOldestEntries(Map<String, dynamic> map, int maxSize) {
if (map.length <= maxSize) return;
final entries = map.entries.toList()
..sort((a, b) {
final aTime =
DateTime.tryParse(
(a.value as Map<String, dynamic>)['updatedAt'] as String? ?? '',
) ??
DateTime(2000);
final bTime =
DateTime.tryParse(
(b.value as Map<String, dynamic>)['updatedAt'] as String? ?? '',
) ??
DateTime(2000);
return aTime.compareTo(bTime);
});
final removeCount = map.length - maxSize;
for (var i = 0; i < removeCount; i++) {
map.remove(entries[i].key);
}
}