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

import { UserController } from "../../controllers/user-controller";
import { MessageManager } from "../../managers/message-manager";

/**
 * Handler for received message  {@link Src/Messages/Received.ReceivedMessageNames.HIDE_POPIN | HIDE_POPIN}\
 * This function determine if popin has to be hidden and send his state for save using {@link Src/Controllers.UserController.setIsPopinHidden | UserController.setIsPopinHidden}
 * @async
 * @param {MessageManager} this - Context of {@link Src/Managers.MessageManager | MessageManager}
 * @param {string} datas - Additional datas sent by client script.\
 *  Datas contains :\
 *  <pre>
 *  {
 *    value: boolean
 *  }</pre>
 * @returns Returns a promise containing nothing
 * @source
 */
async function hidePopinHandler(
  this: MessageManager,
  datas: string,
): Promise<void> {
  const parsedDatas: { value: boolean } = JSON.parse(datas);
  UserController.current.setIsPopinHidden(parsedDatas.value);
}

export { hidePopinHandler };
