This commit is contained in:
@@ -831,6 +831,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||||||
? `Varianten fuer ${form.querySelector(`[data-avatar-component-tab="${activeField}"]`)?.textContent?.trim() || 'diesen Bereich'}`
|
? `Varianten fuer ${form.querySelector(`[data-avatar-component-tab="${activeField}"]`)?.textContent?.trim() || 'diesen Bereich'}`
|
||||||
: 'Varianten werden geladen';
|
: 'Varianten werden geladen';
|
||||||
setAvatarLoaderState(form, true, 0, images.length, label);
|
setAvatarLoaderState(form, true, 0, images.length, label);
|
||||||
|
const loadRunId = `${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
||||||
|
|
||||||
images.forEach((image) => {
|
images.forEach((image) => {
|
||||||
const field = image.getAttribute('data-avatar-option-field') || '';
|
const field = image.getAttribute('data-avatar-option-field') || '';
|
||||||
@@ -843,6 +844,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const src = `${avatarEndpoint}?${params.toString()}`;
|
const src = `${avatarEndpoint}?${params.toString()}`;
|
||||||
|
image.dataset.avatarLoadRun = loadRunId;
|
||||||
if (image.dataset.avatarLoadedSrc === src) {
|
if (image.dataset.avatarLoadedSrc === src) {
|
||||||
loaded += 1;
|
loaded += 1;
|
||||||
setAvatarLoaderState(form, true, loaded, images.length, label);
|
setAvatarLoaderState(form, true, loaded, images.length, label);
|
||||||
@@ -852,8 +854,10 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const preload = new Image();
|
let finished = false;
|
||||||
const finalize = () => {
|
const finalize = () => {
|
||||||
|
if (finished || image.dataset.avatarLoadRun !== loadRunId) return;
|
||||||
|
finished = true;
|
||||||
loaded += 1;
|
loaded += 1;
|
||||||
setAvatarLoaderState(form, true, loaded, images.length, label);
|
setAvatarLoaderState(form, true, loaded, images.length, label);
|
||||||
if (loaded >= images.length) {
|
if (loaded >= images.length) {
|
||||||
@@ -861,13 +865,20 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
preload.onload = () => {
|
const timeoutId = window.setTimeout(() => {
|
||||||
image.src = src;
|
finalize();
|
||||||
|
}, 2500);
|
||||||
|
|
||||||
|
image.onload = () => {
|
||||||
|
window.clearTimeout(timeoutId);
|
||||||
image.dataset.avatarLoadedSrc = src;
|
image.dataset.avatarLoadedSrc = src;
|
||||||
finalize();
|
finalize();
|
||||||
};
|
};
|
||||||
preload.onerror = finalize;
|
image.onerror = () => {
|
||||||
preload.src = src;
|
window.clearTimeout(timeoutId);
|
||||||
|
finalize();
|
||||||
|
};
|
||||||
|
image.src = src;
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user