/* global Whisper, i18n */

// eslint-disable-next-line func-names
(function() {
  'use strict';

  window.Whisper = window.Whisper || {};

  Whisper.ConfirmationDialogView = Whisper.View.extend({
    className: 'confirmation-dialog modal',
    templateName: 'confirmation-dialog',
    initialize(options) {
      this.message = options.message;
      this.hideCancel = options.hideCancel;

      this.resolve = options.resolve;
      this.okText = options.okText || i18n('ok');

      this.reject = options.reject;
      this.cancelText = options.cancelText || i18n('cancel');

      this.title = options.title;

      this.render();
    },
    events: {
      keyup: 'onKeyup',
      'click .ok': 'ok',
      'click .cancel': 'cancel',
    },
    render_attributes() {
      return {
        message: this.message,
        showCancel: !this.hideCancel,
        cancel: this.cancelText,
        ok: this.okText,
        title: this.title,
      };
    },
    ok() {
      this.remove();
      if (this.resolve) {
        this.resolve();
      }
    },
    cancel() {
      this.remove();
      if (this.reject) {
        this.reject();
      }
    },
    onKeyup(event) {
      if (event.key === 'Escape' || event.key === 'Esc') {
        this.cancel();
      }
    },
    focusCancel() {
      this.$('.cancel').focus();
    },
  });
})();
