TF-1068 Cleanup recent list login url when exceeding

This commit is contained in:
dab246
2022-10-21 12:34:33 +07:00
committed by Dat H. Pham
parent 2a39904b35
commit d6e2f9690f
12 changed files with 129 additions and 2 deletions
@@ -0,0 +1,27 @@
import 'package:tmail_ui_user/features/caching/recent_login_url_cache_client.dart';
import 'package:tmail_ui_user/features/cleanup/domain/model/recent_login_url_cleanup_rule.dart';
import 'package:tmail_ui_user/features/login/data/model/recent_login_url_cache.dart';
class RecentLoginUrlCacheManager {
final RecentLoginUrlCacheClient _recentLoginUrlCacheClient;
RecentLoginUrlCacheManager(this._recentLoginUrlCacheClient);
Future<void> clean(RecentLoginUrlCleanupRule cleanupRule) async {
final recentCacheExist = await _recentLoginUrlCacheClient.isExistTable();
if (recentCacheExist) {
final listRecentUrlCache = await _recentLoginUrlCacheClient.getAll();
listRecentUrlCache.sortByCreationDate();
if (listRecentUrlCache.length > cleanupRule.storageLimit) {
final newListKeyRecent = listRecentUrlCache
.sublist(cleanupRule.storageLimit)
.map((recent) => recent.url)
.toList();
await _recentLoginUrlCacheClient.deleteMultipleItem(newListKeyRecent);
}
}
}
}