import * as wmill from "https://deno.land/x/windmill@v1.25.0/mod.ts";

const MAX_LOOKBACK = 100

export async function main(mentions: string[]) {
  console.log(wmill.getInternalStatePath());
  let lastState = await wmill.getInternalState();
  console.log(`lastState: ${lastState}`);

  let maxItem = await getMaxItem();
  console.log(`maxItem: ${maxItem}`);

  if (!lastState) {
    console.log(`First run of trigger, looking back to MAX_LOOKBACK (100) elements`);
    lastState = maxItem - MAX_LOOKBACK;
  }

  maxItem = Math.min(maxItem, lastState + MAX_LOOKBACK)

  const items = [];
  for (let i = lastState; i < maxItem; i++) {
    console.log(`fetching id: ${i}`);
    const item = await getItem(i)
    if (mentions.find((mention) => item.text?.includes(mention))) {
      items.push(item);
    }
  }
  await wmill.setInternalState(maxItem);

  return items;
}

export async function getMaxItem() {
  const res = await fetch("https://hacker-news.firebaseio.com/v0/maxitem.json");
  return Number(await res.text());
}

export async function getItem(id: number) {
  const res = await fetch(
    `https://hacker-news.firebaseio.com/v0/item/${id}.json`,
  );
  return res.json();
}