import { promisified } from './tauri' export interface Options { title: string body?: string icon?: string } export type PartialOptions = Omit export type Permission = 'granted' | 'denied' | 'default' async function isPermissionGranted(): Promise { if (window.Notification.permission !== 'default') { return await Promise.resolve(window.Notification.permission === 'granted') } return await promisified({ cmd: 'isNotificationPermissionGranted' }) } async function requestPermission(): Promise { return await window.Notification.requestPermission() } function sendNotification(options: Options | string): void { if (typeof options === 'string') { // eslint-disable-next-line no-new new window.Notification(options) } else { // eslint-disable-next-line no-new new window.Notification(options.title, options) } } export { sendNotification, requestPermission, isPermissionGranted }