From ad19a800ce72bdf64724daa3b5cc4f55d07f38c0 Mon Sep 17 00:00:00 2001 From: Cohee <18619528+Cohee1207@users.noreply.github.com> Date: Mon, 30 Dec 2024 00:25:35 +0200 Subject: [PATCH] Fix getting VAEs for SD forge --- src/endpoints/stable-diffusion.js | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/endpoints/stable-diffusion.js b/src/endpoints/stable-diffusion.js index e8340c564..694cbf843 100644 --- a/src/endpoints/stable-diffusion.js +++ b/src/endpoints/stable-diffusion.js @@ -105,22 +105,26 @@ router.post('/upscalers', jsonParser, async (request, response) => { router.post('/vaes', jsonParser, async (request, response) => { try { - const url = new URL(request.body.url); - url.pathname = '/sdapi/v1/sd-vae'; + const autoUrl = urlJoin(request.body.url, '/sdapi/v1/sd-vae'); + const forgeUrl = urlJoin(request.body.url, '/sdapi/v1/sd-modules'); - const result = await fetch(url, { + const requestInit = { method: 'GET', headers: { 'Authorization': getBasicAuthHeader(request.body.auth), }, - }); + }; + const results = await Promise.allSettled([ + fetch(autoUrl, requestInit).then(r => r.ok ? r.json() : Promise.reject(r.statusText)), + fetch(forgeUrl, requestInit).then(r => r.ok ? r.json() : Promise.reject(r.statusText)), + ]); - if (!result.ok) { + const data = results.find(r => r.status === 'fulfilled')?.value; + + if (!Array.isArray(data)) { throw new Error('SD WebUI returned an error.'); } - /** @type {any} */ - const data = await result.json(); const names = data.map(x => x.model_name); return response.send(names); } catch (error) {