import LisioTranslationController from "../../controllers/lisio-translation-controller";
import { Lisio } from "../../lisio";
import {
  convertTabstoHide,
  domainFromUrl,
  lisioGetInitLang,
} from "../../utils";
import LisioLightMessageManager from "../lisio-light-message-manager";

function lisioInitFrontMessageHandler(this: Lisio, datas: string) {
  const parsedDatas: { adaptation: boolean; isConfigured: boolean } =
    JSON.parse(datas);
  const initLang = lisioGetInitLang();
  if (!this.isBookPage && !this.isReadingMode) {
    this.setDefault(false, false);
    this.textTreeWalker.resetWalker();
    this.textTreeWalker.getTextes();
  }
  const dataHide = convertTabstoHide(this.lisioConfig.userSettings.tabsToHide);
  const originDomain =
    (this.isBookPage
      ? domainFromUrl(
          decodeURIComponent(
            decodeURIComponent(window.location.href.split(/&url=/g)[1]),
          ),
        )
      : window.location.origin) + "/";

  LisioTranslationController.current.loadTranslationFile(initLang).then(() => {
    this.popin?.refreshLabel(parsedDatas.adaptation, parsedDatas.isConfigured);
    this.setDisableBand(parsedDatas.adaptation);
    if (this.popin != undefined) {
      LisioLightMessageManager.current.sendInitBackMessage(
        this.popin.shortcutoTo,
        this.popin.eventShortcutTo,
        dataHide,
        originDomain,
        this.lisioConfig,
        this.popin.name,
      );
    }
  });
}

export { lisioInitFrontMessageHandler };
