/**
 * modal confirmation management
 */
window.modalConfirmation = (function () {
  const modal = $('#confirmation_modal');

  if (!modal) {
    throw new Error('Modal confirmation is not available');
  }

  let actionsCallbacks = {
    onCancel() {
      console.log('modal canceled');
    },
    onContinue() {
      console.log('modal continued');
    },
  };

  modal.find('button.cancel').on('click', () => {
    if (typeof actionsCallbacks.onCancel === 'function') {
      actionsCallbacks.onCancel();
    }
    modalConfirmation.hide();
  });

  modal.find('button.continue').on('click', () => {
    if (typeof actionsCallbacks.onContinue === 'function') {
      actionsCallbacks.onContinue();
    }
    modalConfirmation.hide();
  });
  return {
    init: function init() {},
    create: function create(content, title, callbacks) {
      if (title != null) {
        modal.find('.modal-title').html(title);
      }
      if (content != null) {
        modal.find('.modal-body').html(content);
      }

      actionsCallbacks = callbacks;
      return this;
    },
    show: function show() {
      modal.modal('show');
    },
    hide: function hide() {
      modal.modal('hide');
    },
  };
}());

BOEvent.on('Modal confirmation started', () => {
  modalConfirmation.init();
}, 'Back office');
