electron-vite-app/src/main/lib/Toast.ts
2026-01-26 15:36:00 +01:00

51 lines
1.4 KiB
TypeScript

import { BrowserWindow } from 'electron';
export type ToastType = 'default' | 'info' | 'success' | 'warning' | 'error';
export interface Toast {
type: 'toast';
payload: {
toastType: ToastType;
message: string;
options?: {
duration?: number;
[key: string]: any;
};
};
}
let toastTarget: BrowserWindow | null = null;
export function registerToastTarget(win: BrowserWindow) {
toastTarget = win;
}
function sendToast(toastType: ToastType, message: string, options?: object): void {
if (!toastTarget) {
console.warn('No target window registered for toasts.');
return;
}
let optionsJSON;
if (options) {
optionsJSON = JSON.stringify(options);
}
toastTarget.webContents.send('toast', {
type: 'toast',
payload: { toastType, message, optionsJSON },
});
}
export function showToast(message: string, options?: object): void {
return sendToast('default', message, options)
}
export function showInformationToast(message: string, options?: object): void {
return sendToast('info', message, options)
}
export function showSuccessToast(message: string, options?: object): void {
return sendToast('success', message, options)
}
export function showWarningToast(message: string, options?: object): void {
return sendToast('warning', message, options)
}
export function showErrorToast(message: string, options?: object): void {
return sendToast('error', message, options)
}