diff --git a/routes/api_routes.py b/routes/api_routes.py index a4cf2f7c..781b381c 100644 --- a/routes/api_routes.py +++ b/routes/api_routes.py @@ -330,7 +330,7 @@ class ApiRoutes: with open(metadata_path, 'w', encoding='utf-8') as f: json.dump(local_metadata, f, indent=2, ensure_ascii=False) - await self.scanner.update_single_lora_cache(local_metadata['file_path'], local_metadata) + await self.scanner.update_single_lora_cache(local_metadata['file_path'], local_metadata['file_path'], local_metadata) async def fetch_all_civitai(self, request: web.Request) -> web.Response: """Fetch CivitAI metadata for all loras in the background""" diff --git a/services/lora_scanner.py b/services/lora_scanner.py index 85336eb9..03ab4711 100644 --- a/services/lora_scanner.py +++ b/services/lora_scanner.py @@ -369,7 +369,7 @@ class LoraScanner: if os.path.exists(source_metadata): target_metadata = os.path.join(target_path, f"{base_name}.metadata.json") shutil.move(source_metadata, target_metadata) - lora_data = await self._update_metadata_paths(target_metadata, target_lora) + metadata = await self._update_metadata_paths(target_metadata, target_lora) # Move preview file if exists preview_extensions = ['.preview.png', '.preview.jpeg', '.preview.jpg', '.preview.mp4', @@ -382,7 +382,7 @@ class LoraScanner: break # Update cache - await self.update_single_lora_cache(source_path, lora_data) + await self.update_single_lora_cache(source_path, target_lora, metadata) return True @@ -390,14 +390,14 @@ class LoraScanner: logger.error(f"Error moving model: {e}", exc_info=True) return False - async def update_single_lora_cache(self, file_path: str, metadata: Dict) -> bool: + async def update_single_lora_cache(self, original_path: str, new_path: str, metadata: Dict) -> bool: cache = await self.get_cached_data() cache.raw_data = [ item for item in cache.raw_data - if item['file_path'] != file_path + if item['file_path'] != original_path ] if metadata: - metadata['folder'] = self._calculate_folder(file_path) + metadata['folder'] = self._calculate_folder(new_path) cache.raw_data.append(metadata) all_folders = set(cache.folders) all_folders.add(metadata['folder']) diff --git a/static/js/api/loraApi.js b/static/js/api/loraApi.js index 0dad5659..d4357d41 100644 --- a/static/js/api/loraApi.js +++ b/static/js/api/loraApi.js @@ -290,6 +290,7 @@ export async function refreshLoras() { export async function refreshSingleLoraMetadata(filePath) { try { + state.loadingManager.showSimpleLoading('Refreshing metadata...'); const response = await fetch('/api/fetch-civitai', { method: 'POST', headers: { @@ -314,5 +315,8 @@ export async function refreshSingleLoraMetadata(filePath) { } catch (error) { console.error('Error refreshing metadata:', error); showToast(error.message, 'error'); + } finally { + state.loadingManager.hide(); + state.loadingManager.restoreProgressBar(); } } \ No newline at end of file