import { LisioBooleanParameterNames } from "@lisio/lisio-profils";

import { Lisio } from "../../lisio";
import LisioMessageManager from "../lisio-message-manager";

function lisioTransBannerPopupMessageHandler(this: Lisio, datas: string) {
  const {
    confirmationModalDescription,
    confirmationModalParameter,
    confirmationModalWidgetTriggererFocus,
  } = JSON.parse(datas) as {
    confirmationModalTitle: string;
    confirmationModalText: string;
    confirmationModalDescription: string;
    confirmationModalYesButton: string;
    confirmationModalNoButton: string;
    confirmationModalClose: string;
    confirmationModalParameter:
      | LisioBooleanParameterNames.BOOK_PAGE
      | LisioBooleanParameterNames.READING_MODE;
    confirmationModalWidgetTriggererFocus: string;
  };
  if (
    !this.isReadingMode &&
    !this.isBookPage &&
    window.localStorage.getItem("lisio_reading_mode") == undefined
  ) {
    this.confirmationModal.changeTexts(confirmationModalDescription);
    this.confirmationModal.setDataFocus(
      this.confirmationModal.buttonNo,
      confirmationModalWidgetTriggererFocus,
    );
    this.confirmationModal.setDataFocus(
      this.confirmationModal.closeButton!,
      confirmationModalWidgetTriggererFocus,
    );
    this.confirmationModal.attachEventListenerOnButtons(
      this.confirmationModal.buttonYes,
      "click",
      (event: Event) => {
        this.confirmationModal.yesHandler(
          event,
          this.widget,
          confirmationModalParameter,
        );
      },
    );

    this.confirmationModal.attachEventListenerOnButtons(
      this.confirmationModal.buttonNo,
      "click",
      (event: Event) => {
        this.confirmationModal.noHandler(
          event,
          this.widget,
          confirmationModalParameter,
        );
      },
    );
    if (__BUILD_TARGET__ === "extension") {
      LisioMessageManager.current.sendCloseExtensionPopup();
    }
    this.confirmationModal.openModal();
  }
}

export { lisioTransBannerPopupMessageHandler };
