import { ueuse } from "../../../types/types";
import { Reply } from "../main.js";
import config from "../../../config";
import { readFileSync, writeFileSync, existsSync } from "fs";
import { request } from "express";

// 初期化
const initialFile = {};
if (!existsSync("data/miqPermissions.json")) {
  writeFileSync(
    "data/miqPermissions.json",
    JSON.stringify(initialFile),
    "utf-8"
  );
}

export type Permission =
"consent" |
"everyone" |
"me";

const PermissionsNames: { [name: string]: string } = {
  "consent": "許可制",
  "everyone": "全体公開",
  "me": "自身のみ",
}

export default async function MiQPermission(data: ueuse) {
  if (!config.miq) {
    await Reply(`
    BOT管理者によってMake it a quoteが無効化されています。
    そのため\`/miq\`はご利用いただけません。
    `, data.uniqid);
    return;
  }

  const permissions: { [user: string]: string } =
  JSON.parse(readFileSync("data/miqPermissions.json", "utf-8"));

  // 初期化
  if (permissions[data.account.userid] === undefined) {
    permissions[data.account.userid] = "consent";
    writeFileSync(
      "data/miqPermissions.json",
      JSON.stringify(permissions),
      "utf-8"
    );
  }

  if (
    data.abi === "" ||
    data.abi === "none"
  ) {
    await Reply(`
    あなたに対してのMake it a Quoteを生成するための権限は「${PermissionsNames[permissions[data.account.userid]]}」です。
    `, data.uniqid);
    return;
  }

  const requestPermission = data.abi.trimEnd();

  if (PermissionsNames[requestPermission] === undefined) {
    await Reply(`
    変更希望の権限「${requestPermission}」はご指定できません。
    \`consent\`、\`everyone\`、\`me\`のいずれかからご選択ください。
    `, data.uniqid);
    return;
  }

  permissions[data.account.userid] = requestPermission;
  writeFileSync(
    "data/miqPermissions.json",
    JSON.stringify(permissions),
    "utf-8"
  );
  await Reply(`
  あなたに対してのMake it a Quoteを生成するための権限を「${PermissionsNames[requestPermission]}」に変更しました。
  `, data.uniqid);
}
