import { Grammar } from "./grammar.js";
import { ReglesOptionnelles } from "./settings/regles-optionnelles.js";

export class RdDConfirm {
  /* -------------------------------------------- */
  static confirmer(options, autresActions) {
    options.bypass = options.bypass || !(options.settingConfirmer == undefined || ReglesOptionnelles.isUsing(options.settingConfirmer));
    if (options.bypass) {
      options.onAction();
    }
    else {
      let buttons = {
        "action": RdDConfirm._createButtonAction(options),
        "cancel": RdDConfirm._createButtonCancel()
      };
      if (options.settingConfirmer) {
        buttons = mergeObject(RdDConfirm._createButtonActionSave(options), buttons);
      }
      if (autresActions) {
        buttons = mergeObject(autresActions, buttons);
      }
      const dialogDetails = {
        title: options.title,
        content: options.content,
        default: "cancel",
        buttons: buttons
      };
      new Dialog(dialogDetails, { width: 150 * Object.keys(buttons).length }).render(true);
    }
  }

  static _createButtonCancel() {
    return { icon: '<i class="fas fa-times"></i>', label: "Annuler" };
  }

  static _createButtonAction(options) {
    return {
      icon: '<i class="fas fa-check"></i>',
      label: options.buttonLabel,
      callback: () => options.onAction()
    };
  }

  static _createButtonActionSave(options) {
    return {
      "actionSave": {
        icon: '<i class="fas fa-user-check"></i>',
        label: options.buttonLabel + "<br>et ne plus demander",
        callback: () => {
          ReglesOptionnelles.set(options.settingConfirmer, false);
          options.onAction();
        }
      }
    };
  }
}