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

import { LisioBooleanParameterNames } from "@lisio/lisio-profils";
import { UserController } from "../../controllers/user-controller";
import { MessageManager } from "../../managers/message-manager";
import { ScreenManager } from "../../managers/screen-manager";

/**
 * Handler for received message {@link Src/Messages/Received.ReceivedMessageNames.SHORTCUT_TO | SHORTCUT_TO}.\
 * This function gather if client script successfuly adapt client website and send this for save in user controller
 * @async
 * @param {MessageManager} this - Context of {@link Src/Managers.MessageManager | MessageManager}
 * @param {string} datas - Additional datas sent by client script.\
 *  Datas contains :\
 *  <pre>
 *  {
 *    screenName: string
 *    eventDetail: number, 0 if not from a click and 1 if from a click
 *  }</pre>
 * @returns Returns a promise containing nothing
 * @source
 */
async function shortcutToHandler(
  this: MessageManager,
  datas: string,
): Promise<void> {
  const parsedDatas: { screenName: string; eventDetail: Number } =
    JSON.parse(datas);
  if (
    UserController.current.currentUser != undefined &&
    !UserController.current.currentUser.customParameters.has(
      LisioBooleanParameterNames.IS_ACTIVE,
    )
  ) {
    parsedDatas.screenName = "management-screen";
  }
  ScreenManager.current.changeScreen(
    parsedDatas.screenName,
    parsedDatas.eventDetail,
  );
}

export { shortcutToHandler };
