// Devs: Replace this with the name of your hyperware package
const APP_PATH = '/loginex:login-example:sortugdev.os';
// Devs: Replace this with the name of your app
const APP_NAME = "Moomdeck";
document.addEventListener("DOMContentLoaded", checkAuth);


async function checkAuth() {
  const res = await call_app({ CheckCookie: null });
  const j = await res.json();
  console.log({j})
  if (j) {
    const button = document.getElementById('login-button');
    button.innerText = "Logout"
    document.getElementById('form').addEventListener('submit', logout);
  } else {
    document.getElementById('form').addEventListener('submit', login);
  }
}
async function call_app(body) {
  return await fetch(APP_PATH + "/hypr-login", {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    body: JSON.stringify(body),
  });
}
const logout = async (e) => {
  e.preventDefault();
  await call_app({Logout: null});
  window.location.reload();
}
const login = (e) => {
  e.preventDefault();
  const body = {
    Sign: null
  };
  send(body)
};
document.getElementById('login-button').innerText += ` ${APP_NAME}`;
const errorDiv = document.getElementById("error-div");
async function send(body) {
  try {
    const res = await call_app(body);
    let j = await res.json();
    console.log("signature...?", j);
    if ("error" in j) errorDiv += j.error;
    else redirect();
  } catch (e) {
    console.log(`${e}`)
  }
}

async function redirect() {
  window.location.replace(APP_PATH);
}





if ('serviceWorker' in navigator) {
  navigator.serviceWorker.register(APP_PATH + '/sw.js')
    .then(registration => {
      console.log('Service Worker registered with scope:', registration.scope);
    })
    .catch(error => {
      console.error('Service Worker registration failed:', error);
    });
}
