Files
cmr-mini/miniprogram/utils/backendLaunchAdapter.ts

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,
}
}