/**
 * Shared bits of the Amazon Ads invoice routes (server/api/accounting/amazon-ads/*).
 */
import refreshTokenHelper from '../refreshTokenHelper'
import errorHandlingHelper from '../errorHandlingHelper'

/** Standard try → refresh → retry wrapper used by every route here. */
export const withRefresh = (handleFunc: (event: any, token?: string | null) => Promise<any>) =>
  defineEventHandler(async (event) => {
    let data: any = {}
    try {
      data = await handleFunc(event)
    } catch (err: any) {
      try {
        data = await handleFunc(event, await refreshTokenHelper(event))
      } catch (error: any) {
        data = errorHandlingHelper(err?.data ?? err, error?.data ?? error)
      }
    }
    return data
  })

export const orgIdOf = (event: any) => Number(getCookie(event, 'logship_organization_id') || 0)
export const userNameOf = (event: any) => {
  try { const u = JSON.parse(getCookie(event, 'logship_user') || 'null'); return u?.name || u?.Name || null } catch { return null }
}
