Add Popup for metacache clear failures (#3586)

This commit is contained in:
Alexandru Ionut Tripon 2025-04-18 18:47:12 +03:00 committed by GitHub
commit c622c83930
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 16 additions and 4 deletions

View File

@ -166,8 +166,10 @@ auto HttpMetaCache::evictEntry(MetaEntryPtr entry) -> bool
return true;
}
void HttpMetaCache::evictAll()
//returns true on success, false otherwise
auto HttpMetaCache::evictAll() -> bool
{
bool ret = true;
for (QString& base : m_entries.keys()) {
EntryMap& map = m_entries[base];
qCDebug(taskHttpMetaCacheLogC) << "Evicting base" << base;
@ -176,8 +178,10 @@ void HttpMetaCache::evictAll()
qCWarning(taskHttpMetaCacheLogC) << "Unexpected missing cache entry" << entry->m_basePath;
}
map.entry_list.clear();
FS::deletePath(map.base_path);
//AND all return codes together so the result is true iff all runs of deletePath() are true
ret &= FS::deletePath(map.base_path);
}
return ret;
}
auto HttpMetaCache::staleEntry(QString base, QString resource_path) -> MetaEntryPtr

View File

@ -113,7 +113,7 @@ class HttpMetaCache : public QObject {
// evict selected entry from cache
auto evictEntry(MetaEntryPtr entry) -> bool;
void evictAll();
bool evictAll();
void addBase(QString base, QString base_root);

View File

@ -1318,7 +1318,15 @@ void MainWindow::on_actionReportBug_triggered()
void MainWindow::on_actionClearMetadata_triggered()
{
APPLICATION->metacache()->evictAll();
//This if contains side effects!
if (!APPLICATION->metacache()->evictAll()) {
CustomMessageBox::selectable(this, tr("Error"),
tr("Metadata cache clear Failed!\nTo clear the metadata cache manually, press Folders -> View "
"Launcher Root Folder, and after closing the launcher delete the folder named \"meta\"\n"),
QMessageBox::Warning)
->show();
}
APPLICATION->metacache()->SaveNow();
}