From e51f7cc1a75d12af78c5d15e8589a8f14eb755ce Mon Sep 17 00:00:00 2001 From: Will Miao <13051207myq@gmail.com> Date: Sun, 13 Apr 2025 22:12:18 +0800 Subject: [PATCH] feat: Enhance checkpoint download manager to save active folder preference and update UI accordingly --- .../js/managers/CheckpointDownloadManager.js | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/static/js/managers/CheckpointDownloadManager.js b/static/js/managers/CheckpointDownloadManager.js index e0d132b0..a5af71bf 100644 --- a/static/js/managers/CheckpointDownloadManager.js +++ b/static/js/managers/CheckpointDownloadManager.js @@ -3,7 +3,7 @@ import { showToast } from '../utils/uiHelpers.js'; import { LoadingManager } from './LoadingManager.js'; import { state } from '../state/index.js'; import { resetAndReload } from '../api/checkpointApi.js'; -import { getStorageItem } from '../utils/storageHelpers.js'; +import { getStorageItem, setStorageItem } from '../utils/storageHelpers.js'; export class CheckpointDownloadManager { constructor() { @@ -338,8 +338,22 @@ export class CheckpointDownloadManager { showToast('Download completed successfully', 'success'); modalManager.closeModal('checkpointDownloadModal'); - // Update state and trigger reload with folder update - state.activeFolder = targetFolder; + // Update state specifically for the checkpoints page + state.pages.checkpoints.activeFolder = targetFolder; + + // Save the active folder preference to storage + setStorageItem('checkpoints_activeFolder', targetFolder); + + // Update UI to show the folder as selected + document.querySelectorAll('.folder-tags .tag').forEach(tag => { + const isActive = tag.dataset.folder === targetFolder; + tag.classList.toggle('active', isActive); + if (isActive && !tag.parentNode.classList.contains('collapsed')) { + // Scroll the tag into view if folder tags are not collapsed + tag.scrollIntoView({ behavior: 'smooth', block: 'nearest' }); + } + }); + await resetAndReload(true); // Pass true to update folders } catch (error) {