From 01800f1f9b8144466e9b274fd9be15041c355b71 Mon Sep 17 00:00:00 2001 From: Hend Sayed Date: Fri, 17 Oct 2025 12:06:47 +0300 Subject: [PATCH] Refactor: Relocate onboarding and setup screen components --- .../presentation/screens/onboarding/OnboardingScreen.kt | 2 +- .../screens/onboarding/OnboardingScreenState.kt | 2 +- .../onboarding}/OnboardingViewModel.kt | 8 ++------ .../screens/setupScreens/AccountSetupCategoryScreen.kt | 4 ++-- .../screens/setupScreens/AccountSetupEffect.kt | 5 +++++ .../setupScreens}/AccountSetupInterActionListener.kt | 2 +- .../setupScreens}/AccountSetupState.kt | 2 +- .../setupScreens}/AccountSetupViewModel.kt | 4 ++-- .../screens/setupScreens/component/CategoryActionBox.kt | 4 ++-- .../screens/setupScreens/component/SetupScreenScaffold.kt | 4 ++-- .../{viewmodel => shared}/base/BaseViewModel.kt | 2 +- .../{viewmodel => shared}/base/ErrorUiState.kt | 2 +- .../viewmodel/accountSetup/AccountSetupEffect.kt | 5 ----- 13 files changed, 21 insertions(+), 25 deletions(-) rename composeApp/src/commonMain/kotlin/org/example/project/presentation/{viewmodel => screens/onboarding}/OnboardingViewModel.kt (81%) create mode 100644 composeApp/src/commonMain/kotlin/org/example/project/presentation/screens/setupScreens/AccountSetupEffect.kt rename composeApp/src/commonMain/kotlin/org/example/project/presentation/{viewmodel/accountSetup => screens/setupScreens}/AccountSetupInterActionListener.kt (56%) rename composeApp/src/commonMain/kotlin/org/example/project/presentation/{viewmodel/accountSetup => screens/setupScreens}/AccountSetupState.kt (86%) rename composeApp/src/commonMain/kotlin/org/example/project/presentation/{viewmodel/accountSetup => screens/setupScreens}/AccountSetupViewModel.kt (90%) rename composeApp/src/commonMain/kotlin/org/example/project/presentation/{viewmodel => shared}/base/BaseViewModel.kt (96%) rename composeApp/src/commonMain/kotlin/org/example/project/presentation/{viewmodel => shared}/base/ErrorUiState.kt (51%) delete mode 100644 composeApp/src/commonMain/kotlin/org/example/project/presentation/viewmodel/accountSetup/AccountSetupEffect.kt diff --git a/composeApp/src/commonMain/kotlin/org/example/project/presentation/screens/onboarding/OnboardingScreen.kt b/composeApp/src/commonMain/kotlin/org/example/project/presentation/screens/onboarding/OnboardingScreen.kt index ef38cc8..957729d 100644 --- a/composeApp/src/commonMain/kotlin/org/example/project/presentation/screens/onboarding/OnboardingScreen.kt +++ b/composeApp/src/commonMain/kotlin/org/example/project/presentation/screens/onboarding/OnboardingScreen.kt @@ -38,7 +38,7 @@ import org.example.project.presentation.designsystem.components.SecondaryButton import org.example.project.presentation.designsystem.textstyle.AppTheme import org.example.project.presentation.screens.onboarding.composable.OnboardingIndicator import org.example.project.presentation.screens.onboarding.composable.OnboardingItem -import org.example.project.presentation.viewmodel.OnboardingViewModel +import org.example.project.presentation.screens.onboarding.OnboardingViewModel import org.jetbrains.compose.resources.StringResource import org.jetbrains.compose.resources.stringResource import org.jetbrains.compose.ui.tooling.preview.Preview diff --git a/composeApp/src/commonMain/kotlin/org/example/project/presentation/screens/onboarding/OnboardingScreenState.kt b/composeApp/src/commonMain/kotlin/org/example/project/presentation/screens/onboarding/OnboardingScreenState.kt index 6a3a706..c4c6995 100644 --- a/composeApp/src/commonMain/kotlin/org/example/project/presentation/screens/onboarding/OnboardingScreenState.kt +++ b/composeApp/src/commonMain/kotlin/org/example/project/presentation/screens/onboarding/OnboardingScreenState.kt @@ -1,7 +1,7 @@ package org.example.project.presentation.screens.onboarding import org.example.project.presentation.screens.onboarding.model.OnboardingUiState -import org.example.project.presentation.viewmodel.base.ErrorUiState +import org.example.project.presentation.shared.base.ErrorUiState data class OnboardingScreenState( val onboardingData: List = emptyList(), diff --git a/composeApp/src/commonMain/kotlin/org/example/project/presentation/viewmodel/OnboardingViewModel.kt b/composeApp/src/commonMain/kotlin/org/example/project/presentation/screens/onboarding/OnboardingViewModel.kt similarity index 81% rename from composeApp/src/commonMain/kotlin/org/example/project/presentation/viewmodel/OnboardingViewModel.kt rename to composeApp/src/commonMain/kotlin/org/example/project/presentation/screens/onboarding/OnboardingViewModel.kt index b6b3c6c..f22d328 100644 --- a/composeApp/src/commonMain/kotlin/org/example/project/presentation/viewmodel/OnboardingViewModel.kt +++ b/composeApp/src/commonMain/kotlin/org/example/project/presentation/screens/onboarding/OnboardingViewModel.kt @@ -1,19 +1,15 @@ -package org.example.project.presentation.viewmodel +package org.example.project.presentation.screens.onboarding import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.IO import org.example.project.domain.entity.OnboardingItem import org.example.project.domain.repository.OnboardingRepository -import org.example.project.presentation.screens.onboarding.OnboardingScreenEffect -import org.example.project.presentation.screens.onboarding.OnboardingScreenInteractionListener -import org.example.project.presentation.screens.onboarding.OnboardingScreenState import org.example.project.presentation.screens.onboarding.model.toUiState -import org.example.project.presentation.viewmodel.base.BaseViewModel +import org.example.project.presentation.shared.base.BaseViewModel import org.koin.android.annotation.KoinViewModel import org.koin.core.annotation.Provided - @KoinViewModel class OnboardingViewModel( @Provided private val repository: OnboardingRepository, diff --git a/composeApp/src/commonMain/kotlin/org/example/project/presentation/screens/setupScreens/AccountSetupCategoryScreen.kt b/composeApp/src/commonMain/kotlin/org/example/project/presentation/screens/setupScreens/AccountSetupCategoryScreen.kt index 6f1c4b3..054fc87 100644 --- a/composeApp/src/commonMain/kotlin/org/example/project/presentation/screens/setupScreens/AccountSetupCategoryScreen.kt +++ b/composeApp/src/commonMain/kotlin/org/example/project/presentation/screens/setupScreens/AccountSetupCategoryScreen.kt @@ -11,8 +11,8 @@ import crafto.composeapp.generated.resources.account_setup_customer_category_des import crafto.composeapp.generated.resources.account_setup_customer_category_title import org.example.project.presentation.ui.screens.setupScreens.component.CategoryActionBox import org.example.project.presentation.ui.screens.setupScreens.component.SetupScreenScaffold -import org.example.project.presentation.viewmodel.accountSetup.AccountSetupState -import org.example.project.presentation.viewmodel.accountSetup.AccountSetupViewModel +import org.example.project.presentation.screens.setupScreens.AccountSetupState +import org.example.project.presentation.screens.setupScreens.AccountSetupViewModel import org.jetbrains.compose.resources.stringResource import org.koin.compose.viewmodel.koinViewModel import org.koin.core.annotation.KoinExperimentalAPI diff --git a/composeApp/src/commonMain/kotlin/org/example/project/presentation/screens/setupScreens/AccountSetupEffect.kt b/composeApp/src/commonMain/kotlin/org/example/project/presentation/screens/setupScreens/AccountSetupEffect.kt new file mode 100644 index 0000000..e98c9ec --- /dev/null +++ b/composeApp/src/commonMain/kotlin/org/example/project/presentation/screens/setupScreens/AccountSetupEffect.kt @@ -0,0 +1,5 @@ +package org.example.project.presentation.screens.setupScreens + +sealed class AccountSetupEffect { + +} diff --git a/composeApp/src/commonMain/kotlin/org/example/project/presentation/viewmodel/accountSetup/AccountSetupInterActionListener.kt b/composeApp/src/commonMain/kotlin/org/example/project/presentation/screens/setupScreens/AccountSetupInterActionListener.kt similarity index 56% rename from composeApp/src/commonMain/kotlin/org/example/project/presentation/viewmodel/accountSetup/AccountSetupInterActionListener.kt rename to composeApp/src/commonMain/kotlin/org/example/project/presentation/screens/setupScreens/AccountSetupInterActionListener.kt index e026867..4bf163e 100644 --- a/composeApp/src/commonMain/kotlin/org/example/project/presentation/viewmodel/accountSetup/AccountSetupInterActionListener.kt +++ b/composeApp/src/commonMain/kotlin/org/example/project/presentation/screens/setupScreens/AccountSetupInterActionListener.kt @@ -1,4 +1,4 @@ -package org.example.project.presentation.viewmodel.accountSetup +package org.example.project.presentation.screens.setupScreens interface AccountSetupInterActionListener { fun onCategorySelected(id: Int) diff --git a/composeApp/src/commonMain/kotlin/org/example/project/presentation/viewmodel/accountSetup/AccountSetupState.kt b/composeApp/src/commonMain/kotlin/org/example/project/presentation/screens/setupScreens/AccountSetupState.kt similarity index 86% rename from composeApp/src/commonMain/kotlin/org/example/project/presentation/viewmodel/accountSetup/AccountSetupState.kt rename to composeApp/src/commonMain/kotlin/org/example/project/presentation/screens/setupScreens/AccountSetupState.kt index 97d5a44..b9eb309 100644 --- a/composeApp/src/commonMain/kotlin/org/example/project/presentation/viewmodel/accountSetup/AccountSetupState.kt +++ b/composeApp/src/commonMain/kotlin/org/example/project/presentation/screens/setupScreens/AccountSetupState.kt @@ -1,4 +1,4 @@ -package org.example.project.presentation.viewmodel.accountSetup +package org.example.project.presentation.screens.setupScreens import org.example.project.domain.entity.Category diff --git a/composeApp/src/commonMain/kotlin/org/example/project/presentation/viewmodel/accountSetup/AccountSetupViewModel.kt b/composeApp/src/commonMain/kotlin/org/example/project/presentation/screens/setupScreens/AccountSetupViewModel.kt similarity index 90% rename from composeApp/src/commonMain/kotlin/org/example/project/presentation/viewmodel/accountSetup/AccountSetupViewModel.kt rename to composeApp/src/commonMain/kotlin/org/example/project/presentation/screens/setupScreens/AccountSetupViewModel.kt index 02e120b..5041221 100644 --- a/composeApp/src/commonMain/kotlin/org/example/project/presentation/viewmodel/accountSetup/AccountSetupViewModel.kt +++ b/composeApp/src/commonMain/kotlin/org/example/project/presentation/screens/setupScreens/AccountSetupViewModel.kt @@ -1,9 +1,9 @@ -package org.example.project.presentation.viewmodel.accountSetup +package org.example.project.presentation.screens.setupScreens import androidx.lifecycle.viewModelScope import kotlinx.coroutines.launch import org.example.project.domain.usecase.GetCategoriesUseCase -import org.example.project.presentation.viewmodel.base.BaseViewModel +import org.example.project.presentation.shared.base.BaseViewModel import org.koin.android.annotation.KoinViewModel import org.koin.core.annotation.Provided diff --git a/composeApp/src/commonMain/kotlin/org/example/project/presentation/screens/setupScreens/component/CategoryActionBox.kt b/composeApp/src/commonMain/kotlin/org/example/project/presentation/screens/setupScreens/component/CategoryActionBox.kt index c89dbab..dddeb96 100644 --- a/composeApp/src/commonMain/kotlin/org/example/project/presentation/screens/setupScreens/component/CategoryActionBox.kt +++ b/composeApp/src/commonMain/kotlin/org/example/project/presentation/screens/setupScreens/component/CategoryActionBox.kt @@ -14,8 +14,8 @@ import org.example.project.data.memory.dataSource.categoryList import org.example.project.presentation.designsystem.components.Chip import org.example.project.presentation.designsystem.textstyle.AppTheme import org.example.project.presentation.util.extension.toAnimatedColor -import org.example.project.presentation.viewmodel.accountSetup.AccountSetupCategoryState -import org.example.project.presentation.viewmodel.accountSetup.AccountSetupState +import org.example.project.presentation.screens.setupScreens.AccountSetupCategoryState +import org.example.project.presentation.screens.setupScreens.AccountSetupState import org.jetbrains.compose.ui.tooling.preview.Preview @Composable diff --git a/composeApp/src/commonMain/kotlin/org/example/project/presentation/screens/setupScreens/component/SetupScreenScaffold.kt b/composeApp/src/commonMain/kotlin/org/example/project/presentation/screens/setupScreens/component/SetupScreenScaffold.kt index af31586..c5a921f 100644 --- a/composeApp/src/commonMain/kotlin/org/example/project/presentation/screens/setupScreens/component/SetupScreenScaffold.kt +++ b/composeApp/src/commonMain/kotlin/org/example/project/presentation/screens/setupScreens/component/SetupScreenScaffold.kt @@ -25,8 +25,8 @@ import org.example.project.presentation.designsystem.components.ButtonState import org.example.project.presentation.designsystem.components.PrimaryButton import org.example.project.presentation.designsystem.textstyle.AppTheme import org.example.project.presentation.util.DeviceConfiguration -import org.example.project.presentation.viewmodel.accountSetup.AccountSetupCategoryState -import org.example.project.presentation.viewmodel.accountSetup.AccountSetupState +import org.example.project.presentation.screens.setupScreens.AccountSetupCategoryState +import org.example.project.presentation.screens.setupScreens.AccountSetupState import org.jetbrains.compose.resources.stringResource import org.jetbrains.compose.ui.tooling.preview.Preview diff --git a/composeApp/src/commonMain/kotlin/org/example/project/presentation/viewmodel/base/BaseViewModel.kt b/composeApp/src/commonMain/kotlin/org/example/project/presentation/shared/base/BaseViewModel.kt similarity index 96% rename from composeApp/src/commonMain/kotlin/org/example/project/presentation/viewmodel/base/BaseViewModel.kt rename to composeApp/src/commonMain/kotlin/org/example/project/presentation/shared/base/BaseViewModel.kt index 14bd982..b728352 100644 --- a/composeApp/src/commonMain/kotlin/org/example/project/presentation/viewmodel/base/BaseViewModel.kt +++ b/composeApp/src/commonMain/kotlin/org/example/project/presentation/shared/base/BaseViewModel.kt @@ -1,4 +1,4 @@ -package org.example.project.presentation.viewmodel.base +package org.example.project.presentation.shared.base import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope diff --git a/composeApp/src/commonMain/kotlin/org/example/project/presentation/viewmodel/base/ErrorUiState.kt b/composeApp/src/commonMain/kotlin/org/example/project/presentation/shared/base/ErrorUiState.kt similarity index 51% rename from composeApp/src/commonMain/kotlin/org/example/project/presentation/viewmodel/base/ErrorUiState.kt rename to composeApp/src/commonMain/kotlin/org/example/project/presentation/shared/base/ErrorUiState.kt index 0dad128..e5b461c 100644 --- a/composeApp/src/commonMain/kotlin/org/example/project/presentation/viewmodel/base/ErrorUiState.kt +++ b/composeApp/src/commonMain/kotlin/org/example/project/presentation/shared/base/ErrorUiState.kt @@ -1,4 +1,4 @@ -package org.example.project.presentation.viewmodel.base +package org.example.project.presentation.shared.base data class ErrorUiState ( val message: String = "", diff --git a/composeApp/src/commonMain/kotlin/org/example/project/presentation/viewmodel/accountSetup/AccountSetupEffect.kt b/composeApp/src/commonMain/kotlin/org/example/project/presentation/viewmodel/accountSetup/AccountSetupEffect.kt deleted file mode 100644 index bb4a5d1..0000000 --- a/composeApp/src/commonMain/kotlin/org/example/project/presentation/viewmodel/accountSetup/AccountSetupEffect.kt +++ /dev/null @@ -1,5 +0,0 @@ -package org.example.project.presentation.viewmodel.accountSetup - -sealed class AccountSetupEffect { - -}