diff --git a/feature/main/build.gradle.kts b/feature/main/build.gradle.kts index 865ed9e..cfa89a9 100644 --- a/feature/main/build.gradle.kts +++ b/feature/main/build.gradle.kts @@ -6,4 +6,12 @@ plugins { android { namespace = "org.sopt.main" +} + +dependencies { + implementation(projects.core.designsystem) + implementation(projects.core.domain) + implementation(projects.feature.home) + implementation(projects.feature.search) + implementation(projects.feature.mypage) } \ No newline at end of file diff --git a/feature/main/src/main/java/org/sopt/main/home/HomeContract.kt b/feature/main/src/main/java/org/sopt/main/home/HomeContract.kt deleted file mode 100644 index a296b0b..0000000 --- a/feature/main/src/main/java/org/sopt/main/home/HomeContract.kt +++ /dev/null @@ -1,14 +0,0 @@ -package org.sopt.main.home - -import org.sopt.main.model.User - -data class HomeState( - val id: String = "", - val password: String = "", - val name: String = "", - val hobby: String = "" -) - -sealed interface HomeSideEffect { - data object LoginSuccess : HomeSideEffect -} \ No newline at end of file diff --git a/feature/main/src/main/java/org/sopt/main/home/HomeScreen.kt b/feature/main/src/main/java/org/sopt/main/home/HomeScreen.kt deleted file mode 100644 index 7bc33b4..0000000 --- a/feature/main/src/main/java/org/sopt/main/home/HomeScreen.kt +++ /dev/null @@ -1,131 +0,0 @@ -package org.sopt.main.home - -import android.os.Bundle -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.height -import androidx.compose.foundation.layout.padding -import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Scaffold -import androidx.compose.material3.SnackbarHost -import androidx.compose.material3.SnackbarHostState -import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -import androidx.compose.runtime.LaunchedEffect -import androidx.compose.runtime.remember -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.text.TextStyle -import androidx.compose.ui.text.style.TextAlign -import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.unit.dp -import androidx.hilt.navigation.compose.hiltViewModel -import androidx.navigation.NavController -import dagger.hilt.android.lifecycle.HiltViewModel -import org.orbitmvi.orbit.compose.collectAsState -import org.orbitmvi.orbit.compose.collectSideEffect -import org.sopt.designsystem.ui.theme.NOWSOPTAndroidTheme -import org.sopt.main.model.User -import org.sopt.ui.intent.getParcelableSafe - -@Composable -fun HomeRoute( - navController: NavController, - popBackStack: () -> Unit, - viewModel: HomeViewModel = hiltViewModel(), -){ - val state = viewModel.collectAsState().value - val snackBarHostState = remember { SnackbarHostState() } - - viewModel.collectSideEffect {sideEffect -> - when(sideEffect){ - HomeSideEffect.LoginSuccess -> { - snackBarHostState.currentSnackbarData?.dismiss() - snackBarHostState.showSnackbar("로그인 성공") - } - } - } - - LaunchedEffect(true) { - navController.previousBackStackEntry?.savedStateHandle?.run { - val bundle = get("user") - val user = bundle?.getParcelableSafe("user", User::class.java) ?: User() - viewModel.updateState(user) - } - } - - HomeScreen( - snackBarHostState = snackBarHostState, - state = state - ) -} -@Composable -fun HomeScreen( - snackBarHostState: SnackbarHostState, - state: HomeState - ) { - Scaffold( - snackbarHost = { SnackbarHost(hostState = snackBarHostState) } - ) { it -> - Box( - modifier = Modifier - .fillMaxSize() - .padding(top = 20.dp + it.calculateTopPadding(), bottom = 20.dp + it.calculateBottomPadding(), start = 20.dp, end = 20.dp) - ) { - Column { - HomeText( - title = "이름 : ", - text = state.name - ) - Spacer(modifier = Modifier.height(30.dp)) - HomeText( - title = "아이디 : ", - text = state.id - ) - Spacer(modifier = Modifier.height(30.dp)) - HomeText( - title = "비밀번호 : ", - text = state.password - ) - Spacer(modifier = Modifier.height(30.dp)) - HomeText( - title = "취미 : ", - text = state.hobby - ) - } - } - } -} - -@Composable -fun HomeText( - title: String = "", - text: String = "", - style: TextStyle = MaterialTheme.typography.titleLarge, -) { - Row( - verticalAlignment = Alignment.CenterVertically - ) { - Text( - text = title, - style = style, - textAlign = TextAlign.Center - ) - Text( - text = text, - style = style, - textAlign = TextAlign.Center - ) - } -} - -@Preview(showBackground = true) -@Composable -fun HomeScreenPreview() { - NOWSOPTAndroidTheme { - //HomeScreen() - } -} \ No newline at end of file diff --git a/feature/main/src/main/java/org/sopt/main/home/HomeViewModel.kt b/feature/main/src/main/java/org/sopt/main/home/HomeViewModel.kt deleted file mode 100644 index c10bd9b..0000000 --- a/feature/main/src/main/java/org/sopt/main/home/HomeViewModel.kt +++ /dev/null @@ -1,32 +0,0 @@ -package org.sopt.main.home - -import androidx.lifecycle.ViewModel -import dagger.hilt.android.lifecycle.HiltViewModel -import org.orbitmvi.orbit.Container -import org.orbitmvi.orbit.ContainerHost -import org.orbitmvi.orbit.syntax.simple.intent -import org.orbitmvi.orbit.syntax.simple.postSideEffect -import org.orbitmvi.orbit.syntax.simple.reduce -import org.orbitmvi.orbit.viewmodel.container -import org.sopt.main.model.User -import javax.inject.Inject - -@HiltViewModel -class HomeViewModel @Inject constructor( - -): ContainerHost, ViewModel() { - override val container: Container = container(HomeState()) - - fun updateState(user: User) = intent { - postSideEffect(HomeSideEffect.LoginSuccess) - - reduce { - state.copy( - id = user.id, - password = user.pw, - name = user.name, - hobby = user.hobby - ) - } - } -} \ No newline at end of file diff --git a/feature/main/src/main/java/org/sopt/main/home/navigation/HomeNavigation.kt b/feature/main/src/main/java/org/sopt/main/home/navigation/HomeNavigation.kt deleted file mode 100644 index 46eacf3..0000000 --- a/feature/main/src/main/java/org/sopt/main/home/navigation/HomeNavigation.kt +++ /dev/null @@ -1,33 +0,0 @@ -package org.sopt.main.home.navigation - -import android.os.Bundle -import androidx.navigation.NavController -import androidx.navigation.NavGraphBuilder -import androidx.navigation.compose.composable -import org.sopt.main.home.HomeRoute -import org.sopt.main.model.User - -fun NavController.navigateHome(user: User) { - val bundle = Bundle().apply { - putParcelable("user", user) - } - navigate(HomeRoute.route){ - currentBackStackEntry?.savedStateHandle?.set("user", bundle) - } -} - -fun NavGraphBuilder.homeNavGraph( - navController: NavController, - popBackStack: () -> Unit, -){ - composable(route = HomeRoute.route) { navBackStackEntry -> - HomeRoute( - navController = navController, - popBackStack = popBackStack, - ) - } -} - -object HomeRoute { - const val route = "home" -} \ No newline at end of file