import { type GameLaunchEnvelope } from './gameLaunch' import { type BackendLaunchResult } from './backendApi' export function adaptBackendLaunchResultToEnvelope(result: BackendLaunchResult): GameLaunchEnvelope { const launchVariantRouteCode = result.launch.variant ? (result.launch.variant.routeCode || null) : null return { config: { configUrl: result.launch.config.configUrl, configLabel: result.launch.config.configLabel, configChecksumSha256: result.launch.config.configChecksumSha256 || null, releaseId: result.launch.config.releaseId, routeCode: result.launch.config.routeCode || null, }, business: { source: result.launch.business.source === 'direct-event' ? 'direct-event' : 'custom', eventId: result.launch.business.eventId, sessionId: result.launch.business.sessionId, sessionToken: result.launch.business.sessionToken, sessionTokenExpiresAt: result.launch.business.sessionTokenExpiresAt, }, resolvedRelease: result.launch.resolvedRelease ? { launchMode: result.launch.resolvedRelease.launchMode || null, source: result.launch.resolvedRelease.source || null, eventId: result.launch.resolvedRelease.eventId || null, releaseId: result.launch.resolvedRelease.releaseId || null, configLabel: result.launch.resolvedRelease.configLabel || null, manifestUrl: result.launch.resolvedRelease.manifestUrl || null, manifestChecksumSha256: result.launch.resolvedRelease.manifestChecksumSha256 || null, routeCode: result.launch.resolvedRelease.routeCode || null, } : null, variant: result.launch.variant ? { variantId: result.launch.variant.id, variantName: result.launch.variant.name, routeCode: result.launch.variant.routeCode || result.launch.config.routeCode || result.launch.business.routeCode || null, assignmentMode: result.launch.variant.assignmentMode || null, } : (result.launch.config.routeCode || result.launch.business.routeCode) ? { routeCode: result.launch.config.routeCode || result.launch.business.routeCode || null, } : null, runtime: result.launch.runtime ? { runtimeBindingId: result.launch.runtime.runtimeBindingId || null, placeId: result.launch.runtime.placeId || null, placeName: result.launch.runtime.placeName || null, mapId: result.launch.runtime.mapId || null, mapName: result.launch.runtime.mapName || null, tileReleaseId: result.launch.runtime.tileReleaseId || null, courseSetId: result.launch.runtime.courseSetId || null, courseVariantId: result.launch.runtime.courseVariantId || null, routeCode: result.launch.runtime.routeCode || launchVariantRouteCode || result.launch.config.routeCode || result.launch.business.routeCode || null, } : null, presentation: result.launch.presentation ? { presentationId: result.launch.presentation.presentationId || null, templateKey: result.launch.presentation.templateKey || null, version: result.launch.presentation.version || null, } : null, contentBundle: result.launch.contentBundle ? { bundleId: result.launch.contentBundle.bundleId || null, bundleType: result.launch.contentBundle.bundleType || null, version: result.launch.contentBundle.version || null, } : null, } }