mirror of
https://github.com/willmiao/ComfyUI-Lora-Manager.git
synced 2026-09-20 18:51:26 -03:00
5adfa3be36
Standalone users previously had to hand-edit settings.json to configure primary folder_paths. Add a standalone-only Model Paths section to the settings modal: - Backend exposes standalone_mode, folder_paths (with template placeholder values filtered out) and a data-driven folder_path_schema derived from OTHER_MODEL_FOLDER_SUBTYPES via GET /api/lm/settings - The new section renders multi-path editors per model type from the schema, with inline enable_other_models / sub-type controls so other model types are configured without leaving the tab - Persistent restart-required cues after a save: nav dot, inline notice and a global banner (unique id per change so dismissals don't mute future reminders) - The missing-model-paths startup banner and the Other Models no-paths empty state now deep-link into the new section instead of pointing at settings.json
69 lines
2.4 KiB
JavaScript
69 lines
2.4 KiB
JavaScript
/**
|
|
* Shared helpers for the opt-in Other Models feature.
|
|
*
|
|
* Used by the disabled page, the announcement banner and the download modal so
|
|
* that enabling the feature always goes through the same settings API call and
|
|
* lands on the same settings section.
|
|
*/
|
|
|
|
/**
|
|
* Turn on Other Models management and reload so the server-rendered nav and
|
|
* the scanner state pick up the change.
|
|
*/
|
|
export async function enableOtherModels() {
|
|
const response = await fetch('/api/lm/settings', {
|
|
method: 'POST',
|
|
headers: { 'Content-Type': 'application/json' },
|
|
body: JSON.stringify({ enable_other_models: true }),
|
|
});
|
|
const data = await response.json().catch(() => ({}));
|
|
if (!response.ok || data.success === false) {
|
|
throw new Error(data.error || `HTTP ${response.status}`);
|
|
}
|
|
window.location.reload();
|
|
}
|
|
|
|
/**
|
|
* Open the settings modal on the Library section and scroll the Other Models
|
|
* toggle into view. Mirrors DoctorManager's open-settings-syntax-format flow.
|
|
*/
|
|
export function openOtherModelsSettings() {
|
|
const modalManager = window.modalManager;
|
|
if (modalManager && typeof modalManager.showModal === 'function') {
|
|
modalManager.showModal('settingsModal');
|
|
}
|
|
|
|
window.setTimeout(() => {
|
|
document.querySelectorAll('.settings-section').forEach((section) => {
|
|
section.classList.remove('active');
|
|
});
|
|
document.getElementById('section-library')?.classList.add('active');
|
|
|
|
document.querySelectorAll('.settings-nav-item').forEach((item) => {
|
|
item.classList.remove('active');
|
|
});
|
|
document.querySelector('.settings-nav-item[data-section="library"]')?.classList.add('active');
|
|
|
|
document.getElementById('enableOtherModels')?.scrollIntoView({
|
|
behavior: 'smooth',
|
|
block: 'center',
|
|
});
|
|
}, 100);
|
|
}
|
|
|
|
/**
|
|
* Open the settings modal on the standalone-only Model Paths section, where
|
|
* primary folder_paths are edited. The section only exists in standalone mode,
|
|
* so the nav item lookup simply no-ops elsewhere.
|
|
*/
|
|
export function openModelPathsSettings() {
|
|
const modalManager = window.modalManager;
|
|
if (modalManager && typeof modalManager.showModal === 'function') {
|
|
modalManager.showModal('settingsModal');
|
|
}
|
|
|
|
window.setTimeout(() => {
|
|
document.querySelector('.settings-nav-item[data-section="modelPaths"]')?.click();
|
|
}, 100);
|
|
}
|