bitwarden-android/app/src/main/java/com/x8bit/bitwarden/MainActivity.kt

62 lines
2.2 KiB
Kotlin
Raw Normal View History

2023-08-23 00:03:42 +03:00
package com.x8bit.bitwarden
import android.content.Intent
2023-08-23 00:03:42 +03:00
import android.os.Bundle
import androidx.activity.compose.setContent
import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDelegate
import androidx.compose.runtime.getValue
import androidx.core.os.LocaleListCompat
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.x8bit.bitwarden.data.platform.repository.SettingsRepository
import com.x8bit.bitwarden.ui.platform.feature.rootnav.RootNavScreen
import com.x8bit.bitwarden.ui.platform.theme.BitwardenTheme
2023-08-23 00:03:42 +03:00
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject
2023-08-23 00:03:42 +03:00
/**
* Primary entry point for the application.
*/
@AndroidEntryPoint
class MainActivity : AppCompatActivity() {
private val mainViewModel: MainViewModel by viewModels()
@Inject
lateinit var settingsRepository: SettingsRepository
2023-08-23 00:03:42 +03:00
override fun onCreate(savedInstanceState: Bundle?) {
var shouldShowSplashScreen = true
installSplashScreen().setKeepOnScreenCondition { shouldShowSplashScreen }
2023-08-23 00:03:42 +03:00
super.onCreate(savedInstanceState)
// Within the app the language will change dynamically and will be managed
// by the OS, but we need to ensure we properly set the language when
// upgrading from older versions that handle this differently.
settingsRepository.appLanguage.localeName?.let { localeName ->
val localeList = LocaleListCompat.forLanguageTags(localeName)
AppCompatDelegate.setApplicationLocales(localeList)
}
setContent {
val state by mainViewModel.stateFlow.collectAsStateWithLifecycle()
BitwardenTheme(
theme = state.theme,
) {
RootNavScreen(
onSplashScreenRemoved = { shouldShowSplashScreen = false },
)
}
}
2023-08-23 00:03:42 +03:00
}
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
mainViewModel.trySendAction(
action = MainAction.ReceiveNewIntent(
intent = intent,
),
)
}
2023-08-23 00:03:42 +03:00
}