faction-member-avail

faction member availability

// ==UserScript==
// @name         faction-member-avail
// @namespace    faction-member-avail.zero.nao
// @version      0.1
// @description  faction member availability
// @author       nao [2669774]
// @match        https://www.torn.com/factions.php*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=torn.com
// @grant        none

// ==/UserScript==

let api = "APIKEY";

let member_list = [];

function getMembers() {
  const url = `https://api.torn.com/v2/faction?key=${api}&selections=members`;
  const response = fetch(url)
    .then((res) => res.json())
    .then((data) => {
      console.log("Got member data");
      analyse(data);
    });
}

function analyse(data) {
  member_list = [];
  for (const member of data.members) {
    const member_id = member.id;
    const is_flying =
      member.status.state == "Traveling" || member.status.state == "Abroad";
    const is_in_oc = member.is_in_oc;
    const online = member.last_action.status == "Online";

    console.log(member_id, is_flying, is_in_oc, online);
    if (!is_flying && !is_in_oc && online) {
      member_list.push(String(member_id));
    }
  }
  console.log(member_list);
  updateDisplay();
}

function updateDisplay() {
  $(".table-body > li ").each(function () {
    const member_id =
      $("a[href*='XID=']", this)?.attr("href")?.split("XID=")[1] || undefined;
    console.log(member_id);
    if (member_id && member_list.includes(String(member_id))) {
      $(this).css("background-color", "red");
    }
  });
}

if (window.location.href.includes("profile")) {
  getMembers();
}
$(document).on("hashchange", function () {
  if (window.location.href.includes("tab=info")) {
    getMembers();
  }
});