From c12d2ad59ab0e6fd86709de5f6b19aacb7c04e29 Mon Sep 17 00:00:00 2001 From: Will Miao <13051207myq@gmail.com> Date: Sat, 15 Feb 2025 23:39:46 +0800 Subject: [PATCH] Enhance folder tag visibility on click; streamline refresh logic in download manager --- static/js/api/loraApi.js | 13 +++++++------ static/js/managers/DownloadManager.js | 17 ++++++++++------- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/static/js/api/loraApi.js b/static/js/api/loraApi.js index 387247fd..521e963e 100644 --- a/static/js/api/loraApi.js +++ b/static/js/api/loraApi.js @@ -86,10 +86,13 @@ function updateFolderTags(folders) { // Update the container folderTagsContainer.innerHTML = tagsHTML; - // Reattach click handlers + // Reattach click handlers and ensure the active tag is visible const tags = folderTagsContainer.querySelectorAll('.tag'); tags.forEach(tag => { tag.addEventListener('click', toggleFolder); + if (tag.dataset.folder === currentFolder) { + tag.scrollIntoView({ behavior: 'smooth', block: 'nearest' }); + } }); } @@ -271,13 +274,11 @@ export async function resetAndReload(boolUpdateFolders = false) { await loadMoreLoras(boolUpdateFolders); } -export async function refreshLoras(boolShowToast = true) { +export async function refreshLoras() { try { state.loadingManager.showSimpleLoading('Refreshing loras...'); - await resetAndReload(true); - if (boolShowToast){ - showToast('Refresh complete', 'success'); - } + await resetAndReload(); + showToast('Refresh complete', 'success'); } catch (error) { console.error('Refresh failed:', error); showToast('Failed to refresh loras', 'error'); diff --git a/static/js/managers/DownloadManager.js b/static/js/managers/DownloadManager.js index aa606c3a..25850880 100644 --- a/static/js/managers/DownloadManager.js +++ b/static/js/managers/DownloadManager.js @@ -1,6 +1,8 @@ import { modalManager } from './ModalManager.js'; import { showToast } from '../utils/uiHelpers.js'; import { LoadingManager } from './LoadingManager.js'; +import { state } from '../state/index.js'; +import { resetAndReload } from '../api/loraApi.js'; export class DownloadManager { constructor() { @@ -183,13 +185,13 @@ export class DownloadManager { } // Construct relative path - let relativePath = ''; + let targetFolder = ''; if (this.selectedFolder) { - relativePath = this.selectedFolder; + targetFolder = this.selectedFolder; } if (newFolder) { - relativePath = relativePath ? - `${relativePath}/${newFolder}` : newFolder; + targetFolder = targetFolder ? + `${targetFolder}/${newFolder}` : newFolder; } try { @@ -218,7 +220,7 @@ export class DownloadManager { body: JSON.stringify({ download_url: downloadUrl, lora_root: loraRoot, - relative_path: relativePath + relative_path: targetFolder }) }); @@ -229,8 +231,9 @@ export class DownloadManager { showToast('Download completed successfully', 'success'); modalManager.closeModal('downloadModal'); - // Refresh the grid to show new model - window.refreshLoras(false); + // Update state and trigger reload with folder update + state.activeFolder = targetFolder; + await resetAndReload(true); // Pass true to update folders } catch (error) { showToast(error.message, 'error');