document.addEventListener("DOMContentLoaded", (event) => {
  let pageHref: string = null;
  let filledThisHref = false;
  let delayFillTimeout: number;

  const activeUserIdKey = "activeUserId";
  let activeUserId: string;

  chrome.storage.local.get(activeUserIdKey, (obj: any) => {
    if (obj == null || obj[activeUserIdKey] == null) {
      return;
    }
    activeUserId = obj[activeUserIdKey];
  });

  chrome.storage.local.get(activeUserId, (obj: any) => {
    if (obj?.[activeUserId]?.settings?.enableAutoFillOnPageLoad === true) {
      setInterval(() => doFillIfNeeded(), 500);
    }
  });
  chrome.runtime.onMessage.addListener((msg, sender, sendResponse) => {
    if (msg.command === "fillForm" && pageHref === msg.url) {
      filledThisHref = true;
    }
  });

  function doFillIfNeeded(force = false) {
    if (force || pageHref !== window.location.href) {
      if (!force) {
        // Some websites are slow and rendering all page content. Try to fill again later
        // if we haven't already.
        filledThisHref = false;
        if (delayFillTimeout != null) {
          window.clearTimeout(delayFillTimeout);
        }
        delayFillTimeout = window.setTimeout(() => {
          if (!filledThisHref) {
            doFillIfNeeded(true);
          }
        }, 1500);
      }

      pageHref = window.location.href;
      const msg: any = {
        command: "bgCollectPageDetails",
        sender: "autofiller",
      };

      chrome.runtime.sendMessage(msg);
    }
  }
});
