From 309c4b2cc27ff7e063db5f2c1a16cc6277763ddf Mon Sep 17 00:00:00 2001 From: vicrodh Date: Sun, 8 Mar 2026 12:56:35 -0600 Subject: [PATCH] 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. --- src-tauri/src/commands_v2.rs | 27 ++++++++++++++++++++------- src-tauri/src/reco_store/db.rs | 10 ++++++++++ 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/src-tauri/src/commands_v2.rs b/src-tauri/src/commands_v2.rs index 61ede3c34..2797edb49 100644 --- a/src-tauri/src/commands_v2.rs +++ b/src-tauri/src/commands_v2.rs @@ -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 { - 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) } diff --git a/src-tauri/src/reco_store/db.rs b/src-tauri/src/reco_store/db.rs index b16c1c878..bc85b59ac 100644 --- a/src-tauri/src/reco_store/db.rs +++ b/src-tauri/src/reco_store/db.rs @@ -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(()) + } }