fix: clear reco meta caches when image cache is cleared

When the user clears the image cache from settings, also clear
reco_album_meta, reco_track_meta, and reco_artist_meta tables.
This forces re-resolution from Tier 2/3 with the correct (small)
image URLs instead of keeping stale large (600px) URLs in Tier 1.
This commit is contained in:
vicrodh committed 2026-03-08 12:56:35 -06:00
1 parent 63b1161afe
commit 309c4b2cc2
2 files changed
+30 -7

No files matched your search

+20 -7
View File
@@ -11484,13 +11484,26 @@ pub async fn v2_get_image_cache_stats(
#[tauri::command]
pub async fn v2_clear_image_cache(
state: State<'_, crate::image_cache::ImageCacheState>,
reco_state: State<'_, crate::reco_store::RecoState>,
) -> Result<u64, String> {
let lock = state
.service
.lock()
.map_err(|e| format!("Lock error: {}", e))?;
match lock.as_ref() {
Some(service) => service.clear(),
None => Ok(0),
let freed = {
let lock = state
.service
.lock()
.map_err(|e| format!("Lock error: {}", e))?;
match lock.as_ref() {
Some(service) => service.clear()?,
None => 0,
}
};
// Also clear reco meta image URLs so they re-resolve with correct sizes
{
let guard__ = reco_state.db.lock().await;
if let Some(db) = guard__.as_ref() {
let _ = db.clear_meta_caches();
}
}
Ok(freed)
}
+10
View File
@@ -853,4 +853,14 @@ impl RecoStoreDb {
.map_err(|e| format!("Failed to upsert artist meta: {}", e))?;
Ok(())
}
/// Clear all meta caches so entries re-resolve with fresh image URLs.
pub fn clear_meta_caches(&self) -> Result<(), String> {
self.conn
.execute_batch(
"DELETE FROM reco_album_meta; DELETE FROM reco_track_meta; DELETE FROM reco_artist_meta;",
)
.map_err(|e| format!("Failed to clear meta caches: {}", e))?;
Ok(())
}
}