77 lines
3.4 KiB
TypeScript
77 lines
3.4 KiB
TypeScript
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,
|
|
}
|
|
}
|