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:
2 files changed
+30
-7
No files matched your search
@@ -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)
|
||||
}
|
||||
@@ -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(())
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user