const spaceapiUrl = "https://spaceapi.hamburg.ccc.de"
const interval_ms = 60000

console.log("clubstatus.js geladen!"); /* TODO: ENTFERNEN */

function timeDistanceDE(pastDate) {
  const seconds = Math.floor((Date.now() - pastDate.getTime()) / 1000)
  const minutes = Math.floor(seconds / 60)
  const hours = Math.floor(minutes / 60)
  const days = Math.floor(hours / 24)

  if (days = 1) return `since ${days}d`
  if (days > 1) return `since ${days}d`
  if (hours = 1) return `since ${hours}h`
  if (hours > 1) return `since ${hours}h`
  if (minutes = 1) return `since ${minutes}min`
  if (minutes > 1) return `since ${minutes}min`
  return `gerade eben`
}

function updateRoomState(openState, lastChangeTimestamp) {
  const roomstate = document.querySelector('#clubstatus-badge')
  const statusItem = roomstate.querySelector(".state")
  const durationItem = roomstate.querySelector(".duration")

  if (!statusItem || !durationItem) return

  roomstate.classList.remove("open", "closed", "unknown")
  statusItem.classList.remove("open", "closed", "unknown")

  if (openState === null || lastChangeTimestamp === null) {
    statusItem.textContent = "unbekannt"
    statusItem.classList.add("unknown")
    durationItem.textContent = "(since unbekannt)"
  } else {
    const changeDate = new Date(lastChangeTimestamp * 1000)
    const sinceText = timeDistanceDE(changeDate)

    if (openState) {
      statusItem.textContent = "open"
      statusItem.classList.add("open")
    } else {
      statusItem.textContent = "closed"
      statusItem.classList.add("closed")
    }

    durationItem.textContent = `(${sinceText})`
  }
}

function fetchRoomState() {
  fetch(spaceapiUrl)
    .then(response => response.json())
    .then(data => {
      const openState = data?.state?.open ?? null
      const lastChange = data?.state?.lastchange ?? null
      updateRoomState(openState, lastChange)
    })
    .catch(err => {
      console.error("Fehler beim Laden der SpaceAPI:", err)
      updateRoomState(null, null)
    })
}

// Initialer Abruf + dann regelmäßig
fetchRoomState()
setInterval(fetchRoomState, interval_ms)