/* This file is part of Telegram Desktop, the official desktop application for the Telegram messaging service. For license and copyright information please follow this link: https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #include "storage/storage_clear_legacy.h" #include namespace Storage { namespace { constexpr auto kClearPartSize = size_type(10000); } // namespace void ClearLegacyFilesPart( const QString &base, CollectGoodFiles filter, base::flat_set &&skip = {}) { filter([ =, files = details::CollectFiles(base, kClearPartSize, skip) ](base::flat_set &&skip) mutable { crl::async([ =, files = std::move(files), skip = std::move(skip) ]() mutable { for (const auto &name : files) { if (!skip.contains(name) && !details::RemoveLegacyFile(base + name)) { skip.emplace(name); } } if (files.size() == kClearPartSize) { ClearLegacyFilesPart(base, filter, std::move(skip)); } }); }); } void ClearLegacyFiles(const QString &base, CollectGoodFiles filter) { Expects(base.endsWith('/')); crl::async([=] { ClearLegacyFilesPart(base, std::move(filter)); }); } } // namespace Storage