backendLaunchAdapter.ts 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import { type GameLaunchEnvelope } from './gameLaunch'
  2. import { type BackendLaunchResult } from './backendApi'
  3. export function adaptBackendLaunchResultToEnvelope(result: BackendLaunchResult): GameLaunchEnvelope {
  4. const launchVariantRouteCode = result.launch.variant
  5. ? (result.launch.variant.routeCode || null)
  6. : null
  7. return {
  8. config: {
  9. configUrl: result.launch.config.configUrl,
  10. configLabel: result.launch.config.configLabel,
  11. configChecksumSha256: result.launch.config.configChecksumSha256 || null,
  12. releaseId: result.launch.config.releaseId,
  13. routeCode: result.launch.config.routeCode || null,
  14. },
  15. business: {
  16. source: result.launch.business.source === 'direct-event' ? 'direct-event' : 'custom',
  17. eventId: result.launch.business.eventId,
  18. sessionId: result.launch.business.sessionId,
  19. sessionToken: result.launch.business.sessionToken,
  20. sessionTokenExpiresAt: result.launch.business.sessionTokenExpiresAt,
  21. },
  22. variant: result.launch.variant
  23. ? {
  24. variantId: result.launch.variant.id,
  25. variantName: result.launch.variant.name,
  26. routeCode: result.launch.variant.routeCode || result.launch.config.routeCode || result.launch.business.routeCode || null,
  27. assignmentMode: result.launch.variant.assignmentMode || null,
  28. }
  29. : (result.launch.config.routeCode || result.launch.business.routeCode)
  30. ? {
  31. routeCode: result.launch.config.routeCode || result.launch.business.routeCode || null,
  32. }
  33. : null,
  34. runtime: result.launch.runtime
  35. ? {
  36. runtimeBindingId: result.launch.runtime.runtimeBindingId || null,
  37. placeId: result.launch.runtime.placeId || null,
  38. placeName: result.launch.runtime.placeName || null,
  39. mapId: result.launch.runtime.mapId || null,
  40. mapName: result.launch.runtime.mapName || null,
  41. tileReleaseId: result.launch.runtime.tileReleaseId || null,
  42. courseSetId: result.launch.runtime.courseSetId || null,
  43. courseVariantId: result.launch.runtime.courseVariantId || null,
  44. routeCode: result.launch.runtime.routeCode || launchVariantRouteCode || result.launch.config.routeCode || result.launch.business.routeCode || null,
  45. }
  46. : null,
  47. presentation: result.launch.presentation
  48. ? {
  49. presentationId: result.launch.presentation.presentationId || null,
  50. templateKey: result.launch.presentation.templateKey || null,
  51. version: result.launch.presentation.version || null,
  52. }
  53. : null,
  54. contentBundle: result.launch.contentBundle
  55. ? {
  56. bundleId: result.launch.contentBundle.bundleId || null,
  57. bundleType: result.launch.contentBundle.bundleType || null,
  58. version: result.launch.contentBundle.version || null,
  59. }
  60. : null,
  61. }
  62. }