From 824c18910a00875a21f4db5e2ad7a8678f18b0f3 Mon Sep 17 00:00:00 2001 From: kapmaurya Date: Mon, 28 Apr 2025 20:47:00 +0530 Subject: [PATCH 1/4] cmp-migration settings --- .../main/kotlin/CMPFeatureConventionPlugin.kt | 4 +- .../kotlin/com/mifos/room/MifosDatabase.kt | 2 +- feature/settings/build.gradle.kts | 52 ++++++++++++------- .../{main => androidMain}/AndroidManifest.xml | 0 .../values/feature_settings_.xml | 0 .../composeResources}/values/strings.xml | 0 .../feature/settings/di/SettingsModule.kt | 0 .../settings/navigation/SettingsNavigation.kt | 0 .../settings/navigation/SettingsScreens.kt | 0 .../settings/settings/SettingsScreen.kt | 27 +--------- .../settings/settings/SettingsViewModel.kt | 25 ++++----- .../settings/syncSurvey/SyncSurveysDialog.kt | 0 .../syncSurvey/SyncSurveysDialogRepository.kt | 0 .../SyncSurveysDialogRepositoryImp.kt | 0 .../syncSurvey/SyncSurveysDialogUiState.kt | 0 .../syncSurvey/SyncSurveysDialogViewModel.kt | 0 .../updateServer/UpdateServerConfigEvent.kt | 0 .../updateServer/UpdateServerConfigScreen.kt | 0 .../UpdateServerConfigViewModel.kt | 0 gradle/libs.versions.toml | 4 ++ 20 files changed, 53 insertions(+), 61 deletions(-) rename feature/settings/src/{main => androidMain}/AndroidManifest.xml (100%) rename feature/settings/src/{main/res => commonMain/composeResources}/values/feature_settings_.xml (100%) rename feature/settings/src/{main/res => commonMain/composeResources}/values/strings.xml (100%) rename feature/settings/src/{main/java => commonMain/kotlin}/com/mifos/feature/settings/di/SettingsModule.kt (100%) rename feature/settings/src/{main/java => commonMain/kotlin}/com/mifos/feature/settings/navigation/SettingsNavigation.kt (100%) rename feature/settings/src/{main/java => commonMain/kotlin}/com/mifos/feature/settings/navigation/SettingsScreens.kt (100%) rename feature/settings/src/{main/java => commonMain/kotlin}/com/mifos/feature/settings/settings/SettingsScreen.kt (92%) rename feature/settings/src/{main/java => commonMain/kotlin}/com/mifos/feature/settings/settings/SettingsViewModel.kt (80%) rename feature/settings/src/{main/java => commonMain/kotlin}/com/mifos/feature/settings/syncSurvey/SyncSurveysDialog.kt (100%) rename feature/settings/src/{main/java => commonMain/kotlin}/com/mifos/feature/settings/syncSurvey/SyncSurveysDialogRepository.kt (100%) rename feature/settings/src/{main/java => commonMain/kotlin}/com/mifos/feature/settings/syncSurvey/SyncSurveysDialogRepositoryImp.kt (100%) rename feature/settings/src/{main/java => commonMain/kotlin}/com/mifos/feature/settings/syncSurvey/SyncSurveysDialogUiState.kt (100%) rename feature/settings/src/{main/java => commonMain/kotlin}/com/mifos/feature/settings/syncSurvey/SyncSurveysDialogViewModel.kt (100%) rename feature/settings/src/{main/java => commonMain/kotlin}/com/mifos/feature/settings/updateServer/UpdateServerConfigEvent.kt (100%) rename feature/settings/src/{main/java => commonMain/kotlin}/com/mifos/feature/settings/updateServer/UpdateServerConfigScreen.kt (100%) rename feature/settings/src/{main/java => commonMain/kotlin}/com/mifos/feature/settings/updateServer/UpdateServerConfigViewModel.kt (100%) diff --git a/build-logic/convention/src/main/kotlin/CMPFeatureConventionPlugin.kt b/build-logic/convention/src/main/kotlin/CMPFeatureConventionPlugin.kt index f5f1eb5c95..b299ea0049 100644 --- a/build-logic/convention/src/main/kotlin/CMPFeatureConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/CMPFeatureConventionPlugin.kt @@ -17,8 +17,8 @@ class CMPFeatureConventionPlugin : Plugin { dependencies { add("commonMainImplementation", project(":core:ui")) add("commonMainImplementation", project(":core:designsystem")) - add("commonMainImplementation", project(":core:testing")) - add("commonMainImplementation", project(":core:data")) + //add("commonMainImplementation", project(":core:testing")) + // add("commonMainImplementation", project(":core:data")) add("commonMainImplementation", libs.findLibrary("koin.compose").get()) add("commonMainImplementation", libs.findLibrary("koin.compose.viewmodel").get()) diff --git a/core/database/src/androidMain/kotlin/com/mifos/room/MifosDatabase.kt b/core/database/src/androidMain/kotlin/com/mifos/room/MifosDatabase.kt index 3bc2642378..5effd45dd5 100644 --- a/core/database/src/androidMain/kotlin/com/mifos/room/MifosDatabase.kt +++ b/core/database/src/androidMain/kotlin/com/mifos/room/MifosDatabase.kt @@ -66,7 +66,7 @@ import com.mifos.room.entities.organisation.OfficeOpeningDateEntity import com.mifos.room.entities.organisation.StaffEntity import com.mifos.room.entities.survey.ComponentDatasEntity import com.mifos.room.entities.survey.QuestionDatasEntity -import com.mifos.room.entities.survey.ResponseDatasEntity +import com.mifos.room.entities.survey. ResponseDatasEntity import com.mifos.room.entities.survey.SurveyEntity import com.mifos.room.entities.templates.clients.ClientsTemplateEntity import com.mifos.room.entities.templates.clients.InterestTypeEntity diff --git a/feature/settings/build.gradle.kts b/feature/settings/build.gradle.kts index c974b8839a..235fe2fd7c 100644 --- a/feature/settings/build.gradle.kts +++ b/feature/settings/build.gradle.kts @@ -8,30 +8,42 @@ * See https://github.com/openMF/android-client/blob/master/LICENSE.md */ plugins { - alias(libs.plugins.mifos.android.feature) - alias(libs.plugins.mifos.android.library.compose) - alias(libs.plugins.mifos.android.library.jacoco) + alias(libs.plugins.mifos.cmp.feature) } android { namespace = "com.mifos.feature.settings" } -dependencies { - - implementation(projects.core.datastore) - implementation(projects.core.designsystem) - implementation(projects.core.domain) - implementation(projects.core.common) - implementation(projects.core.ui) - implementation(libs.appcompat) - - androidTestImplementation(libs.androidx.compose.ui.test) - debugApi(libs.androidx.compose.ui.test.manifest) - - testImplementation(libs.hilt.android.testing) - testImplementation(projects.core.testing) +//dependencies { +// +// implementation(projects.core.datastore) +// implementation(projects.core.designsystem) +// implementation(projects.core.domain) +// implementation(projects.core.common) +// implementation(projects.core.ui) +// implementation(libs.appcompat) +// +// androidTestImplementation(libs.androidx.compose.ui.test) +// debugApi(libs.androidx.compose.ui.test.manifest) +// +// testImplementation(libs.hilt.android.testing) +// testImplementation(projects.core.testing) +// +// androidTestImplementation(projects.core.testing) +// +//} - androidTestImplementation(projects.core.testing) - -} \ No newline at end of file +kotlin { + sourceSets { + commonMain.dependencies { + implementation(compose.material3) + implementation(compose.components.resources) + implementation(compose.ui) + } + } +} +dependencies { + implementation(libs.androidx.ui.android) + implementation(libs.material3.android) +} diff --git a/feature/settings/src/main/AndroidManifest.xml b/feature/settings/src/androidMain/AndroidManifest.xml similarity index 100% rename from feature/settings/src/main/AndroidManifest.xml rename to feature/settings/src/androidMain/AndroidManifest.xml diff --git a/feature/settings/src/main/res/values/feature_settings_.xml b/feature/settings/src/commonMain/composeResources/values/feature_settings_.xml similarity index 100% rename from feature/settings/src/main/res/values/feature_settings_.xml rename to feature/settings/src/commonMain/composeResources/values/feature_settings_.xml diff --git a/feature/settings/src/main/res/values/strings.xml b/feature/settings/src/commonMain/composeResources/values/strings.xml similarity index 100% rename from feature/settings/src/main/res/values/strings.xml rename to feature/settings/src/commonMain/composeResources/values/strings.xml diff --git a/feature/settings/src/main/java/com/mifos/feature/settings/di/SettingsModule.kt b/feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/di/SettingsModule.kt similarity index 100% rename from feature/settings/src/main/java/com/mifos/feature/settings/di/SettingsModule.kt rename to feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/di/SettingsModule.kt diff --git a/feature/settings/src/main/java/com/mifos/feature/settings/navigation/SettingsNavigation.kt b/feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/navigation/SettingsNavigation.kt similarity index 100% rename from feature/settings/src/main/java/com/mifos/feature/settings/navigation/SettingsNavigation.kt rename to feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/navigation/SettingsNavigation.kt diff --git a/feature/settings/src/main/java/com/mifos/feature/settings/navigation/SettingsScreens.kt b/feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/navigation/SettingsScreens.kt similarity index 100% rename from feature/settings/src/main/java/com/mifos/feature/settings/navigation/SettingsScreens.kt rename to feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/navigation/SettingsScreens.kt diff --git a/feature/settings/src/main/java/com/mifos/feature/settings/settings/SettingsScreen.kt b/feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/settings/SettingsScreen.kt similarity index 92% rename from feature/settings/src/main/java/com/mifos/feature/settings/settings/SettingsScreen.kt rename to feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/settings/SettingsScreen.kt index e410ddb472..a13acbd3cd 100644 --- a/feature/settings/src/main/java/com/mifos/feature/settings/settings/SettingsScreen.kt +++ b/feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/settings/SettingsScreen.kt @@ -56,6 +56,7 @@ import com.mifos.feature.settings.R import com.mifos.feature.settings.syncSurvey.SyncSurveysDialog import com.mifos.feature.settings.updateServer.UpdateServerConfigScreenRoute import org.koin.androidx.compose.koinViewModel +import org.koin.compose.viewmodel.koinViewModel @Composable internal fun SettingsScreen( @@ -265,17 +266,6 @@ private fun updateLanguageLocale(context: Context, language: String, isSystemLan "SettingsScreen", "updateLanguageLocale: $language" + context.packageName.toString() + isSystemLanguage, ) -// if (isSystemLanguage) { -// LanguageHelper.setLocale(context, language) -// } else { -// val systemLanguageCode = Locale.getDefault().language -// if (MifosAppLanguage.entries.find { it.code == systemLanguageCode } == null) { -// LanguageHelper.setLocale(context, MifosAppLanguage.ENGLISH.code) -// } else { -// LanguageHelper.setLocale(context, language) -// } -// } -} private fun showRestartCountdownToast(context: Context, seconds: Int) { val countDownTimer = object : CountDownTimer((seconds * 1000).toLong(), 1000) { @@ -304,18 +294,3 @@ private fun Context.restartApplication() { Runtime.getRuntime().exit(0) } -@Composable -@Preview(showSystemUi = true, showBackground = true) -private fun PreviewSettingsScreen() { - SettingsScreen( - onBackPressed = {}, - selectedLanguage = "", - selectedTheme = "", - baseURL = "", - tenant = "", - handleEndpointUpdate = { _, _ -> }, - updateLanguage = {}, - updateTheme = {}, - changePasscode = {}, - ) -} diff --git a/feature/settings/src/main/java/com/mifos/feature/settings/settings/SettingsViewModel.kt b/feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/settings/SettingsViewModel.kt similarity index 80% rename from feature/settings/src/main/java/com/mifos/feature/settings/settings/SettingsViewModel.kt rename to feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/settings/SettingsViewModel.kt index 9f24ebe162..9dd748b25b 100644 --- a/feature/settings/src/main/java/com/mifos/feature/settings/settings/SettingsViewModel.kt +++ b/feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/settings/SettingsViewModel.kt @@ -17,6 +17,7 @@ import com.mifos.core.datastore.UserPreferencesRepository import com.mifos.core.datastore.model.AppTheme import com.mifos.core.designsystem.icon.MifosIcons import com.mifos.feature.settings.R +import core.designsystem.generated.resources.Res import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.first @@ -73,33 +74,33 @@ enum class SettingsCardItem( val icon: ImageVector?, ) { SYNC_SURVEY( - title = R.string.feature_settings_sync_survey, - details = R.string.feature_settings_sync_survey_desc, + title = Res.string.feature_settings_sync_survey, + details = Res.string.feature_settings_sync_survey_desc, icon = null, ), LANGUAGE( - title = R.string.feature_settings_language, - details = R.string.feature_settings_language_desc, + title = Res.string.feature_settings_language, + details = Res.string.feature_settings_language_desc, icon = MifosIcons.Language, ), THEME( - title = R.string.feature_settings_theme, - details = R.string.feature_settings_theme_desc, + title = Res.string.feature_settings_theme, + details = Res.string.feature_settings_theme_desc, icon = MifosIcons.Theme, ), PASSCODE( - title = R.string.feature_settings_change_passcode, - details = R.string.feature_settings_change_passcode_desc, + title = Res.string.feature_settings_change_passcode, + details = Res.string.feature_settings_change_passcode_desc, icon = MifosIcons.Password, ), ENDPOINT( - title = R.string.feature_settings_instance_url, - details = R.string.feature_settings_instance_url_desc, + title = Res.string.feature_settings_instance_url, + details = Res.string.feature_settings_instance_url_desc, icon = null, ), SERVER_CONFIG( - title = R.string.feature_settings_server_config, - details = R.string.feature_settings_server_config_desc, + title = Res.string.feature_settings_server_config, + details = Res.string.feature_settings_server_config_desc, icon = null, ), } diff --git a/feature/settings/src/main/java/com/mifos/feature/settings/syncSurvey/SyncSurveysDialog.kt b/feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/syncSurvey/SyncSurveysDialog.kt similarity index 100% rename from feature/settings/src/main/java/com/mifos/feature/settings/syncSurvey/SyncSurveysDialog.kt rename to feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/syncSurvey/SyncSurveysDialog.kt diff --git a/feature/settings/src/main/java/com/mifos/feature/settings/syncSurvey/SyncSurveysDialogRepository.kt b/feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/syncSurvey/SyncSurveysDialogRepository.kt similarity index 100% rename from feature/settings/src/main/java/com/mifos/feature/settings/syncSurvey/SyncSurveysDialogRepository.kt rename to feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/syncSurvey/SyncSurveysDialogRepository.kt diff --git a/feature/settings/src/main/java/com/mifos/feature/settings/syncSurvey/SyncSurveysDialogRepositoryImp.kt b/feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/syncSurvey/SyncSurveysDialogRepositoryImp.kt similarity index 100% rename from feature/settings/src/main/java/com/mifos/feature/settings/syncSurvey/SyncSurveysDialogRepositoryImp.kt rename to feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/syncSurvey/SyncSurveysDialogRepositoryImp.kt diff --git a/feature/settings/src/main/java/com/mifos/feature/settings/syncSurvey/SyncSurveysDialogUiState.kt b/feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/syncSurvey/SyncSurveysDialogUiState.kt similarity index 100% rename from feature/settings/src/main/java/com/mifos/feature/settings/syncSurvey/SyncSurveysDialogUiState.kt rename to feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/syncSurvey/SyncSurveysDialogUiState.kt diff --git a/feature/settings/src/main/java/com/mifos/feature/settings/syncSurvey/SyncSurveysDialogViewModel.kt b/feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/syncSurvey/SyncSurveysDialogViewModel.kt similarity index 100% rename from feature/settings/src/main/java/com/mifos/feature/settings/syncSurvey/SyncSurveysDialogViewModel.kt rename to feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/syncSurvey/SyncSurveysDialogViewModel.kt diff --git a/feature/settings/src/main/java/com/mifos/feature/settings/updateServer/UpdateServerConfigEvent.kt b/feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/updateServer/UpdateServerConfigEvent.kt similarity index 100% rename from feature/settings/src/main/java/com/mifos/feature/settings/updateServer/UpdateServerConfigEvent.kt rename to feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/updateServer/UpdateServerConfigEvent.kt diff --git a/feature/settings/src/main/java/com/mifos/feature/settings/updateServer/UpdateServerConfigScreen.kt b/feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/updateServer/UpdateServerConfigScreen.kt similarity index 100% rename from feature/settings/src/main/java/com/mifos/feature/settings/updateServer/UpdateServerConfigScreen.kt rename to feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/updateServer/UpdateServerConfigScreen.kt diff --git a/feature/settings/src/main/java/com/mifos/feature/settings/updateServer/UpdateServerConfigViewModel.kt b/feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/updateServer/UpdateServerConfigViewModel.kt similarity index 100% rename from feature/settings/src/main/java/com/mifos/feature/settings/updateServer/UpdateServerConfigViewModel.kt rename to feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/updateServer/UpdateServerConfigViewModel.kt diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index b12926d162..9121c0b848 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -181,6 +181,8 @@ packageName = "AndroidClient" packageNamespace = "org.mifos.client.desktop" packageVersion = "1.0.0" material3Android = "1.3.1" +uiAndroid = "1.8.0" +material3AndroidVersion = "1.3.2" [libraries] @@ -542,6 +544,8 @@ moko-permission-compose = { group = "dev.icerock.moko", name = "permissions-comp window-size = { group = "dev.chrisbanes.material3", name = "material3-window-size-class-multiplatform", version.ref = "windowsSizeClass" } androidx-material3-android = { group = "androidx.compose.material3", name = "material3-android", version.ref = "material3Android" } +androidx-ui-android = { group = "androidx.compose.ui", name = "ui-android", version.ref = "uiAndroid" } +material3-android = { group = "androidx.compose.material3", name = "material3-android", version.ref = "material3AndroidVersion" } [plugins] From 8a4fa551b00fb24bbeb2aca04ba5ceecd33e40cf Mon Sep 17 00:00:00 2001 From: kapmaurya Date: Wed, 30 Apr 2025 09:58:44 +0530 Subject: [PATCH 2/4] cmp-migration settings --- .../kotlin/com/mifos/room/MifosDatabase.kt | 2 +- feature/settings/build.gradle.kts | 12 ++-- .../settings/settings/SettingsScreen.kt | 55 ++++++++++--------- .../settings/settings/SettingsViewModel.kt | 1 - 4 files changed, 38 insertions(+), 32 deletions(-) diff --git a/core/database/src/androidMain/kotlin/com/mifos/room/MifosDatabase.kt b/core/database/src/androidMain/kotlin/com/mifos/room/MifosDatabase.kt index 5effd45dd5..3bc2642378 100644 --- a/core/database/src/androidMain/kotlin/com/mifos/room/MifosDatabase.kt +++ b/core/database/src/androidMain/kotlin/com/mifos/room/MifosDatabase.kt @@ -66,7 +66,7 @@ import com.mifos.room.entities.organisation.OfficeOpeningDateEntity import com.mifos.room.entities.organisation.StaffEntity import com.mifos.room.entities.survey.ComponentDatasEntity import com.mifos.room.entities.survey.QuestionDatasEntity -import com.mifos.room.entities.survey. ResponseDatasEntity +import com.mifos.room.entities.survey.ResponseDatasEntity import com.mifos.room.entities.survey.SurveyEntity import com.mifos.room.entities.templates.clients.ClientsTemplateEntity import com.mifos.room.entities.templates.clients.InterestTypeEntity diff --git a/feature/settings/build.gradle.kts b/feature/settings/build.gradle.kts index 235fe2fd7c..189ab37f01 100644 --- a/feature/settings/build.gradle.kts +++ b/feature/settings/build.gradle.kts @@ -40,10 +40,14 @@ kotlin { implementation(compose.material3) implementation(compose.components.resources) implementation(compose.ui) + api(projects.core.common) + api(projects.core.model) + api(projects.core.network) + api(projects.core.datastore) + api(projects.core.designsystem) + //api(projects.core.domain) + } } } -dependencies { - implementation(libs.androidx.ui.android) - implementation(libs.material3.android) -} + diff --git a/feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/settings/SettingsScreen.kt b/feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/settings/SettingsScreen.kt index a13acbd3cd..fbccc6c92c 100644 --- a/feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/settings/SettingsScreen.kt +++ b/feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/settings/SettingsScreen.kt @@ -55,7 +55,9 @@ import com.mifos.core.designsystem.component.UpdateEndpointDialogScreen import com.mifos.feature.settings.R import com.mifos.feature.settings.syncSurvey.SyncSurveysDialog import com.mifos.feature.settings.updateServer.UpdateServerConfigScreenRoute -import org.koin.androidx.compose.koinViewModel +import core.designsystem.generated.resources.Res +import org.jetbrains.compose.resources.stringArrayResource +import org.jetbrains.compose.resources.stringResource import org.koin.compose.viewmodel.koinViewModel @Composable @@ -120,7 +122,7 @@ internal fun SettingsScreen( MifosScaffold( onBackPressed = onBackPressed, - title = stringResource(R.string.feature_settings), + title = stringResource(Res.string.feature_settings), ) { paddingValues -> Column( Modifier.padding(paddingValues), @@ -170,8 +172,8 @@ internal fun SettingsScreen( if (showLanguageUpdateDialog) { MifosRadioButtonDialog( - title = stringResource(R.string.feature_settings_choose_language), - items = stringArrayResource(R.array.feature_settings_languages), + title = stringResource(Res.string.feature_settings_choose_language), + items = stringArrayResource(Res.array.feature_settings_languages), selectItem = { _, index -> updateLanguage(MifosAppLanguage.entries[index]) }, onDismissRequest = { showLanguageUpdateDialog = false }, selectedItem = MifosAppLanguage.fromCode(selectedLanguage).displayName, @@ -180,7 +182,7 @@ internal fun SettingsScreen( if (showThemeUpdateDialog) { MifosRadioButtonDialog( - title = stringResource(R.string.feature_settings_change_app_theme), + title = stringResource(Res.string.feature_settings_change_app_theme), items = AppTheme.entries.map { it.themeName }.toTypedArray(), selectItem = { _, index -> updateTheme(AppTheme.entries[index]) }, onDismissRequest = { showThemeUpdateDialog = false }, @@ -267,30 +269,31 @@ private fun updateLanguageLocale(context: Context, language: String, isSystemLan "updateLanguageLocale: $language" + context.packageName.toString() + isSystemLanguage, ) -private fun showRestartCountdownToast(context: Context, seconds: Int) { - val countDownTimer = object : CountDownTimer((seconds * 1000).toLong(), 1000) { - override fun onTick(millisUntilFinished: Long) { - val secondsRemaining = millisUntilFinished / 1000 - Toast.makeText( - context, - "Restarting app in $secondsRemaining seconds", - Toast.LENGTH_SHORT, - ).show() - } + private fun showRestartCountdownToast(context: Context, seconds: Int) { + val countDownTimer = object : CountDownTimer((seconds * 1000).toLong(), 1000) { + override fun onTick(millisUntilFinished: Long) { + val secondsRemaining = millisUntilFinished / 1000 + Toast.makeText( + context, + "Restarting app in $secondsRemaining seconds", + Toast.LENGTH_SHORT, + ).show() + } - override fun onFinish() { - context.restartApplication() + override fun onFinish() { + context.restartApplication() + } } + countDownTimer.start() } - countDownTimer.start() -} -private fun Context.restartApplication() { - val packageManager: PackageManager = this.packageManager - val intent: Intent = packageManager.getLaunchIntentForPackage(this.packageName)!! - val componentName: ComponentName = intent.component!! - val restartIntent: Intent = Intent.makeRestartActivityTask(componentName) - this.startActivity(restartIntent) - Runtime.getRuntime().exit(0) + private fun Context.restartApplication() { + val packageManager: PackageManager = this.packageManager + val intent: Intent = packageManager.getLaunchIntentForPackage(this.packageName)!! + val componentName: ComponentName = intent.component!! + val restartIntent: Intent = Intent.makeRestartActivityTask(componentName) + this.startActivity(restartIntent) + Runtime.getRuntime().exit(0) + } } diff --git a/feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/settings/SettingsViewModel.kt b/feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/settings/SettingsViewModel.kt index 9dd748b25b..7e8f3dd472 100644 --- a/feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/settings/SettingsViewModel.kt +++ b/feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/settings/SettingsViewModel.kt @@ -16,7 +16,6 @@ import com.mifos.core.common.enums.MifosAppLanguage import com.mifos.core.datastore.UserPreferencesRepository import com.mifos.core.datastore.model.AppTheme import com.mifos.core.designsystem.icon.MifosIcons -import com.mifos.feature.settings.R import core.designsystem.generated.resources.Res import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow From 47b15588c2ca0ed9e6618ab9648e55f5ab6344f4 Mon Sep 17 00:00:00 2001 From: kapmaurya Date: Thu, 1 May 2025 10:00:56 +0530 Subject: [PATCH 3/4] cmp-migration settings --- .../settings/settings/SettingsScreen.kt | 60 +------------------ 1 file changed, 3 insertions(+), 57 deletions(-) diff --git a/feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/settings/SettingsScreen.kt b/feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/settings/SettingsScreen.kt index fbccc6c92c..fdaca52a18 100644 --- a/feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/settings/SettingsScreen.kt +++ b/feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/settings/SettingsScreen.kt @@ -9,13 +9,6 @@ */ package com.mifos.feature.settings.settings -import android.content.ComponentName -import android.content.Context -import android.content.Intent -import android.content.pm.PackageManager -import android.os.CountDownTimer -import android.util.Log -import android.widget.Toast import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer @@ -41,10 +34,6 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.vector.ImageVector -import androidx.compose.ui.platform.LocalContext -import androidx.compose.ui.res.stringArrayResource -import androidx.compose.ui.res.stringResource -import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.mifos.core.common.enums.MifosAppLanguage @@ -52,11 +41,9 @@ import com.mifos.core.datastore.model.AppTheme import com.mifos.core.designsystem.component.MifosRadioButtonDialog import com.mifos.core.designsystem.component.MifosScaffold import com.mifos.core.designsystem.component.UpdateEndpointDialogScreen -import com.mifos.feature.settings.R import com.mifos.feature.settings.syncSurvey.SyncSurveysDialog import com.mifos.feature.settings.updateServer.UpdateServerConfigScreenRoute import core.designsystem.generated.resources.Res -import org.jetbrains.compose.resources.stringArrayResource import org.jetbrains.compose.resources.stringResource import org.koin.compose.viewmodel.koinViewModel @@ -69,7 +56,6 @@ internal fun SettingsScreen( viewModel: SettingsViewModel = koinViewModel(), ) { val uiState by viewModel.uiState.collectAsStateWithLifecycle() - val context = LocalContext.current SettingsScreen( onBackPressed = onBackPressed, @@ -88,11 +74,6 @@ internal fun SettingsScreen( }, updateLanguage = { val isSystemLanguage = viewModel.updateLanguage(it.code) - updateLanguageLocale( - context = context, - language = it.code, - isSystemLanguage = isSystemLanguage, - ) languageChanged() }, ) @@ -118,7 +99,6 @@ internal fun SettingsScreen( var showServerConfig by rememberSaveable { mutableStateOf(false) } val sheetState = rememberModalBottomSheetState() - val context = LocalContext.current MifosScaffold( onBackPressed = onBackPressed, @@ -164,7 +144,6 @@ internal fun SettingsScreen( onCloseClick = { showServerConfig = false }, onSuccessful = { showServerConfig = false - showRestartCountdownToast(context, 2) }, ) } @@ -173,7 +152,7 @@ internal fun SettingsScreen( if (showLanguageUpdateDialog) { MifosRadioButtonDialog( title = stringResource(Res.string.feature_settings_choose_language), - items = stringArrayResource(Res.array.feature_settings_languages), + items = MifosAppLanguage.entries.map { it.displayName }.toTypedArray(), selectItem = { _, index -> updateLanguage(MifosAppLanguage.entries[index]) }, onDismissRequest = { showLanguageUpdateDialog = false }, selectedItem = MifosAppLanguage.fromCode(selectedLanguage).displayName, @@ -249,12 +228,12 @@ private fun SettingsCardItem( modifier = Modifier.weight(0.8f), ) { Text( - text = stringResource(id = title), + text = stringResource(title), style = MaterialTheme.typography.bodyMedium, ) Text( modifier = Modifier.padding(end = 16.dp), - text = stringResource(id = details), + text = stringResource(details), color = MaterialTheme.colorScheme.onBackground.copy(alpha = 0.8f), style = MaterialTheme.typography.bodyMedium, ) @@ -263,37 +242,4 @@ private fun SettingsCardItem( } } -private fun updateLanguageLocale(context: Context, language: String, isSystemLanguage: Boolean) { - Log.d( - "SettingsScreen", - "updateLanguageLocale: $language" + context.packageName.toString() + isSystemLanguage, - ) - - private fun showRestartCountdownToast(context: Context, seconds: Int) { - val countDownTimer = object : CountDownTimer((seconds * 1000).toLong(), 1000) { - override fun onTick(millisUntilFinished: Long) { - val secondsRemaining = millisUntilFinished / 1000 - Toast.makeText( - context, - "Restarting app in $secondsRemaining seconds", - Toast.LENGTH_SHORT, - ).show() - } - - override fun onFinish() { - context.restartApplication() - } - } - countDownTimer.start() - } - - private fun Context.restartApplication() { - val packageManager: PackageManager = this.packageManager - val intent: Intent = packageManager.getLaunchIntentForPackage(this.packageName)!! - val componentName: ComponentName = intent.component!! - val restartIntent: Intent = Intent.makeRestartActivityTask(componentName) - this.startActivity(restartIntent) - Runtime.getRuntime().exit(0) - } -} From 2fcc3cfc8b27a8bf5e108e45105d50bc0c2d2243 Mon Sep 17 00:00:00 2001 From: kapmaurya Date: Mon, 12 May 2025 15:48:23 +0530 Subject: [PATCH 4/4] cmp-migration setting --- .../main/kotlin/CMPFeatureConventionPlugin.kt | 2 +- feature/settings/build.gradle.kts | 24 +------ .../composeResources/values/strings.xml | 2 +- .../settings/syncSurvey/SyncSurveysDialog.kt | 65 ++++++------------- .../updateServer/UpdateServerConfigScreen.kt | 37 +++++------ 5 files changed, 41 insertions(+), 89 deletions(-) diff --git a/build-logic/convention/src/main/kotlin/CMPFeatureConventionPlugin.kt b/build-logic/convention/src/main/kotlin/CMPFeatureConventionPlugin.kt index b299ea0049..ee0a9123ec 100644 --- a/build-logic/convention/src/main/kotlin/CMPFeatureConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/CMPFeatureConventionPlugin.kt @@ -18,7 +18,7 @@ class CMPFeatureConventionPlugin : Plugin { add("commonMainImplementation", project(":core:ui")) add("commonMainImplementation", project(":core:designsystem")) //add("commonMainImplementation", project(":core:testing")) - // add("commonMainImplementation", project(":core:data")) + //add("commonMainImplementation", project(":core:data")) add("commonMainImplementation", libs.findLibrary("koin.compose").get()) add("commonMainImplementation", libs.findLibrary("koin.compose.viewmodel").get()) diff --git a/feature/settings/build.gradle.kts b/feature/settings/build.gradle.kts index 189ab37f01..c09bfe185c 100644 --- a/feature/settings/build.gradle.kts +++ b/feature/settings/build.gradle.kts @@ -15,24 +15,6 @@ android { namespace = "com.mifos.feature.settings" } -//dependencies { -// -// implementation(projects.core.datastore) -// implementation(projects.core.designsystem) -// implementation(projects.core.domain) -// implementation(projects.core.common) -// implementation(projects.core.ui) -// implementation(libs.appcompat) -// -// androidTestImplementation(libs.androidx.compose.ui.test) -// debugApi(libs.androidx.compose.ui.test.manifest) -// -// testImplementation(libs.hilt.android.testing) -// testImplementation(projects.core.testing) -// -// androidTestImplementation(projects.core.testing) -// -//} kotlin { sourceSets { @@ -41,11 +23,11 @@ kotlin { implementation(compose.components.resources) implementation(compose.ui) api(projects.core.common) - api(projects.core.model) + api(projects.core.model) api(projects.core.network) api(projects.core.datastore) - api(projects.core.designsystem) - //api(projects.core.domain) + api(projects.core.designsystem) + // api(projects.core.domain) } } diff --git a/feature/settings/src/commonMain/composeResources/values/strings.xml b/feature/settings/src/commonMain/composeResources/values/strings.xml index 6662f017c9..1c752f8d64 100644 --- a/feature/settings/src/commonMain/composeResources/values/strings.xml +++ b/feature/settings/src/commonMain/composeResources/values/strings.xml @@ -12,7 +12,7 @@ CloseBottomSheetIcon Update Config The application will restart after a successful update. - + Update Server Configuration Settings Sync Survey Click to Sync Survey diff --git a/feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/syncSurvey/SyncSurveysDialog.kt b/feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/syncSurvey/SyncSurveysDialog.kt index 61b1a22990..b1f917980d 100644 --- a/feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/syncSurvey/SyncSurveysDialog.kt +++ b/feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/syncSurvey/SyncSurveysDialog.kt @@ -9,9 +9,6 @@ */ package com.mifos.feature.settings.syncSurvey -import android.annotation.SuppressLint -import android.util.Log -import android.widget.Toast import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box @@ -41,17 +38,13 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color -import androidx.compose.ui.platform.LocalContext -import androidx.compose.ui.res.stringResource -import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.tooling.preview.PreviewParameter -import androidx.compose.ui.tooling.preview.PreviewParameterProvider import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Dialog import com.mifos.core.designsystem.component.MifosCircularProgress -import com.mifos.feature.settings.R +import core.designsystem.generated.resources.Res import kotlinx.coroutines.launch -import org.koin.androidx.compose.koinViewModel +import org.jetbrains.compose.resources.stringResource +import org.koin.compose.viewmodel.koinViewModel @Composable internal fun SyncSurveysDialog( @@ -135,7 +128,7 @@ internal fun SyncSurveysDialog( LaunchedEffect(key1 = true) { Toast.makeText( context, - context.getString(R.string.feature_settings_error_network_not_available), + context.getString(Res.string.feature_settings_error_network_not_available), Toast.LENGTH_SHORT, ).show() } @@ -148,7 +141,7 @@ internal fun SyncSurveysDialog( is SyncSurveysDialogUiState.ShowSurveysSyncSuccessfully -> { showCancelButton = false LaunchedEffect(key1 = true) { - Toast.makeText(context, R.string.feature_settings_sync_success, Toast.LENGTH_SHORT) + Toast.makeText(context, Res.string.feature_settings_sync_success, Toast.LENGTH_SHORT) .show() } } @@ -162,8 +155,8 @@ internal fun SyncSurveysDialog( surveySyncProgressMax = uiState.total totalSyncProgressMax = uiState.total val totalSurveys = - uiState.total.toString() + stringResource(R.string.feature_settings_space) + - stringResource(R.string.feature_settings_surveys) + uiState.total.toString() + stringResource(Res.string.feature_settings_space) + + stringResource(Res.string.feature_settings_surveys) totalSurveysText = totalSurveys syncFailedText = 0.toString() } @@ -174,8 +167,8 @@ internal fun SyncSurveysDialog( surveyName = uiState.name questionSyncProgressMax = uiState.questionTotal val totalSyncCount = - context.getString(R.string.feature_settings_space) + uiState.index + context.getString( - R.string.feature_settings_slash, + context.getString(Res.string.feature_settings_space) + uiState.index + context.getString( + Res.string.feature_settings_slash, ) + totalListSize totalProgressText = totalSyncCount } @@ -227,7 +220,7 @@ private fun SyncSurveysDialogContent( .padding(5.dp), ) { Text( - text = stringResource(id = R.string.feature_settings_sync_surveys_full_information), + text = stringResource(Res.string.feature_settings_sync_surveys_full_information), modifier = Modifier .padding(10.dp) .align(Alignment.CenterHorizontally), @@ -244,7 +237,7 @@ private fun SyncSurveysDialogContent( .padding(vertical = 8.dp), horizontalArrangement = Arrangement.SpaceBetween, ) { - Text(text = stringResource(id = R.string.feature_settings_name)) + Text(text = stringResource(Res.string.feature_settings_name)) Text(text = surveyName) } @@ -254,7 +247,7 @@ private fun SyncSurveysDialogContent( .padding(vertical = 8.dp), horizontalArrangement = Arrangement.SpaceBetween, ) { - Text(text = stringResource(id = R.string.feature_settings_total)) + Text(text = stringResource(Res.string.feature_settings_total)) Text(text = totalSurveysText) } @@ -264,7 +257,7 @@ private fun SyncSurveysDialogContent( .padding(vertical = 8.dp), horizontalArrangement = Arrangement.SpaceBetween, ) { - Text(text = stringResource(id = R.string.feature_settings_syncing_survey)) + Text(text = stringResource(Res.string.feature_settings_syncing_survey)) Text(text = surveyName) } @@ -281,7 +274,7 @@ private fun SyncSurveysDialogContent( .padding(vertical = 8.dp), horizontalArrangement = Arrangement.SpaceBetween, ) { - Text(text = stringResource(id = R.string.feature_settings_syncing_question)) + Text(text = stringResource(Res.string.feature_settings_syncing_question)) Text(text = questionName) } @@ -298,7 +291,7 @@ private fun SyncSurveysDialogContent( .padding(vertical = 8.dp), horizontalArrangement = Arrangement.SpaceBetween, ) { - Text(text = stringResource(id = R.string.feature_settings_syncing_response)) + Text(text = stringResource(Res.string.feature_settings_syncing_response)) Text(text = responseName) } @@ -315,7 +308,7 @@ private fun SyncSurveysDialogContent( .padding(vertical = 8.dp), horizontalArrangement = Arrangement.SpaceBetween, ) { - Text(text = stringResource(id = R.string.feature_settings_total_sync_progress)) + Text(text = stringResource(Res.string.feature_settings_total_sync_progress)) Text(text = totalProgressText) } @@ -332,7 +325,7 @@ private fun SyncSurveysDialogContent( .padding(vertical = 8.dp), horizontalArrangement = Arrangement.SpaceBetween, ) { - Text(text = stringResource(id = R.string.feature_settings_failed_sync)) + Text(text = stringResource(Res.string.feature_settings_failed_sync)) Text(text = syncFailedText) } } @@ -347,7 +340,7 @@ private fun SyncSurveysDialogContent( modifier = Modifier .weight(1f) .padding(end = 8.dp), - text = stringResource(id = R.string.feature_settings_cancel), + text = stringResource(Res.string.feature_settings_cancel), isEnabled = showCancelButton, ) @@ -356,7 +349,7 @@ private fun SyncSurveysDialogContent( modifier = Modifier .weight(1f) .padding(start = 8.dp), - text = stringResource(id = R.string.feature_settings_hide), + text = stringResource(Res.string.feature_settings_hide), isEnabled = true, ) } @@ -386,24 +379,4 @@ private fun SyncSurveyButton( } } -class SyncSurveysDialogPreviewProvider : PreviewParameterProvider { - override val values: Sequence - get() = sequenceOf( - SyncSurveysDialogUiState.DismissDialog, - SyncSurveysDialogUiState.ShowError("Error"), - SyncSurveysDialogUiState.ShowProgressbar, - SyncSurveysDialogUiState.ShowSurveysSyncSuccessfully, - SyncSurveysDialogUiState.ShowSyncedFailedSurveys(1), - ) -} -@Preview(showBackground = true) -@Composable -private fun SyncSurveysDialogPreview( - @PreviewParameter(SyncSurveysDialogPreviewProvider::class) state: SyncSurveysDialogUiState, -) { - SyncSurveysDialog( - uiState = state, - closeDialog = { }, - ) -} diff --git a/feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/updateServer/UpdateServerConfigScreen.kt b/feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/updateServer/UpdateServerConfigScreen.kt index 2eea248b69..d73df0f834 100644 --- a/feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/updateServer/UpdateServerConfigScreen.kt +++ b/feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/updateServer/UpdateServerConfigScreen.kt @@ -27,11 +27,8 @@ import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.AddLink import androidx.compose.material.icons.filled.Close import androidx.compose.material.icons.filled.Info -import androidx.compose.material.icons.filled.Link -import androidx.compose.material.icons.filled.Save import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.ElevatedButton import androidx.compose.material3.Icon @@ -45,7 +42,6 @@ import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.text.style.TextOverflow @@ -54,8 +50,9 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.mifos.core.common.utils.ServerConfig import com.mifos.core.designsystem.component.MifosOutlinedTextField import com.mifos.core.ui.util.DevicePreview -import com.mifos.feature.settings.R -import org.koin.androidx.compose.koinViewModel +import core.designsystem.generated.resources.Res +import org.jetbrains.compose.resources.stringResource +import org.koin.compose.viewmodel.koinViewModel @Composable internal fun UpdateServerConfigScreenRoute( @@ -138,7 +135,7 @@ internal fun UpdateServerConfigScreenContent( verticalAlignment = Alignment.CenterVertically, ) { Text( - text = stringResource(R.string.feature_settings_title), + text = stringResource(Res.string.feature_settings_title), style = MaterialTheme.typography.headlineSmall, fontWeight = FontWeight.SemiBold, maxLines = 1, @@ -152,7 +149,7 @@ internal fun UpdateServerConfigScreenContent( ) { Icon( imageVector = Icons.Default.Close, - contentDescription = stringResource(R.string.feature_settings_close_bottomsheet), + contentDescription = stringResource(Res.string.feature_settings_close_bottomsheet), ) } } @@ -168,11 +165,11 @@ internal fun UpdateServerConfigScreenContent( item { MifosOutlinedTextField( value = serverConfig.protocol, - label = stringResource(R.string.feature_settings_label_protocol), + label = stringResource(Res.string.feature_settings_label_protocol), leadingIcon = Icons.Default.AddLink, isError = protocolError != null, errorText = protocolError?.let { stringResource(it) }, - placeholder = stringResource(R.string.feature_settings_protocol_placeholder), + placeholder = stringResource(Res.string.feature_settings_protocol_placeholder), keyboardType = KeyboardType.Uri, showClearIcon = serverConfig.protocol.isNotEmpty(), onClickClearIcon = { @@ -187,11 +184,11 @@ internal fun UpdateServerConfigScreenContent( item { MifosOutlinedTextField( value = serverConfig.endPoint, - label = stringResource(R.string.feature_settings_label_endpoint), + label = stringResource(Res.string.feature_settings_label_endpoint), leadingIcon = Icons.Default.Link, isError = endPointError != null, errorText = endPointError?.let { stringResource(it) }, - placeholder = stringResource(R.string.feature_settings_endpoint_placeholder), + placeholder = stringResource(Res.string.feature_settings_endpoint_placeholder), showClearIcon = serverConfig.endPoint.isNotEmpty(), onClickClearIcon = { onEvent(UpdateServerConfigEvent.UpdateEndPoint("")) @@ -205,11 +202,11 @@ internal fun UpdateServerConfigScreenContent( item { MifosOutlinedTextField( value = serverConfig.apiPath, - label = stringResource(R.string.feature_settings_label_api_path), + label = stringResource(Res.string.feature_settings_label_api_path), leadingIcon = Icons.Default.Link, isError = apiPathError != null, errorText = apiPathError?.let { stringResource(it) }, - placeholder = stringResource(R.string.feature_settings_api_path_placeholder), + placeholder = stringResource(Res.string.feature_settings_api_path_placeholder), showClearIcon = serverConfig.endPoint.isNotEmpty(), onClickClearIcon = { onEvent(UpdateServerConfigEvent.UpdateEndPoint("")) @@ -223,11 +220,11 @@ internal fun UpdateServerConfigScreenContent( item { MifosOutlinedTextField( value = serverConfig.port, - label = stringResource(R.string.feature_settings_label_port), + label = stringResource(Res.string.feature_settings_label_port), leadingIcon = Icons.Default.Link, isError = portError != null, errorText = portError?.let { stringResource(it) }, - placeholder = stringResource(R.string.feature_settings_port_placeholder), + placeholder = stringResource(Res.string.feature_settings_port_placeholder), keyboardType = KeyboardType.Number, showClearIcon = serverConfig.port.isNotEmpty(), onClickClearIcon = { @@ -242,11 +239,11 @@ internal fun UpdateServerConfigScreenContent( item { MifosOutlinedTextField( value = serverConfig.tenant, - label = stringResource(R.string.feature_settings_label_tenant), + label = stringResource(Res.string.feature_settings_label_tenant), leadingIcon = Icons.Default.Link, isError = tenantError != null, errorText = tenantError?.let { stringResource(it) }, - placeholder = stringResource(R.string.feature_settings_tenant_placeholder), + placeholder = stringResource(Res.string.feature_settings_tenant_placeholder), showClearIcon = serverConfig.tenant.isNotEmpty(), onClickClearIcon = { onEvent(UpdateServerConfigEvent.UpdateTenant("")) @@ -271,7 +268,7 @@ internal fun UpdateServerConfigScreenContent( ) Text( - text = stringResource(R.string.feature_settings_note_text), + text = stringResource(Res.string.feature_settings_note_text), style = MaterialTheme.typography.labelSmall, ) } @@ -297,7 +294,7 @@ internal fun UpdateServerConfigScreenContent( contentDescription = "updateConfig", ) Spacer(modifier = Modifier.width(4.dp)) - Text(stringResource(R.string.feature_settings_update_config_btn_text).uppercase()) + Text(stringResource(Res.string.feature_settings_update_config_btn_text).uppercase()) } } }