import { Lisio } from "../lisio";
import LisioMessageManager from "../managers/lisio-message-manager";
import LisioTextTreeWalker from "../walkers/lisio-text-tree-walker";
import LisioAdapter from "./lisio-adapter";

/**
 * Class representing a book page adapter extending an adapter.\
 * It aims to represents the font style functionality of Lisio.\
 * A book page adapter is basically a functionality of Lisio which will change the book page of texts in the main page.\
 */
class LisioBookPageAdapter extends LisioAdapter<boolean> {
  private _bookPageUrlOrigin = "";

  private _lisio;

  constructor(isBookPage: boolean, lisio: Lisio) {
    super();
    const tmpOriginPageUrl = isBookPage
      ? window.location.search
          ?.split("&")
          ?.find((search) => search.startsWith("url="))
          ?.split("=")[1]
      : "";
    if (tmpOriginPageUrl != undefined) {
      this._bookPageUrlOrigin = tmpOriginPageUrl;
    }
    this._lisio = lisio;
  }

  /**
   * Public method implementing abstract method adapt of Adapter
   * @param {LisioTextTreeWalker} walker - A walker to explore the DOM
   * @param {string} value - Value of the functionality
   * @returns Returns nothing
   * @source
   */
  public adapt(_: LisioTextTreeWalker, value: boolean): void {
    if (LisioMessageManager.current != undefined) {
      if (value) {
        /* empty */
      } else {
        this._lisio.newTab(this._bookPageUrlOrigin, false, "");
      }
    }
  }

  // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function
  protected adaptFunction(_element: HTMLElement, _value: boolean): void {}
}

export default LisioBookPageAdapter;
