/**
 * GET /api/mobile/app-versions — archived releases for the admin "Versionsverlauf" (re-install an
 * older build). Entries: { versionName, versionCode, releaseDate, releaseNotes, apkUrl, sha256?, size? }.
 * Session → server-side channel with absolute signed URLs; no session → legacy www.logyou.de
 * history.json (relative apkUrl) while MOBILE_APP_LEGACY_FALLBACK is on. Fail-soft: [] on any error.
 */
import { readHistory, readManifest, historyWithSignedUrls, legacyFallbackEnabled, isServiceTokenRequest } from '../../utils/mobileReleases'

const LEGACY_URL = 'https://www.logyou.de/logship/history.json'

export default defineEventHandler(async (event) => {
  setHeader(event, 'Cache-Control', 'no-store')
  const token = await getTokenHelper(event)
  const authed = !!token || isServiceTokenRequest(event)

  if (authed && readManifest()) {
    try {
      return historyWithSignedUrls(readHistory())
    } catch (err: any) {
      console.error('[app-versions] cannot sign download urls:', err?.message || err)
      return []
    }
  }
  if (!legacyFallbackEnabled()) {
    if (!authed) setResponseStatus(event, 401)
    return []
  }
  try {
    const response = await fetch(LEGACY_URL, { cache: 'no-store' } as any)
    if (response.status === 404) return []
    if (!response.ok) throw new Error(`Failed to fetch history: ${response.status}`)
    const data = await response.json()
    return Array.isArray(data) ? data : []
  } catch (error: any) {
    console.error('Error fetching app version history:', error)
    return []
  }
})
