import { config } from "../config.js";
import { getJSONData } from "./utilities.js";

var currentStatus = [];

function checkServersStatus(client) {
  const data = getJSONData("src/static/gameservers-list.json");
  const newStatus = data.servers.map((server) => server.active);

  if (JSON.stringify(newStatus) === JSON.stringify(currentStatus)) {
    return;
  }

  updateMessage(client, data);
  currentStatus = newStatus;
  return true;
}

function updateMessage(client, data) {
  var newMessage = `Hello 😺 ! Voila les serveurs de jeux qu'on a chez nous :\n\n`;

  data.servers.forEach((server) => {
    newMessage =
      newMessage +
      "```ansi\n" +
      `${server.game} : ` +
      `${server.active ? "[2;32mOnline[0m" : "[2;31mOffline[0m"}\n` +
      `${server.address}\n` +
      "```";
  });

  newMessage =
    newMessage +
    "\nAh d'ailleurs ! Si le serveur est sécurisé, le mot de passe c'est surement **0117**.";
  newMessage =
    newMessage +
    `\nPour mettre en ligne un serveur, faut voir avec <@${config.shinuwaUserId}> , c'est lui qui gère ca !\n`;

  const channel = client.channels.cache.get(config.textChannelId);

  channel.messages
    .fetch(config.gameServersMessageId)
    .then((message) => {
      message
        .edit(newMessage)
        .then(
          console.log(
            `[${new Date().toLocaleString()}] showGameServers: Game servers message updated`
          )
        )
        .catch(console.error);
    })
    .catch(console.error);
}

function showGameServers(client) {
  const data = getJSONData("src/static/gameservers-list.json");
  currentStatus = data.servers.map((server) => server.active);

  updateMessage(client, data);
  setInterval(checkServersStatus, 120000, client);
}

export { showGameServers };
