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(()) + } }