@@ -5,15 +5,18 @@ import androidx.compose.foundation.layout.padding
55import androidx.compose.foundation.rememberScrollState
66import androidx.compose.foundation.verticalScroll
77import androidx.compose.runtime.Composable
8+ import androidx.compose.runtime.LaunchedEffect
89import androidx.compose.runtime.getValue
910import androidx.compose.ui.Modifier
1011import androidx.compose.ui.platform.testTag
1112import androidx.compose.ui.res.stringResource
1213import androidx.compose.ui.tooling.preview.Preview
1314import androidx.compose.ui.unit.dp
15+ import androidx.hilt.navigation.compose.hiltViewModel
1416import androidx.lifecycle.compose.collectAsStateWithLifecycle
1517import androidx.navigation.NavController
1618import to.bitkit.R
19+ import to.bitkit.models.Language
1720import to.bitkit.models.PrimaryDisplay
1821import to.bitkit.models.TransactionSpeed
1922import to.bitkit.models.transactionSpeedUiText
@@ -22,6 +25,7 @@ import to.bitkit.ui.components.settings.SettingsButtonRow
2225import to.bitkit.ui.components.settings.SettingsButtonValue
2326import to.bitkit.ui.navigateToDefaultUnitSettings
2427import to.bitkit.ui.navigateToHome
28+ import to.bitkit.ui.navigateToLanguageSettings
2529import to.bitkit.ui.navigateToLocalCurrencySettings
2630import to.bitkit.ui.navigateToQuickPaySettings
2731import to.bitkit.ui.navigateToTagsSettings
@@ -32,16 +36,21 @@ import to.bitkit.ui.scaffold.CloseNavIcon
3236import to.bitkit.ui.scaffold.ScreenColumn
3337import to.bitkit.ui.settingsViewModel
3438import to.bitkit.ui.theme.AppThemeSurface
39+ import to.bitkit.viewmodels.LanguageViewModel
3540
3641@Composable
3742fun GeneralSettingsScreen (
3843 navController : NavController ,
44+ languageViewModel : LanguageViewModel = hiltViewModel(),
3945) {
4046 val settings = settingsViewModel ? : return
4147 val currencies = LocalCurrencies .current
4248 val defaultTransactionSpeed by settings.defaultTransactionSpeed.collectAsStateWithLifecycle()
4349 val lastUsedTags by settings.lastUsedTags.collectAsStateWithLifecycle()
4450 val quickPayIntroSeen by settings.quickPayIntroSeen.collectAsStateWithLifecycle()
51+ val languageUiState by languageViewModel.uiState.collectAsStateWithLifecycle()
52+
53+ LaunchedEffect (Unit ) { languageViewModel.fetchLanguageInfo() }
4554
4655 GeneralSettingsContent (
4756 selectedCurrency = currencies.selectedCurrency,
@@ -56,6 +65,8 @@ fun GeneralSettingsScreen(
5665 onWidgetsClick = { navController.navigateToWidgetsSettings() },
5766 onQuickPayClick = { navController.navigateToQuickPaySettings(quickPayIntroSeen) },
5867 onTagsClick = { navController.navigateToTagsSettings() },
68+ onLanguageSettingsClick = { navController.navigateToLanguageSettings() },
69+ selectedLanguage = languageUiState.selectedLanguage.displayName
5970 )
6071}
6172
@@ -65,13 +76,15 @@ private fun GeneralSettingsContent(
6576 primaryDisplay : PrimaryDisplay ,
6677 defaultTransactionSpeed : TransactionSpeed ,
6778 showTagsButton : Boolean = false,
79+ selectedLanguage : String ,
6880 onBackClick : () -> Unit = {},
6981 onCloseClick : () -> Unit = {},
7082 onLocalCurrencyClick : () -> Unit = {},
7183 onDefaultUnitClick : () -> Unit = {},
7284 onTransactionSpeedClick : () -> Unit = {},
7385 onWidgetsClick : () -> Unit = {},
7486 onQuickPayClick : () -> Unit = {},
87+ onLanguageSettingsClick : () -> Unit = {},
7588 onTagsClick : () -> Unit = {},
7689) {
7790 ScreenColumn {
@@ -85,6 +98,12 @@ private fun GeneralSettingsContent(
8598 .padding(horizontal = 16 .dp)
8699 .verticalScroll(rememberScrollState())
87100 ) {
101+ SettingsButtonRow (
102+ title = " Language" ,
103+ value = SettingsButtonValue .StringValue (selectedLanguage),
104+ onClick = onLanguageSettingsClick,
105+ modifier = Modifier .testTag(" LanguageSettings" )
106+ )
88107 SettingsButtonRow (
89108 title = stringResource(R .string.settings__general__currency_local),
90109 value = SettingsButtonValue .StringValue (selectedCurrency),
@@ -138,6 +157,7 @@ private fun Preview() {
138157 primaryDisplay = PrimaryDisplay .BITCOIN ,
139158 defaultTransactionSpeed = TransactionSpeed .Medium ,
140159 showTagsButton = true ,
160+ selectedLanguage = Language .SYSTEM_DEFAULT .displayName
141161 )
142162 }
143163}
0 commit comments