import refreshTokenHelper from "../../../utils/refreshTokenHelper" import forceLogoutHelper from "../../../utils/forceLogoutHelper" import errorHandlingHelper from "../../../utils/errorHandlingHelper" import { flushOutbox } from "../../../utils/listings/outbox" import { eventFetch } from "../../../utils/listings/listingStore" // SIS "Send now": flush the listing outbox immediately (optionally one order // source). Runs with the caller's token so UpdatedBy on the rows is the user. // Bounded to 25 s so the request stays well under nginx's 60 s; whatever is // left is picked up by the timer (server/plugins/listing-outbox-flush.ts). const handleFunc = async (event: any, authToken: any = null) => { const token = authToken ?? await getTokenHelper(event) const body = await readBody(event).catch(() => ({})) const orderSourceId = Number(body?.orderSourceId) || undefined const summary = await flushOutbox({ orderSourceId, trigger: 'manual', fetch: eventFetch(event, token), maxRunMs: 25_000 }) return { status: 200, ...summary } } export default defineEventHandler(async (event) => { let data: any = {} try { data = await handleFunc(event) } catch (err: any) { if (err?.isAmazonError) return errorHandlingHelper(err?.data ?? err, err?.data ?? err) try { const authToken: any = await refreshTokenHelper(event) data = await handleFunc(event, authToken) } catch (error: any) { data = errorHandlingHelper(err?.data ?? err, error?.data ?? error) forceLogoutHelper(event, data) } } return data })