Update locale on configuration change

This commit is contained in:
Sad Ellie 2023-10-09 13:25:34 +03:00
parent f0ea9472b3
commit 4938958cad

View File

@ -25,10 +25,10 @@ import android.util.AttributeSet
import android.view.View import android.view.View
import androidx.activity.compose.setContent import androidx.activity.compose.setContent
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDelegate
import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.ui.platform.LocalConfiguration import androidx.compose.ui.platform.LocalConfiguration
import androidx.core.os.ConfigurationCompat
import androidx.core.view.WindowCompat import androidx.core.view.WindowCompat
import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.sadellie.unitto.core.ui.LocalLocale import com.sadellie.unitto.core.ui.LocalLocale
@ -50,13 +50,12 @@ internal class MainActivity : AppCompatActivity() {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setContent { setContent {
val configuration = LocalConfiguration.current
val prefs = userPrefsRepository.appPrefs val prefs = userPrefsRepository.appPrefs
.collectAsStateWithLifecycle(null).value .collectAsStateWithLifecycle(null).value
val locale = remember(LocalConfiguration.current) {
val tag: String = AppCompatDelegate val locale = remember(configuration) {
.getApplicationLocales() ConfigurationCompat.getLocales(configuration).get(0) ?: Locale.getDefault()
.toLanguageTags()
if (tag.isEmpty()) Locale.getDefault() else Locale.forLanguageTag(tag)
} }
val numbersTypography = remember(prefs?.systemFont) { val numbersTypography = remember(prefs?.systemFont) {