import { NotificationRequest } from '@ucap-webmessenger/native';

export class NotificationService {
  notificationPermission: NotificationPermission;

  constructor() {
    this.notificationPermission = this.isSupported() ? 'default' : 'denied';
  }

  public isSupported(): boolean {
    return 'Notification' in window;
  }

  requestPermission(): void {
    const self = this;
    if ('Notification' in window) {
      Notification.requestPermission().then(result => {
        self.notificationPermission = result;
      });
    }
  }

  notify(noti: NotificationRequest, click?: () => void) {
    if (!this.isSupported()) {
      return;
    }
    const notification = new Notification(noti.title, {
      body: noti.contents,
      icon: noti.image || 'assets/images/img_nophoto_50.png',
    });
    notification.onclick = e => {
      console.log('notification.onclick');
      if (!!click) {
        click();
      }
    };
    notification.onclose = e => {
      console.log('notification.onclose');
    };
    notification.onerror = e => {
      console.log('notification.onerror');
    };
  }
}
