Spaces:
Running
Running
import { app } from "../../scripts/app.js"; | |
import { api } from "../../scripts/api.js"; | |
export async function sleep(ms) { | |
return new Promise(resolve => setTimeout(resolve, ms)); | |
} | |
export function rebootAPI() { | |
if (confirm("Are you sure you'd like to reboot the server?")) { | |
try { | |
api.fetchApi("/manager/reboot"); | |
} | |
catch(exception) { | |
} | |
return true; | |
} | |
return false; | |
} | |
export async function install_checked_custom_node(grid_rows, target_i, caller, mode) { | |
if(caller) { | |
let failed = ''; | |
caller.disableButtons(); | |
for(let i in grid_rows) { | |
if(!grid_rows[i].checkbox.checked && i != target_i) | |
continue; | |
var target; | |
if(grid_rows[i].data.custom_node) { | |
target = grid_rows[i].data.custom_node; | |
} | |
else { | |
target = grid_rows[i].data; | |
} | |
caller.startInstall(target); | |
try { | |
const response = await api.fetchApi(`/customnode/${mode}`, { | |
method: 'POST', | |
headers: { 'Content-Type': 'application/json' }, | |
body: JSON.stringify(target) | |
}); | |
if(response.status == 400) { | |
show_message(`${mode} failed: ${target.title}`); | |
continue; | |
} | |
const status = await response.json(); | |
app.ui.dialog.close(); | |
target.installed = 'True'; | |
continue; | |
} | |
catch(exception) { | |
failed += `<BR> ${target.title}`; | |
} | |
} | |
if(failed != '') { | |
show_message(`${mode} failed: ${failed}`); | |
} | |
await caller.invalidateControl(); | |
caller.updateMessage("<BR>To apply the installed/updated/disabled/enabled custom node, please <button id='cm-reboot-button' class='cm-small-button'>RESTART</button> ComfyUI. And refresh browser.", 'cm-reboot-button'); | |
} | |
}; | |
export var manager_instance = null; | |
export function setManagerInstance(obj) { | |
manager_instance = obj; | |
} | |
function isValidURL(url) { | |
if(url.includes('&')) | |
return false; | |
const pattern = /^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$/; | |
return pattern.test(url); | |
} | |
export async function install_pip(packages) { | |
if(packages.includes('&')) | |
app.ui.dialog.show(`Invalid PIP package enumeration: '${packages}'`); | |
const res = await api.fetchApi(`/customnode/install/pip?packages=${packages}`); | |
if(res.status == 200) { | |
app.ui.dialog.show(`PIP package installation is processed.<br>To apply the pip packages, please click the <button id='cm-reboot-button'><font size='3px'>RESTART</font></button> button in ComfyUI.`); | |
const rebootButton = document.getElementById('cm-reboot-button'); | |
const self = this; | |
rebootButton.addEventListener("click", rebootAPI); | |
app.ui.dialog.element.style.zIndex = 10010; | |
} | |
else { | |
app.ui.dialog.show(`Failed to install '${packages}'<BR>See terminal log.`); | |
app.ui.dialog.element.style.zIndex = 10010; | |
} | |
} | |
export async function install_via_git_url(url, manager_dialog) { | |
if(!url) { | |
return; | |
} | |
if(!isValidURL(url)) { | |
app.ui.dialog.show(`Invalid Git url '${url}'`); | |
app.ui.dialog.element.style.zIndex = 10010; | |
return; | |
} | |
app.ui.dialog.show(`Wait...<BR><BR>Installing '${url}'`); | |
app.ui.dialog.element.style.zIndex = 10010; | |
const res = await api.fetchApi(`/customnode/install/git_url?url=${url}`); | |
if(res.status == 200) { | |
app.ui.dialog.show(`'${url}' is installed<BR>To apply the installed custom node, please <button id='cm-reboot-button'><font size='3px'>RESTART</font></button> ComfyUI.`); | |
const rebootButton = document.getElementById('cm-reboot-button'); | |
const self = this; | |
rebootButton.addEventListener("click", | |
function() { | |
if(rebootAPI()) { | |
manager_dialog.close(); | |
} | |
}); | |
app.ui.dialog.element.style.zIndex = 10010; | |
} | |
else { | |
app.ui.dialog.show(`Failed to install '${url}'<BR>See terminal log.`); | |
app.ui.dialog.element.style.zIndex = 10010; | |
} | |
} | |
export async function free_models() { | |
let res = await api.fetchApi(`/free`, { | |
method: 'POST', | |
headers: { 'Content-Type': 'application/json' }, | |
body: '{}' | |
}); | |
if(res.status == 200) { | |
app.ui.dialog.show('Models have been unloaded.') | |
} | |
else { | |
app.ui.dialog.show('Unloading of models failed.<BR><BR>Installed ComfyUI may be an outdated version.') | |
} | |
app.ui.dialog.element.style.zIndex = 10010; | |
} | |
export function show_message(msg) { | |
app.ui.dialog.show(msg); | |
app.ui.dialog.element.style.zIndex = 10010; | |
} |