Spaces:
Runtime error
Runtime error
const appStartTime = performance.now(); | |
async function preloadImages() { | |
const dark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches; | |
const imagePromises = []; | |
const num = Math.floor(10 * Math.random()); | |
const imageUrls = [ | |
`file=html/logo-bg-${dark ? 'dark' : 'light'}.jpg`, | |
`file=html/logo-bg-${num}.jpg`, | |
]; | |
for (const url of imageUrls) { | |
const img = new Image(); | |
const promise = new Promise((resolve, reject) => { | |
img.onload = resolve; | |
img.onerror = reject; | |
}); | |
img.src = url; | |
imagePromises.push(promise); | |
} | |
try { | |
await Promise.all(imagePromises); | |
} catch (error) { | |
console.error('Error preloading images:', error); | |
} | |
} | |
async function createSplash() { | |
const dark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches; | |
log('createSplash', { theme: dark ? 'dark' : 'light' }); | |
const num = Math.floor(11 * Math.random()); | |
const splash = ` | |
<div id="splash" class="splash" style="background: ${dark ? 'black' : 'white'}"> | |
<div class="loading"><div class="loader"></div></div> | |
<div id="motd" class="motd""></div> | |
</div>`; | |
document.body.insertAdjacentHTML('beforeend', splash); | |
await preloadImages(); | |
const imgEl = `<div id="spash-img" class="splash-img" alt="logo" style="background-image: url(file=html/logo-bg-${dark ? 'dark' : 'light'}.jpg), url(file=html/logo-bg-${num}.jpg); background-blend-mode: ${dark ? 'multiply' : 'lighten'}"></div>`; | |
document.getElementById('splash').insertAdjacentHTML('afterbegin', imgEl); | |
fetch('/sdapi/v1/motd') | |
.then((res) => res.text()) | |
.then((text) => { | |
const motdEl = document.getElementById('motd'); | |
if (motdEl) motdEl.innerHTML = text.replace(/["]+/g, ''); | |
}) | |
.catch((err) => console.error('getMOTD:', err)); | |
} | |
async function removeSplash() { | |
const splash = document.getElementById('splash'); | |
if (splash) splash.remove(); | |
log('removeSplash'); | |
log('startupTime', Math.round(performance.now() - appStartTime) / 1000); | |
} | |
window.onload = createSplash; | |