backendLaunchAdapter.ts 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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. resolvedRelease: result.launch.resolvedRelease
  23. ? {
  24. launchMode: result.launch.resolvedRelease.launchMode || null,
  25. source: result.launch.resolvedRelease.source || null,
  26. eventId: result.launch.resolvedRelease.eventId || null,
  27. releaseId: result.launch.resolvedRelease.releaseId || null,
  28. configLabel: result.launch.resolvedRelease.configLabel || null,
  29. manifestUrl: result.launch.resolvedRelease.manifestUrl || null,
  30. manifestChecksumSha256: result.launch.resolvedRelease.manifestChecksumSha256 || null,
  31. routeCode: result.launch.resolvedRelease.routeCode || null,
  32. }
  33. : null,
  34. variant: result.launch.variant
  35. ? {
  36. variantId: result.launch.variant.id,
  37. variantName: result.launch.variant.name,
  38. routeCode: result.launch.variant.routeCode || result.launch.config.routeCode || result.launch.business.routeCode || null,
  39. assignmentMode: result.launch.variant.assignmentMode || null,
  40. }
  41. : (result.launch.config.routeCode || result.launch.business.routeCode)
  42. ? {
  43. routeCode: result.launch.config.routeCode || result.launch.business.routeCode || null,
  44. }
  45. : null,
  46. runtime: result.launch.runtime
  47. ? {
  48. runtimeBindingId: result.launch.runtime.runtimeBindingId || null,
  49. placeId: result.launch.runtime.placeId || null,
  50. placeName: result.launch.runtime.placeName || null,
  51. mapId: result.launch.runtime.mapId || null,
  52. mapName: result.launch.runtime.mapName || null,
  53. tileReleaseId: result.launch.runtime.tileReleaseId || null,
  54. courseSetId: result.launch.runtime.courseSetId || null,
  55. courseVariantId: result.launch.runtime.courseVariantId || null,
  56. routeCode: result.launch.runtime.routeCode || launchVariantRouteCode || result.launch.config.routeCode || result.launch.business.routeCode || null,
  57. }
  58. : null,
  59. presentation: result.launch.presentation
  60. ? {
  61. presentationId: result.launch.presentation.presentationId || null,
  62. templateKey: result.launch.presentation.templateKey || null,
  63. version: result.launch.presentation.version || null,
  64. }
  65. : null,
  66. contentBundle: result.launch.contentBundle
  67. ? {
  68. bundleId: result.launch.contentBundle.bundleId || null,
  69. bundleType: result.launch.contentBundle.bundleType || null,
  70. version: result.launch.contentBundle.version || null,
  71. }
  72. : null,
  73. }
  74. }