Move the stringresource setup out of the Activity

This commit is contained in:
Vitor Pamplona
2025-04-01 19:13:35 -04:00
parent 834efe02bc
commit d288010a83
2 changed files with 16 additions and 5 deletions
@@ -70,6 +70,8 @@ class MainActivity : AppCompatActivity() {
Log.d("Lifetime Event", "MainActivity.onCreate")
setContent {
StringResSetup()
val sharedPreferencesViewModel = prepareSharedViewModel()
AmethystTheme(sharedPreferencesViewModel) {
val accountStateViewModel: AccountStateViewModel = viewModel()
@@ -87,11 +89,6 @@ class MainActivity : AppCompatActivity() {
override fun onResume() {
super.onResume()
val locales = this.applicationContext.resources.configuration.locales
if (!locales.isEmpty) {
checkLanguage(locales.get(0).language)
}
Log.d("Lifetime Event", "MainActivity.onResume")
// starts muted every time
@@ -25,6 +25,7 @@ import android.util.LruCache
import androidx.compose.runtime.Composable
import androidx.compose.ui.platform.LocalConfiguration
import androidx.compose.ui.res.stringResource
import androidx.lifecycle.compose.LifecycleResumeEffect
/**
* Cache for stringResource because it seems to be > 1ms function in some phones
@@ -43,6 +44,19 @@ fun checkLanguage(currentLanguage: String) {
}
}
@Composable
fun StringResSetup() {
val config = LocalConfiguration.current
if (!config.locales.isEmpty) {
val language = config.locales.get(0).language
LifecycleResumeEffect(language) {
checkLanguage(language)
onPauseOrDispose { }
}
}
}
@Composable
fun stringRes(id: Int): String = resourceCache.get(id) ?: stringResource(id).also { resourceCache.put(id, it) }