cleanupOldFileHistoryBackups function

Future<CleanupResult> cleanupOldFileHistoryBackups()

Clean up old file history backups.

Implementation

Future<CleanupResult> cleanupOldFileHistoryBackups() async {
  final cutoffDate = getCutoffDate();
  var result = const CleanupResult();

  try {
    final configDir = _getNeomageConfigHomeDir();
    final fileHistoryDir = p.join(configDir, 'file-history');

    List<FileSystemEntity> dirents;
    try {
      dirents = await Directory(fileHistoryDir).list().toList();
    } catch (_) {
      return result;
    }

    final sessionDirs = dirents.whereType<Directory>().toList();

    await Future.wait(
      sessionDirs.map((sessionDir) async {
        try {
          final stat = await FileStat.stat(sessionDir.path);
          if (stat.modified.isBefore(cutoffDate)) {
            await sessionDir.delete(recursive: true);
            result = CleanupResult(
              messages: result.messages + 1,
              errors: result.errors,
            );
          }
        } catch (_) {
          result = CleanupResult(
            messages: result.messages,
            errors: result.errors + 1,
          );
        }
      }),
    );

    await _tryRmdir(fileHistoryDir);
  } catch (_) {}

  return result;
}