68 lines
2.0 KiB
JavaScript
68 lines
2.0 KiB
JavaScript
// notify-channel-service.js
|
|
import { VuexyNotifyService } from './vuexy/vuexy-notify';
|
|
import { ToastifyDriver } from './drivers/toastify-driver';
|
|
import { NotyfDriver } from './drivers/notyf-driver';
|
|
import { ToastrDriver } from './drivers/toastr-driver';
|
|
import { VuexyDriver } from './drivers/vuexy-driver';
|
|
|
|
const NotifyChannelService = {
|
|
async notify({ channel = 'toastr', ...payload }) {
|
|
switch (channel) {
|
|
case 'toastr':
|
|
ToastrDriver.notify(payload);
|
|
break;
|
|
|
|
case 'notyf':
|
|
NotyfDriver.notify(payload);
|
|
break;
|
|
|
|
case 'toastify':
|
|
ToastifyDriver.notify(payload);
|
|
break;
|
|
|
|
case 'sweetalert': {
|
|
const { SweetAlertDriver } = await import('./drivers/sweetalert-driver');
|
|
SweetAlertDriver.notify(payload);
|
|
break;
|
|
}
|
|
|
|
case 'vuexy':
|
|
VuexyDriver.notify(payload);
|
|
break;
|
|
|
|
case 'custom':
|
|
if (typeof window.VuexyNotify === 'function') {
|
|
window.VuexyNotify(payload);
|
|
}
|
|
break;
|
|
|
|
default:
|
|
console.warn(`[Notify] Canal desconocido: ${channel}`);
|
|
break;
|
|
}
|
|
},
|
|
fromLocalStorage() {
|
|
const data = localStorage.getItem('vuexy_notification');
|
|
|
|
if (data) {
|
|
try {
|
|
const payload = JSON.parse(data);
|
|
NotifyChannelService.notify(payload);
|
|
localStorage.removeItem('vuexy_notification');
|
|
} catch (e) {
|
|
console.error('❌ Error parseando notificación de storage', e);
|
|
}
|
|
}
|
|
},
|
|
fromSession() {
|
|
if (window.vuexySessionNotification) {
|
|
NotifyChannelService.notify(window.vuexySessionNotification);
|
|
window.vuexySessionNotification = null;
|
|
}
|
|
}
|
|
};
|
|
|
|
export { NotifyChannelService };
|
|
|
|
window.vuexyNotify = VuexyNotifyService;
|