// Active / coupe le lien public d'un portfolio (bouton « Partager un lien public »).
// - body { enabled: false } → coupe le partage (publicShare = false), sans
//   toucher au snapshot figé (réutilisé par le PDF).
// - sinon → (re)fige le contenu courant et active le partage. Re-cliquer
//   « republie » : l'instantané reflète l'état courant du portfolio.
import { getPortfolio, savePortfolio } from '../../../lib/portfolio-store'
import { freezeContent, sanitizeFileName } from '../../../lib/pdf-pipeline'

export default defineEventHandler(async (event) => {
  const id = getRouterParam(event, 'id') ?? ''
  const portfolio = await getPortfolio(id)
  if (!portfolio) {
    throw createError({ statusCode: 404, statusMessage: 'Portfolio introuvable' })
  }

  const body = await readBody<{ enabled?: boolean }>(event).catch(() => ({}))

  if (body?.enabled === false) {
    portfolio.publicShare = false
    // Renvoie le portfolio complet pour resynchroniser le client (évite qu'une
    // sauvegarde auto ultérieure ne réécrase publicShare/frozenContent).
    return await savePortfolio(portfolio)
  }

  // (Re)geler le contenu courant puis activer le partage
  const fileName = portfolio.frozenContent?.fileName || sanitizeFileName(portfolio.name)
  portfolio.frozenContent = await freezeContent(portfolio, fileName)
  portfolio.publicShare = true
  return await savePortfolio(portfolio)
})
