package com.suno.android import android.content.Context import android.content.Intent import android.net.Uri import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge import androidx.activity.viewModels import com.lokalise.sdk.LokaliseContextWrapper import com.suno.android.captcha.CaptchaManager import com.suno.android.common_analytics.managers.AnalyticsManager import com.suno.android.push.BrazeManager import com.suno.android.push.PushNotificationManager import com.suno.android.ui.screens.root.RootNavGraph import dagger.hilt.android.AndroidEntryPoint import javax.inject.Inject @AndroidEntryPoint class MainActivity : ComponentActivity() { private val mainActivityVM: MainActivityVM by viewModels() @Inject lateinit var brazeManager: BrazeManager @Inject lateinit var captchaManager: CaptchaManager @Inject lateinit var pushNotificationManager: PushNotificationManager @Inject lateinit var analyticsManager: AnalyticsManager override fun attachBaseContext( newBase: Context, ) { super.attachBaseContext(LokaliseContextWrapper.wrap(newBase)) } override fun onCreate( savedInstanceState: Bundle?, ) { super.onCreate(savedInstanceState) enableEdgeToEdge() setContent { RootNavGraph( onReadyToLoadBraze = { brazeManager.openSession(this@MainActivity) }, analyticsManager = analyticsManager, ) } captchaManager.setActivityContext(this) handleIntent(intent) mainActivityVM.initializeMMP() } override fun onDestroy() { super.onDestroy() captchaManager.resetActivityContext() brazeManager.closeSession(this@MainActivity) } override fun onNewIntent( intent: Intent, ) { super.onNewIntent(intent) handleIntent(intent) } private fun handleIntent( intent: Intent?, ) { intent?.let { mainActivityVM.handlePushNotificationIntent( intent = intent, ) } intent?.data?.let { uri: Uri -> mainActivityVM.processDeepLinkUri( uri = uri, ) } } }