function getUrlParams(hash, start) {
  const hashes = hash.slice(hash.indexOf(start) + 1).split("&");

  if (!hashes || hashes.length === 0 || hashes[0] === "") {
    return undefined;
  }

  const params = {};
  hashes.map((hash) => {
    const [key, val] = hash.split("=");
    params[key] = decodeURIComponent(val);
  });
  return params;
}

function handleImplicitGrant() {
  const params = getUrlParams(window.location.hash, "#");
  if (!params) {
    return;
  }
  params.request_type = "token";

  console.log("Sent request_type token to server", params);
  fetch("?" + new URLSearchParams(params).toString(), {
    method: "POST",
  });
}
handleImplicitGrant();

function handleAuthenticationCode() {
  const params = getUrlParams(window.location.search, "?");
  if (!params) {
    return;
  }
  params.request_type = "code";

  console.log("Sent request_type code to server", params);
  fetch("?" + new URLSearchParams(params).toString(), {
    method: "POST",
  });
}
handleAuthenticationCode();

document.addEventListener("DOMContentLoaded", () => {
  const errorContainer = document.querySelector("#error");
  const successContainer = document.querySelector("#success");
  const params = new URLSearchParams(window.location.search);

  if (params.has("error")) {
    errorContainer.classList.remove("hidden");
  } else {
    successContainer.classList.remove("hidden");
  }
});