override fun onCreate()

in app/src/main/java/com/amazonaws/ivs/player/ecommerce/ui/MainActivity.kt [53:159]


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        binding.storeButton.setOnClickListener {
            if (isNormalOrMetadataState) {
                val endState = when (anchorType) {
                    AnchorType.TOP_LEFT -> if (isNormalState) R.id.state_normal_to_streams_top_left else
                        R.id.state_metadata_to_streams_top_left
                    AnchorType.TOP_RIGHT -> if (isNormalState) R.id.state_normal_to_streams_top_right else
                        R.id.state_metadata_to_streams_top_right
                    AnchorType.BOTTOM_LEFT -> if (isNormalState) R.id.state_normal_to_streams_bottom_left else
                        R.id.state_metadata_to_streams_bottom_left
                    AnchorType.BOTTOM_RIGHT -> if (isNormalState) R.id.state_normal_to_streams_bottom_right else
                        R.id.state_metadata_to_streams_bottom_right
                }
                binding.motionLayout.setTransition(endState)
                binding.motionLayout.transitionToEnd()
            }
        }
        binding.playerView.setOnClickListener {
            if (touchOffset != null) return@setOnClickListener
            when (binding.motionLayout.currentState) {
                R.id.state_normal -> {
                    Timber.d("Transition to normal tapped")
                    binding.motionLayout.setTransition(R.id.state_normal_to_tapped)
                    binding.motionLayout.transitionToEnd()
                }
                R.id.state_metadata -> {
                    Timber.d("Transition to metadata tapped")
                    binding.motionLayout.setTransition(R.id.state_metadata_to_tapped)
                    binding.motionLayout.transitionToEnd()
                }
                R.id.state_tapped_normal -> {
                    Timber.d("Transition to normal")
                    binding.motionLayout.setTransition(R.id.state_tapped_to_normal)
                    binding.motionLayout.transitionToEnd()
                }
                R.id.state_tapped_metadata -> {
                    Timber.d("Transition to metadata")
                    binding.motionLayout.setTransition(R.id.state_tapped_to_metadata)
                    binding.motionLayout.transitionToEnd()
                }
                R.id.state_streams_bottom_right,
                R.id.state_streams_bottom_left,
                R.id.state_streams_top_right,
                R.id.state_streams_top_left -> restorePlayerView()
            }
        }
        binding.motionLayout.setTransitionListener(object : TransitionAdapter() {
            override fun onTransitionCompleted(motionLayout: MotionLayout?, currentId: Int) {
                super.onTransitionCompleted(motionLayout, currentId)
                resizePlayer()
            }

            override fun onTransitionChange(motionLayout: MotionLayout?, startId: Int, endId: Int, progress: Float) {
                super.onTransitionChange(motionLayout, startId, endId, progress)
                if (endId == R.id.state_normal || endId == R.id.state_metadata) resizePlayer()
            }
        })

        binding.productAdd.setOnClickListener { /* Ignored */ }
        binding.productBuy.setOnClickListener { /* Ignored */ }
        binding.productList.adapter = adapter
        binding.player.onReady {
            viewModel.initPlayer(binding.player)
        }

        launchUI {
            viewModel.products.collect { products ->
                adapter.products = products
                var endId = if (isTappedState) R.id.state_tapped_normal else R.id.state_normal
                var transitionId = if (isTappedState) R.id.state_tapped_metadata_to_normal else R.id.state_metadata_to_normal
                var selectedProduct = viewModel.hasProductToSelect
                products.firstOrNull { it.isSelected }?.let { product ->
                    binding.product = product
                    selectedProduct = true
                }
                if (selectedProduct) {
                    endId = if (isTappedState) R.id.state_tapped_metadata else R.id.state_metadata
                    transitionId = if (isTappedState) R.id.state_tapped_normal_to_metadata else R.id.state_normal_to_metadata
                }
                if (binding.motionLayout.currentState != endId && !isTransitioning && (isNormalOrMetadataState || isTappedState)) {
                    Timber.d("Transitioning to metadata: ${endId == R.id.state_metadata || endId == R.id.state_tapped_metadata}")
                    binding.motionLayout.setTransition(transitionId)
                    binding.motionLayout.transitionToEnd()
                }
            }
        }
        launchUI {
            viewModel.onLoading.collect { isLoading ->
                binding.playerLoading.animateAlpha(if (isLoading) ALPHA_VISIBLE else ALPHA_GONE)
                binding.player.animateAlpha(if (isLoading) ALPHA_GONE else ALPHA_VISIBLE)
            }
        }
        launchUI {
            viewModel.onSizeChanged.collect { size ->
                binding.player.zoomToFit(size)
            }
        }
        launchUI {
            viewModel.onError.collect { error ->
                binding.root.showSnackBar(error.message)
            }
        }
    }