summary refs log tree commit diff
path: root/src/MxcImageProvider.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/MxcImageProvider.cpp')
-rw-r--r--src/MxcImageProvider.cpp27
1 files changed, 23 insertions, 4 deletions
diff --git a/src/MxcImageProvider.cpp b/src/MxcImageProvider.cpp

index 8d1ac01e..e0afdcbf 100644 --- a/src/MxcImageProvider.cpp +++ b/src/MxcImageProvider.cpp
@@ -32,16 +32,17 @@ MxcImageProvider::MxcImageProvider() timer->setInterval(std::chrono::hours(1)); connect(timer, &QTimer::timeout, this, [] { QThreadPool::globalInstance()->start([] { + nhlog::net()->debug("Running media purge"); QDir dir(QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + "/media_cache", "", QDir::SortFlags(QDir::Name | QDir::IgnoreCase), - QDir::Filter::Writable | QDir::Filter::NoDotAndDotDot | QDir::Filter::Files); + QDir::Filter::Writable | QDir::Filter::NoDotAndDotDot | QDir::Filter::Files | + QDir::Filter::Dirs); - auto files = dir.entryInfoList(); - for (const auto &fileInfo : std::as_const(files)) { + auto handleFile = [](const QFileInfo &fileInfo) { if (fileInfo.fileTime(QFile::FileTime::FileAccessTime) - .daysTo(QDateTime::currentDateTime()) > 30) { + .daysTo(QDateTime::currentDateTime()) > 14) { if (QFile::remove(fileInfo.absoluteFilePath())) nhlog::net()->debug("Deleted stale media '{}'", fileInfo.absoluteFilePath().toStdString()); @@ -49,6 +50,24 @@ MxcImageProvider::MxcImageProvider() nhlog::net()->warn("Failed to delete stale media '{}'", fileInfo.absoluteFilePath().toStdString()); } + }; + + auto files = dir.entryInfoList(); + for (const auto &fileInfo : std::as_const(files)) { + if (fileInfo.isDir()) { + // handle one level of legacy directories + auto nestedDir = QDir(fileInfo.absoluteFilePath(), + "", + QDir::SortFlags(QDir::Name | QDir::IgnoreCase), + QDir::Filter::Writable | QDir::Filter::NoDotAndDotDot | + QDir::Filter::Files) + .entryInfoList(); + for (const auto &nestedFile : std::as_const(nestedDir)) { + handleFile(nestedFile); + } + } else { + handleFile(fileInfo); + } } }); });