From cbab27e02a6182e11cd7636a2e325a667f1ce02a Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Tue, 30 Apr 2024 12:54:52 +0900 Subject: [PATCH] [feat] #4 review --- .../src/main/java/org/sopt/model/Friend.kt | 2 +- .../org/sopt/home/AddFriendBottomSheet.kt | 12 +++---- .../main/java/org/sopt/home/HomeContract.kt | 4 ++- .../java/org/sopt/home/HomeFriendContainer.kt | 10 +++--- .../src/main/java/org/sopt/home/HomeScreen.kt | 36 ++++++++----------- .../sopt/home/navigation/HomeNavigation.kt | 6 +++- .../java/org/sopt/main/login/LoginScreen.kt | 8 +++-- .../org/sopt/main/login/LoginViewModel.kt | 4 ++- .../main/login/navigation/LoginNavigation.kt | 2 ++ .../java/org/sopt/main/model/UserModel.kt | 5 +-- .../org/sopt/main/navigator/MainScreen.kt | 16 ++++++--- .../java/org/sopt/main/signup/SignupScreen.kt | 9 +++-- .../signup/navigation/SignupNavigation.kt | 3 ++ .../main/java/org/sopt/mypage/MypageScreen.kt | 8 +++-- .../mypage/navigation/MypageNavigation.kt | 3 ++ .../main/java/org/sopt/search/SearchScreen.kt | 3 +- .../search/navigation/SearchNavigation.kt | 3 ++ gradle/libs.versions.toml | 10 +++++- 18 files changed, 91 insertions(+), 53 deletions(-) diff --git a/core/model/src/main/java/org/sopt/model/Friend.kt b/core/model/src/main/java/org/sopt/model/Friend.kt index 0851800..546cbd4 100644 --- a/core/model/src/main/java/org/sopt/model/Friend.kt +++ b/core/model/src/main/java/org/sopt/model/Friend.kt @@ -1,7 +1,7 @@ package org.sopt.model data class Friend( - val id: Int?, + val id: Int? = null, val name: String, val hobby: String, ) diff --git a/feature/home/src/main/java/org/sopt/home/AddFriendBottomSheet.kt b/feature/home/src/main/java/org/sopt/home/AddFriendBottomSheet.kt index 568533e..334f7bc 100644 --- a/feature/home/src/main/java/org/sopt/home/AddFriendBottomSheet.kt +++ b/feature/home/src/main/java/org/sopt/home/AddFriendBottomSheet.kt @@ -1,6 +1,7 @@ package org.sopt.home import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth @@ -24,15 +25,14 @@ import org.sopt.designsystem.ui.theme.NOWSOPTAndroidTheme @OptIn(ExperimentalMaterial3Api::class) @Composable fun AddFriendBottomSheet( - modifier: Modifier = Modifier, - sheetState: SheetState, - onDismissRequest: () -> Unit = {}, onClickSave: () -> Unit, onNameValueChange: (String) -> Unit, onHobbyValueChange: (String) -> Unit, state: HomeState, + modifier: Modifier = Modifier, + onDismissRequest: () -> Unit = {}, ) { - ModalBottomSheet(sheetState = sheetState, onDismissRequest = onDismissRequest) { + ModalBottomSheet(onDismissRequest = onDismissRequest) { AddFriendContent( onClickSave = onClickSave, onNameValueChange = onNameValueChange, @@ -55,26 +55,24 @@ fun AddFriendContent( .background(color = Color.White) .padding(horizontal = 20.dp), horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.spacedBy(40.dp) ) { Spacer(modifier = Modifier.height(20.dp)) Text( text = "친구 추가", fontSize = 20.sp, ) - Spacer(modifier = Modifier.height(40.dp)) RegularTextField( value = state.savingName, placeholder = "이름을 입력하세요", onValueChange = onNameValueChange ) - Spacer(modifier = Modifier.height(40.dp)) RegularTextField( value = state.savingHobby, placeholder = "취미를 입력하세요", onValueChange = onHobbyValueChange ) - Spacer(modifier = Modifier.height(40.dp)) RegularButton( modifier = Modifier.padding(horizontal = 40.dp), text = "저장", diff --git a/feature/home/src/main/java/org/sopt/home/HomeContract.kt b/feature/home/src/main/java/org/sopt/home/HomeContract.kt index 1030c98..806ef99 100644 --- a/feature/home/src/main/java/org/sopt/home/HomeContract.kt +++ b/feature/home/src/main/java/org/sopt/home/HomeContract.kt @@ -1,9 +1,11 @@ package org.sopt.home +import kotlinx.collections.immutable.ImmutableList +import kotlinx.collections.immutable.persistentListOf import org.sopt.model.Friend data class HomeState( - val friendList: List = emptyList(), + val friendList: ImmutableList = persistentListOf(), val query: String = "", val registeredHobby: String = "", val registeredName: String = "", diff --git a/feature/home/src/main/java/org/sopt/home/HomeFriendContainer.kt b/feature/home/src/main/java/org/sopt/home/HomeFriendContainer.kt index 43bcbfd..7a0c2f1 100644 --- a/feature/home/src/main/java/org/sopt/home/HomeFriendContainer.kt +++ b/feature/home/src/main/java/org/sopt/home/HomeFriendContainer.kt @@ -1,5 +1,6 @@ package org.sopt.home +import androidx.annotation.DrawableRes import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.Image import androidx.compose.foundation.background @@ -27,15 +28,16 @@ import org.sopt.designsystem.ui.theme.NOWSOPTAndroidTheme @OptIn(ExperimentalFoundationApi::class) @Composable fun HomeFriendContainer( - id: Int? = 0, - modifier: Modifier = Modifier, - painter: Painter = painterResource(R.drawable.ic_launcher_background), title: String, - subTitle: String = "", containerHeight: Dp, + modifier: Modifier = Modifier, + id: Int? = 0, + @DrawableRes imageId: Int = R.drawable.ic_launcher_background, + subTitle: String = "", onClick: () -> Unit = {}, onLongClick: () -> Unit = {}, ) { + val painter = painterResource(id = imageId) Row( modifier = modifier .fillMaxWidth() diff --git a/feature/home/src/main/java/org/sopt/home/HomeScreen.kt b/feature/home/src/main/java/org/sopt/home/HomeScreen.kt index ad8ebde..d6fe134 100644 --- a/feature/home/src/main/java/org/sopt/home/HomeScreen.kt +++ b/feature/home/src/main/java/org/sopt/home/HomeScreen.kt @@ -11,7 +11,6 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn -import androidx.compose.foundation.lazy.LazyListState import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.material.icons.Icons @@ -19,35 +18,33 @@ import androidx.compose.material.icons.filled.Add import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.FloatingActionButton import androidx.compose.material3.Icon -import androidx.compose.material3.SheetState -import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color.Companion.White import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel +import kotlinx.collections.immutable.persistentListOf import org.orbitmvi.orbit.compose.collectAsState import org.sopt.designsystem.component.dialog.SoptAlertDialog import org.sopt.designsystem.component.textfield.RegularTextField import org.sopt.designsystem.ui.theme.NOWSOPTAndroidTheme import org.sopt.model.Friend -@OptIn(ExperimentalMaterial3Api::class) + @Composable fun HomeRoute( + modifier: Modifier = Modifier, viewModel: HomeViewModel = hiltViewModel(), label: String, ) { - val state = viewModel.collectAsState().value - val listState = rememberLazyListState() - val sheetState = rememberModalBottomSheetState() + val state by viewModel.collectAsState() HomeScreen( + modifier = modifier, state = state, - listState = listState, - sheetState = sheetState, onQueryValueChange = viewModel::updateQuery, onLongClickItem = viewModel::showDeleteDialog, onClickFloatingButton = viewModel::showAddFriendBottomSheet, @@ -60,12 +57,11 @@ fun HomeRoute( ) } -@OptIn(ExperimentalMaterial3Api::class, ExperimentalFoundationApi::class) +@OptIn(ExperimentalFoundationApi::class) @Composable fun HomeScreen( + modifier: Modifier = Modifier, state: HomeState = HomeState(), - listState: LazyListState = rememberLazyListState(), - sheetState: SheetState = rememberModalBottomSheetState(), onQueryValueChange: (String) -> Unit = {}, onLongClickItem: (Int) -> Unit = {}, onClickFloatingButton: () -> Unit = {}, @@ -76,7 +72,10 @@ fun HomeScreen( onClickDialogPositiveButton: (Int) -> Unit = {}, onClickDialogNegativeButton: () -> Unit = {}, ) { - Box { + val listState = rememberLazyListState() + Box ( + modifier = modifier + ) { if (state.showDeleteDialog.first) { SoptAlertDialog( title = "삭제?", @@ -105,13 +104,7 @@ fun HomeScreen( state = listState ) { items( - items = listOf( - Friend( - id = 0, - name = state.registeredName, - hobby = state.registeredHobby - ) - ) + state.friendList, + items = state.friendList, key = { it.id!! } ) { friend -> HomeFriendContainer( @@ -142,7 +135,6 @@ fun HomeScreen( } if (state.showBottomSheet) { AddFriendBottomSheet( - sheetState = sheetState, onClickSave = onClickSave, onDismissRequest = onDismissRequest, onNameValueChange = onBottomSheetNameChange, @@ -161,7 +153,7 @@ fun preview() { NOWSOPTAndroidTheme { HomeScreen( state = HomeState( - friendList = listOf( + friendList = persistentListOf( Friend(1, "asd", "asd"), Friend(2, "asd", "asd"), Friend(3, "asd", "asd"), diff --git a/feature/home/src/main/java/org/sopt/home/navigation/HomeNavigation.kt b/feature/home/src/main/java/org/sopt/home/navigation/HomeNavigation.kt index 6425d4c..b75db19 100644 --- a/feature/home/src/main/java/org/sopt/home/navigation/HomeNavigation.kt +++ b/feature/home/src/main/java/org/sopt/home/navigation/HomeNavigation.kt @@ -1,5 +1,6 @@ package org.sopt.home.navigation +import androidx.compose.ui.Modifier import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions @@ -13,9 +14,12 @@ fun NavController.navigateHome(navOptions: NavOptions? = null) { navigate(HomeRoute.route, navOptions) } -fun NavGraphBuilder.homeNavGraph() { +fun NavGraphBuilder.homeNavGraph( + modifier: Modifier = Modifier, +) { composable(route = HomeRoute.route) { HomeRoute( + modifier = modifier, label = "" ) } diff --git a/feature/main/src/main/java/org/sopt/main/login/LoginScreen.kt b/feature/main/src/main/java/org/sopt/main/login/LoginScreen.kt index 7cae877..91cd22a 100644 --- a/feature/main/src/main/java/org/sopt/main/login/LoginScreen.kt +++ b/feature/main/src/main/java/org/sopt/main/login/LoginScreen.kt @@ -14,6 +14,7 @@ import androidx.compose.material3.SnackbarHost import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Alignment @@ -31,11 +32,12 @@ import org.sopt.designsystem.ui.theme.NOWSOPTAndroidTheme @Composable fun LoginRoute( + modifier: Modifier = Modifier, viewModel: LoginViewModel = hiltViewModel(), navigateHome: () -> Unit, navigateSignup: () -> Unit, ) { - val state = viewModel.collectAsState().value + val state by viewModel.collectAsState() val snackBarHostState = remember { SnackbarHostState() } val scope = rememberCoroutineScope() @@ -67,6 +69,7 @@ fun LoginRoute( LoginScreen( snackBarHostState = snackBarHostState, + modifier = modifier, state = state, onClickLoginBtn = viewModel::login, onClickSignupBtn = viewModel::signup, @@ -79,6 +82,7 @@ fun LoginRoute( @Composable fun LoginScreen( snackBarHostState: SnackbarHostState, + modifier: Modifier = Modifier, state: LoginState = LoginState(), onClickLoginBtn: () -> Unit = {}, onClickSignupBtn: () -> Unit = {}, @@ -89,7 +93,7 @@ fun LoginScreen( snackbarHost = { SnackbarHost(hostState = snackBarHostState) } ) { Box( - modifier = Modifier + modifier = modifier .fillMaxSize() .padding( top = 50.dp, diff --git a/feature/main/src/main/java/org/sopt/main/login/LoginViewModel.kt b/feature/main/src/main/java/org/sopt/main/login/LoginViewModel.kt index 1db70ee..c01cd1b 100644 --- a/feature/main/src/main/java/org/sopt/main/login/LoginViewModel.kt +++ b/feature/main/src/main/java/org/sopt/main/login/LoginViewModel.kt @@ -50,7 +50,9 @@ class LoginViewModel @Inject constructor( fun login() = intent { with(state) { when { - checkRegister() -> postSideEffect(LoginSideEffect.showSnackbar("회원가입 먼저하셈")) + checkRegister() -> { + postSideEffect(LoginSideEffect.showSnackbar("회원가입 먼저하셈")) + } matchesUserInfo(state.id, state.password) -> { userDataRepository.setAutoLogin(true) } diff --git a/feature/main/src/main/java/org/sopt/main/login/navigation/LoginNavigation.kt b/feature/main/src/main/java/org/sopt/main/login/navigation/LoginNavigation.kt index 28dbe5a..38fa2b3 100644 --- a/feature/main/src/main/java/org/sopt/main/login/navigation/LoginNavigation.kt +++ b/feature/main/src/main/java/org/sopt/main/login/navigation/LoginNavigation.kt @@ -1,5 +1,6 @@ package org.sopt.main.login.navigation +import androidx.compose.ui.Modifier import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.compose.composable @@ -15,6 +16,7 @@ fun NavController.navigateLogin() { } fun NavGraphBuilder.loginNavGraph( + modifier: Modifier = Modifier, navigateSignup: () -> Unit = {}, navigateHome: () -> Unit = {}, ) { diff --git a/feature/main/src/main/java/org/sopt/main/model/UserModel.kt b/feature/main/src/main/java/org/sopt/main/model/UserModel.kt index 6f1bccf..d8a099d 100644 --- a/feature/main/src/main/java/org/sopt/main/model/UserModel.kt +++ b/feature/main/src/main/java/org/sopt/main/model/UserModel.kt @@ -1,16 +1,13 @@ package org.sopt.main.model -import android.os.Parcelable -import kotlinx.parcelize.Parcelize import org.sopt.model.User -@Parcelize data class UserModel( val id: String = "", val pw: String = "", val name: String = "", val hobby: String = "", -) : Parcelable +) fun UserModel.toUser() = User( id = id, diff --git a/feature/main/src/main/java/org/sopt/main/navigator/MainScreen.kt b/feature/main/src/main/java/org/sopt/main/navigator/MainScreen.kt index 697a5f8..7441b13 100644 --- a/feature/main/src/main/java/org/sopt/main/navigator/MainScreen.kt +++ b/feature/main/src/main/java/org/sopt/main/navigator/MainScreen.kt @@ -13,6 +13,7 @@ import androidx.compose.foundation.layout.RowScope import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.material3.Icon import androidx.compose.material3.Scaffold @@ -25,7 +26,7 @@ import androidx.compose.ui.graphics.Color.Companion.White import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp import androidx.navigation.compose.NavHost -import okhttp3.internal.toImmutableList +import kotlinx.collections.immutable.toImmutableList import org.sopt.home.navigation.homeNavGraph import org.sopt.main.login.navigation.loginNavGraph import org.sopt.main.signup.navigation.signupNavGraph @@ -40,27 +41,34 @@ fun MainScreen( ) { Scaffold( modifier = modifier, - content = { + content = { innerPadding -> NavHost( navController = navigator.navController, startDestination = navigator.startDestination, ) { loginNavGraph( + modifier = modifier.padding(innerPadding), navigateSignup = navigator::navigateSignup, navigateHome = navigator::navigateHome, ) signupNavGraph( + modifier = modifier.padding(innerPadding), navigateLogin = navigator::navigateLogin ) MypageNavGraph( + modifier = modifier.padding(innerPadding), navigateToLoginScreen = navigator::navigateLogin ) - homeNavGraph() + homeNavGraph( + modifier = modifier.padding(innerPadding), + ) - searchNavGraph() + searchNavGraph( + modifier = modifier.padding(innerPadding), + ) } }, bottomBar = { diff --git a/feature/main/src/main/java/org/sopt/main/signup/SignupScreen.kt b/feature/main/src/main/java/org/sopt/main/signup/SignupScreen.kt index 5239570..d410df6 100644 --- a/feature/main/src/main/java/org/sopt/main/signup/SignupScreen.kt +++ b/feature/main/src/main/java/org/sopt/main/signup/SignupScreen.kt @@ -14,6 +14,7 @@ import androidx.compose.material3.SnackbarHost import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Alignment @@ -31,10 +32,11 @@ import org.sopt.designsystem.ui.theme.NOWSOPTAndroidTheme @Composable fun SignupRoute( + modifier: Modifier = Modifier, viewModel: SignupViewModel = hiltViewModel(), navigateLogin: () -> Unit, ) { - val state = viewModel.collectAsState().value + val state by viewModel.collectAsState() val snackBarHostState = remember { SnackbarHostState() } val scope = rememberCoroutineScope() @@ -56,6 +58,7 @@ fun SignupRoute( } SignupScreen( + modifier = modifier, snackBarHostState = snackBarHostState, state = state, onClickSignupBtn = viewModel::signup, @@ -68,6 +71,7 @@ fun SignupRoute( @Composable fun SignupScreen( + modifier: Modifier = Modifier, snackBarHostState: SnackbarHostState, state: SignupState = SignupState(), onClickSignupBtn: () -> Unit = {}, @@ -77,8 +81,9 @@ fun SignupScreen( onValueChangeHobby: (String) -> Unit = {}, ) { Scaffold( + modifier = modifier, snackbarHost = { SnackbarHost(hostState = snackBarHostState) } - ) { it -> + ) { Box( modifier = Modifier .fillMaxSize() diff --git a/feature/main/src/main/java/org/sopt/main/signup/navigation/SignupNavigation.kt b/feature/main/src/main/java/org/sopt/main/signup/navigation/SignupNavigation.kt index 827c776..84ce4d3 100644 --- a/feature/main/src/main/java/org/sopt/main/signup/navigation/SignupNavigation.kt +++ b/feature/main/src/main/java/org/sopt/main/signup/navigation/SignupNavigation.kt @@ -1,5 +1,6 @@ package org.sopt.main.signup.navigation +import androidx.compose.ui.Modifier import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.compose.composable @@ -10,10 +11,12 @@ fun NavController.navigateSignup() { } fun NavGraphBuilder.signupNavGraph( + modifier: Modifier = Modifier, navigateLogin: () -> Unit = {}, ) { composable(route = SignupRoute.route) { navBackStackEntry -> SignupRoute( + modifier = modifier, navigateLogin = navigateLogin ) } diff --git a/feature/mypage/src/main/java/org/sopt/mypage/MypageScreen.kt b/feature/mypage/src/main/java/org/sopt/mypage/MypageScreen.kt index 4b72af1..6f8aca1 100644 --- a/feature/mypage/src/main/java/org/sopt/mypage/MypageScreen.kt +++ b/feature/mypage/src/main/java/org/sopt/mypage/MypageScreen.kt @@ -14,6 +14,7 @@ import androidx.compose.material3.SnackbarHost import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -29,10 +30,11 @@ import org.sopt.designsystem.ui.theme.NOWSOPTAndroidTheme @Composable fun MypageRoute( + modifier: Modifier = Modifier, viewModel: MypageViewModel = hiltViewModel(), navigateToLoginScreen: () -> Unit, ) { - val state = viewModel.collectAsState().value + val state by viewModel.collectAsState() val snackBarHostState = remember { SnackbarHostState() } viewModel.collectSideEffect { sideEffect -> @@ -49,6 +51,7 @@ fun MypageRoute( MypageScreen( snackBarHostState = snackBarHostState, + modifier = modifier, onClickLogoutButton = viewModel::logout, onClickWithDrawButton = viewModel::signout, state = state @@ -59,6 +62,7 @@ fun MypageRoute( @Composable fun MypageScreen( snackBarHostState: SnackbarHostState, + modifier: Modifier = Modifier, onClickLogoutButton: () -> Unit = {}, onClickWithDrawButton: () -> Unit = {}, state: MypageState, @@ -67,7 +71,7 @@ fun MypageScreen( snackbarHost = { SnackbarHost(hostState = snackBarHostState) } ) { Box( - modifier = Modifier + modifier = modifier .fillMaxSize() .padding(top = 20.dp, bottom = 20.dp, start = 20.dp, end = 20.dp) ) { diff --git a/feature/mypage/src/main/java/org/sopt/mypage/navigation/MypageNavigation.kt b/feature/mypage/src/main/java/org/sopt/mypage/navigation/MypageNavigation.kt index 6e5bd67..d12870f 100644 --- a/feature/mypage/src/main/java/org/sopt/mypage/navigation/MypageNavigation.kt +++ b/feature/mypage/src/main/java/org/sopt/mypage/navigation/MypageNavigation.kt @@ -1,5 +1,6 @@ package org.sopt.mypage.navigation +import androidx.compose.ui.Modifier import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions @@ -11,10 +12,12 @@ fun NavController.navigateMypage(navOptions: NavOptions) { } fun NavGraphBuilder.MypageNavGraph( + modifier: Modifier = Modifier, navigateToLoginScreen: () -> Unit, ) { composable(route = MypageRoute.route) { navBackStackEntry -> MypageRoute( + modifier = modifier, navigateToLoginScreen = navigateToLoginScreen ) } diff --git a/feature/search/src/main/java/org/sopt/search/SearchScreen.kt b/feature/search/src/main/java/org/sopt/search/SearchScreen.kt index 55a8bfa..c0e9de2 100644 --- a/feature/search/src/main/java/org/sopt/search/SearchScreen.kt +++ b/feature/search/src/main/java/org/sopt/search/SearchScreen.kt @@ -7,7 +7,8 @@ import androidx.compose.ui.Modifier @Composable fun SearchRoute( + modifier: Modifier = Modifier, label: String, ) { - Box(modifier = Modifier.fillMaxSize()) {} + Box(modifier = modifier.fillMaxSize()) {} } \ No newline at end of file diff --git a/feature/search/src/main/java/org/sopt/search/navigation/SearchNavigation.kt b/feature/search/src/main/java/org/sopt/search/navigation/SearchNavigation.kt index 68064ba..e46c12d 100644 --- a/feature/search/src/main/java/org/sopt/search/navigation/SearchNavigation.kt +++ b/feature/search/src/main/java/org/sopt/search/navigation/SearchNavigation.kt @@ -1,5 +1,6 @@ package org.sopt.search.navigation +import androidx.compose.ui.Modifier import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions @@ -11,9 +12,11 @@ fun NavController.navigateSearch(navOptions: NavOptions) { } fun NavGraphBuilder.searchNavGraph( + modifier: Modifier = Modifier, ) { composable(route = SearchRoute.route) { SearchRoute( + modifier = modifier, label = "" ) } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 8b6a18d..d15d3da 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,6 +3,7 @@ android-gradle-plugin = "8.3.1" core-ktx = "1.12.0" junit = "4.13.2" mockito = "3.3.3" +robolectric = "4.9" androidx-test-ext-junit = "1.1.5" androidx-test-runner = "1.5.2" androidx-test = "1.5.0" @@ -36,8 +37,11 @@ kotlin = "1.9.0" kotlinx-coroutines = "1.7.3" kotlinx-serialization-json = "1.5.1" kotlinx-datetime = "0.4.0" +kotlinx-collections = "0.3.7" ktlint = "11.5.1" +javax = "1" + retrofit = "2.9.0" retrofit-kotlinx-serialization-json = "1.0.0" okhttp = "4.11.0" @@ -84,7 +88,7 @@ sopt-android-library = { id = "sopt.android.library", version = "unspecified" } sopt-android-library-compose = { id = "sopt.android.library.compose", version = "unspecified" } sopt-android-hilt = { id = "sopt.android.hilt", version = "unspecified"} sopt-java-library = { id = "sopt.java.library", version = "unspecified" } -sopt-android-test = { id = "sopt.android.test", version = "unspecified" } +sopt-plugin-android-test = { id = "sopt.plugin.android.test", version = "unspecified" } sopt-plugin-feature = { id = "sopt.plugin.feature", version = "unspecified" } sopt-plugin-room = { id = "sopt.plugin.room", version = "unspecified" } sopt-plugin-data = { id = "sopt.plugin.data", version = "unspecified" } @@ -98,6 +102,7 @@ ksp-gradle-plugin = { group = "com.google.devtools.ksp", name = "com.google.devt core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "core-ktx" } junit = { group = "junit", name = "junit", version.ref = "junit" } mockito = { group = "org.mockito", name = "mockito-core", version.ref = "mockito" } +robolectric = { group = "org.robolectric", name = "robolectric", version.ref = "robolectric"} androidx-test-ext-junit = { group = "androidx.test.ext", name = "junit", version.ref = "androidx-test-ext-junit" } androidx-test-runner = { group = "androidx.test", name = "runner", version.ref = "androidx-test-runner" } androidx-test-core = { group = "androidx.test", name = "core", version.ref = "androidx-test" } @@ -138,6 +143,9 @@ kotlinx-coroutines-core = { group = "org.jetbrains.kotlinx", name = "kotlinx-cor kotlinx-serialization-json = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json", version.ref = "kotlinx-serialization-json" } kotlinx-coroutines-test = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-test", version.ref = "kotlinx-coroutines" } kotlinx-datetime = { group = "org.jetbrains.kotlinx", name = "kotlinx-datetime", version.ref = "kotlinx-datetime" } +kotlinx-collections = { group = "org.jetbrains.kotlinx", name = "kotlinx-collections-immutable", version.ref = "kotlinx-collections" } + +javax-inject = {group = "javax.inject", name = "javax.inject", version.ref = "javax" } retrofit-core = { group = "com.squareup.retrofit2", name = "retrofit", version.ref = "retrofit" } retrofit-kotlin-serialization = { group = "com.jakewharton.retrofit", name = "retrofit2-kotlinx-serialization-converter", version.ref = "retrofit-kotlinx-serialization-json" }