44 lines
1.5 KiB
JavaScript
44 lines
1.5 KiB
JavaScript
if (!window._toastMagicBound) {
|
|
window._toastQueue = [];
|
|
window._toastProcessing = false;
|
|
|
|
const processToastQueue = () => {
|
|
if (window._toastQueue.length === 0) {
|
|
window._toastProcessing = false;
|
|
return;
|
|
}
|
|
|
|
const toast = window._toastQueue.shift();
|
|
|
|
const { status, title, message, showCloseBtn, customBtnText, customBtnLink } = toast;
|
|
|
|
if (typeof toastMagic[status] === 'function') {
|
|
toastMagic[status](title, message, showCloseBtn, customBtnText, customBtnLink);
|
|
} else {
|
|
console.warn(`Unknown toast status: ${status}, defaulting to success.`);
|
|
toastMagic.success(title, message);
|
|
}
|
|
|
|
setTimeout(processToastQueue, 1000); // Wait 500ms before processing next
|
|
};
|
|
|
|
window.addEventListener('toastMagic', event => {
|
|
const detail = event.detail || {};
|
|
const status = detail.status ?? 'success';
|
|
const title = detail.title ?? 'Success!';
|
|
const message = detail.message ?? 'Your data has been saved!';
|
|
const showCloseBtn = detail?.options?.showCloseBtn ?? false;
|
|
const customBtnText = detail?.options?.customBtnText ?? '';
|
|
const customBtnLink = detail?.options?.customBtnLink ?? 'javascript:';
|
|
|
|
window._toastQueue.push({ status, title, message, showCloseBtn, customBtnText, customBtnLink });
|
|
|
|
if (!window._toastProcessing) {
|
|
window._toastProcessing = true;
|
|
processToastQueue();
|
|
}
|
|
});
|
|
|
|
window._toastMagicBound = true;
|
|
}
|