51 lines
1.4 KiB
TypeScript
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)
|
|
} |