/**
 * @mergeTarget
 * @module Src/Messages/Received/Handlers
 */

import { InputManager } from "../../managers/input-manager";
import { MessageManager } from "../../managers/message-manager";
import { ScreenManager } from "../../managers/screen-manager";
import { ManagementScreen } from "../../render/screens/management/management-screen";
import { ScreenNames } from "../../render/screens/screen-types";

/**
 * Handler for received message {@link Src/Messages/Received.ReceivedMessageNames.DISABLE | DISABLE}.\
 * This function disable all changes and send message {@link Src/Messages/Sent.SentMessageNames.DISABLE_ALL | DISABLE_ALL} to client script
 * @async
 * @param {MessageManager} this - Context of {@link Src/Managers.MessageManager | MessageManager}
 * @param {string} _ - Additional datas sent by client script
 * @returns Returns a promise containing nothing
 * @source
 */
async function disableHandler(this: MessageManager, _: string): Promise<void> {
  InputManager.current.toggleIsActiveInput(false, true);
  ScreenManager.current.changeScreen(ScreenNames[ManagementScreen.name]);
  // this.sendDisableAllMessage();
  // if (this.bookPage) {
  //   this.urlOrigin = decodeURIComponent(
  //     decodeURIComponent(window.location.href.split(/&url=/g)[1]),
  //   );
  //   window.parent.postMessage(
  //     {
  //       type: "util",
  //       util: "newTab",
  //       values: "urlOrigin",
  //     },
  //     "*",
  //   );
  // }
}

export { disableHandler };
