override fun onCreate()

in azure-communication-ui/calling/src/main/java/com/azure/android/communication/ui/calling/presentation/CallCompositeActivity.kt [95:180]


    override fun onCreate(savedInstanceState: Bundle?) {
        // Before super, we'll set up the DI injector and check the PiP state
        try {
            diContainerHolder.instanceId = instanceId
            diContainerHolder.container.callCompositeActivityWeakReference = WeakReference(this)
        } catch (invalidIDException: CallCompositeException) {
            super.onCreate(savedInstanceState)
            finish() // Container has vanished (probably due to process death); we cannot continue
            return
        }

        store.dispatch(DeviceConfigurationAction.ToggleTabletMode(isTablet(this)))
        store.dispatch(
            DeviceConfigurationAction.TogglePortraitMode(
                resources.configuration.orientation == Configuration.ORIENTATION_PORTRAIT
            )
        )

        val listeningPair = Pair(lifecycleScope, store)
        visibilityStatusFlow = MutableStateFlow(store.getCurrentState().visibilityState.status)

        super.onCreate(savedInstanceState)
        syncPipMode()
        // Inflate everything else
        volumeControlStream = AudioManager.STREAM_VOICE_CALL

        window.addFlags(
            WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED or
                WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON or
                WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
        )
        configureLocalization()
        setStatusBarColor()
        setNavigationBarColor()

        configuration.themeConfig?.let {
            theme.applyStyle(it, true)
        }
        updatableOptionsManager.start()
        setContentView(R.layout.azure_communication_ui_calling_activity_call_composite)

        permissionManager.start(
            this,
            getAudioPermissionLauncher(),
            getCameraPermissionLauncher(),
            lifecycleScope
        )

        audioSessionManager.onCreate(savedInstanceState)

        lifecycleScope.launchWhenStarted {
            navigationRouter.getNavigationStateFlow().collect { onNavigationStateChange(it) }
        }

        lifecycleScope.launchAll(
            navigationRouter::start,
            audioFocusManager::start,
            audioModeManager::start,
            errorHandler::start,
            remoteParticipantJoinedHandler::start,
            { container.accessibilityManager.start(this) },
            {
                supportView.start(supportViewModel, this@CallCompositeActivity)
            },
            {
                visibilityStatusFlow.collect {
                    if (it == VisibilityStatus.HIDE_REQUESTED) {
                        hide()
                        store.dispatch(PipAction.HideEntered())
                    }
                }
            }
        )

        // Probably can follow the above pattern now with function declarations
        multitaskingManager.start(lifecycleScope)
        notificationService.start(lifecycleScope, instanceId)
        callHistoryService.start(lifecycleScope)
        callStateHandler.start(lifecycleScope)
        captionsDataManager.start(lifecycleScope)

        listeningPair.collect {
            supportViewModel.update(it.navigationState)
            visibilityStatusFlow.value = it.visibilityState.status
        }
    }