From 5dac493d89a89375dfbbd8f28d05e5e5a2edec0c Mon Sep 17 00:00:00 2001 From: Hyobeen-Park Date: Fri, 23 Aug 2024 16:55:13 +0900 Subject: [PATCH 01/20] =?UTF-8?q?[REFACTOR/#193]=20navController=20?= =?UTF-8?q?=EC=A0=84=EB=8B=AC=20=EB=B0=A9=EC=8B=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/terning/feature/home/home/HomeRoute.kt | 18 ++++++++---------- .../home/home/component/HomeTodayIntern.kt | 4 ++-- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt b/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt index 15d0c463a..1eeb8b7f3 100644 --- a/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt +++ b/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt @@ -178,7 +178,7 @@ fun HomeRoute( recommendInternList = homeRecommendInternList, homeDialogState = homeDialogState, onChangeFilterClick = { navController.navigateChangeFilter() }, - navController = navController + navigateToIntern = { navController.navigateIntern(announcementId = it) } ) } @@ -192,8 +192,8 @@ fun HomeScreen( recommendInternList: List, homeDialogState: HomeDialogState, onChangeFilterClick: () -> Unit, + navigateToIntern: (Long) -> Unit, viewModel: HomeViewModel = hiltViewModel(), - navController: NavHostController, ) { var sheetState by remember { mutableStateOf(false) } var scrapId by remember { mutableStateOf(-1) } @@ -235,7 +235,7 @@ fun HomeScreen( ShowTodayIntern( homeTodayInternList = homeTodayInternList, homeDialogState = homeDialogState, - navigateToDetail = { navController.navigateIntern(announcementId = it) } + navigateToIntern = { navigateToIntern(it) } ) } } @@ -275,7 +275,7 @@ fun HomeScreen( if (recommendInternList.isNotEmpty()) { items(recommendInternList.size) { index -> RecommendInternItem( - navController = navController, + navigateToIntern = navigateToIntern, intern = recommendInternList[index], onScrapButtonClicked = { viewModel.updateScrapDialogVisible(true) @@ -384,17 +384,15 @@ fun HomeScreen( @Composable private fun RecommendInternItem( - navController: NavHostController, intern: HomeRecommendInternModel, + navigateToIntern: (Long) -> Unit, onScrapButtonClicked: (Long) -> Unit, ) { InternItemWithShadow( modifier = Modifier .padding(horizontal = 24.dp) .noRippleClickable { - navController.navigateIntern( - announcementId = intern.internshipAnnouncementId - ) + navigateToIntern(intern.internshipAnnouncementId) }, imageUrl = intern.companyImage, title = intern.title, @@ -427,7 +425,7 @@ private fun ShowMainTitleWithName(userName: String) { private fun ShowTodayIntern( homeTodayInternList: List, homeDialogState: HomeDialogState, - navigateToDetail: (Long) -> Unit, + navigateToIntern: (Long) -> Unit, ) { if (homeTodayInternList.isEmpty()) { HomeTodayEmptyWithImg() @@ -435,7 +433,7 @@ private fun ShowTodayIntern( HomeTodayIntern( internList = homeTodayInternList, homeDialogState = homeDialogState, - navigateToDetail = { navigateToDetail(it) }, + navigateToIntern = { navigateToIntern(it) }, ) } } diff --git a/feature/src/main/java/com/terning/feature/home/home/component/HomeTodayIntern.kt b/feature/src/main/java/com/terning/feature/home/home/component/HomeTodayIntern.kt index 83b14f432..c7c394c06 100644 --- a/feature/src/main/java/com/terning/feature/home/home/component/HomeTodayIntern.kt +++ b/feature/src/main/java/com/terning/feature/home/home/component/HomeTodayIntern.kt @@ -25,7 +25,7 @@ import com.terning.feature.home.home.model.HomeDialogState fun HomeTodayIntern( internList: List, homeDialogState: HomeDialogState, - navigateToDetail: (Long) -> Unit, + navigateToIntern: (Long) -> Unit, homeViewModel: HomeViewModel = hiltViewModel() ) { var selectedIndex by remember { @@ -73,7 +73,7 @@ fun HomeTodayIntern( stringResource(id = R.string.intern_info_start_date) to startYearMonth, ), navigateTo = { - navigateToDetail(internshipAnnouncementId) + navigateToIntern(internshipAnnouncementId) homeViewModel.updateScrapDialogVisible(false) }, homeTodayInternModel = internList[selectedIndex], From 2fc2aa69c3bf69ac12373d29e1f2232f387d41b5 Mon Sep 17 00:00:00 2001 From: Hyobeen-Park Date: Fri, 23 Aug 2024 16:58:28 +0900 Subject: [PATCH 02/20] =?UTF-8?q?[FEAT/#193]=20HomeState=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/terning/feature/home/home/HomeState.kt | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 feature/src/main/java/com/terning/feature/home/home/HomeState.kt diff --git a/feature/src/main/java/com/terning/feature/home/home/HomeState.kt b/feature/src/main/java/com/terning/feature/home/home/HomeState.kt new file mode 100644 index 000000000..04f2ee4cb --- /dev/null +++ b/feature/src/main/java/com/terning/feature/home/home/HomeState.kt @@ -0,0 +1,15 @@ +package com.terning.feature.home.home + +import com.terning.core.state.UiState +import com.terning.domain.entity.response.HomeFilteringInfoModel +import com.terning.domain.entity.response.HomeRecommendInternModel +import com.terning.domain.entity.response.HomeTodayInternModel +import com.terning.feature.home.home.model.SortBy + +data class HomeState( + val sortBy: SortBy = SortBy.EARLIEST, + val homeUserNameState: UiState = UiState.Loading, + val homeFilteringInfoState: UiState = UiState.Loading, + val homeTodayInternState: UiState> = UiState.Loading, + val homeRecommendInternState: UiState> = UiState.Loading, +) From 0640f991d058690369c5f34d9e95872f23b55455 Mon Sep 17 00:00:00 2001 From: Hyobeen-Park Date: Fri, 23 Aug 2024 16:59:18 +0900 Subject: [PATCH 03/20] =?UTF-8?q?[REFACTOR/#193]=20=EC=9C=A0=EC=A0=80=20?= =?UTF-8?q?=EC=9D=B4=EB=A6=84=20=EB=A1=9C=EC=A7=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/terning/feature/home/home/HomeRoute.kt | 6 +++--- .../terning/feature/home/home/HomeViewModel.kt | 15 +++++++++------ 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt b/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt index 1eeb8b7f3..0488c93de 100644 --- a/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt +++ b/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt @@ -96,10 +96,10 @@ fun HomeRoute( val lifecycleOwner = LocalLifecycleOwner.current val context = LocalContext.current + val homeState by viewModel.homeState.collectAsStateWithLifecycle() val homeTodayState by viewModel.homeTodayState.collectAsStateWithLifecycle() val homeRecommendInternState by viewModel.homeRecommendInternState.collectAsStateWithLifecycle() val homeFilteringState by viewModel.homeFilteringState.collectAsStateWithLifecycle() - val homeUserState by viewModel.homeUserState.collectAsStateWithLifecycle() val homeDialogState by viewModel.homeDialogState.collectAsStateWithLifecycle() val homeTodayInternList: MutableState> = remember { @@ -165,8 +165,8 @@ fun HomeRoute( else -> HomeFilteringInfoModel(null, null, viewModel.currentYear, viewModel.currentMonth) } - val homeUserName = when (homeUserState) { - is UiState.Success -> (homeUserState as UiState.Success).data + val homeUserName = when (homeState.homeUserNameState) { + is UiState.Success -> (homeState.homeUserNameState as UiState.Success).data else -> "" } diff --git a/feature/src/main/java/com/terning/feature/home/home/HomeViewModel.kt b/feature/src/main/java/com/terning/feature/home/home/HomeViewModel.kt index 5e56342f3..7fc0907e9 100644 --- a/feature/src/main/java/com/terning/feature/home/home/HomeViewModel.kt +++ b/feature/src/main/java/com/terning/feature/home/home/HomeViewModel.kt @@ -5,8 +5,8 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.terning.core.designsystem.theme.CalRed import com.terning.core.state.UiState -import com.terning.domain.entity.request.ChangeFilteringRequestModel import com.terning.domain.entity.CalendarScrapRequest +import com.terning.domain.entity.request.ChangeFilteringRequestModel import com.terning.domain.entity.response.HomeFilteringInfoModel import com.terning.domain.entity.response.HomeRecommendInternModel import com.terning.domain.entity.response.HomeTodayInternModel @@ -35,6 +35,9 @@ class HomeViewModel @Inject constructor( val currentYear = Calendar.getInstance().get(Calendar.YEAR) val currentMonth = Calendar.getInstance().get(Calendar.MONTH) + private val _homeState: MutableStateFlow = MutableStateFlow(HomeState()) + val homeState get() = _homeState.asStateFlow() + private val _homeSideEffect = MutableSharedFlow() val homeSideEffect get() = _homeSideEffect.asSharedFlow() @@ -53,9 +56,6 @@ class HomeViewModel @Inject constructor( private val _homeSortByState = MutableStateFlow(0) val homeSortByState get() = _homeSortByState.asStateFlow() - private val _homeUserState = MutableStateFlow>(UiState.Loading) - val homeUserState get() = _homeUserState.asStateFlow() - private val _homeDialogState: MutableStateFlow = MutableStateFlow(HomeDialogState()) val homeDialogState get() = _homeDialogState.asStateFlow() @@ -115,9 +115,12 @@ class HomeViewModel @Inject constructor( private fun getProfile() { viewModelScope.launch { myPageRepository.getProfile().onSuccess { response -> - _homeUserState.value = UiState.Success(response.name) + _homeState.value = _homeState.value.copy( + homeUserNameState = UiState.Success(response.name) + ) }.onFailure { exception: Throwable -> - _homeUserState.value = UiState.Failure(exception.message ?: "") + _homeState.value = + _homeState.value.copy(homeUserNameState = UiState.Failure(exception.toString())) _homeSideEffect.emit(HomeSideEffect.ShowToast(R.string.server_failure)) } } From 6f3379f15bf88a4ad319fadd51561c1843698c7b Mon Sep 17 00:00:00 2001 From: Hyobeen-Park Date: Fri, 23 Aug 2024 17:07:09 +0900 Subject: [PATCH 04/20] =?UTF-8?q?[REFACTOR/#193]=20=ED=95=84=ED=84=B0?= =?UTF-8?q?=EB=A7=81=20=EC=A0=95=EB=B3=B4=20=EB=A1=9C=EC=A7=81=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../terning/feature/home/home/HomeRoute.kt | 47 +++++++++---------- .../feature/home/home/HomeViewModel.kt | 13 +++-- 2 files changed, 29 insertions(+), 31 deletions(-) diff --git a/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt b/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt index 0488c93de..f4a42f9db 100644 --- a/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt +++ b/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt @@ -99,7 +99,6 @@ fun HomeRoute( val homeState by viewModel.homeState.collectAsStateWithLifecycle() val homeTodayState by viewModel.homeTodayState.collectAsStateWithLifecycle() val homeRecommendInternState by viewModel.homeRecommendInternState.collectAsStateWithLifecycle() - val homeFilteringState by viewModel.homeFilteringState.collectAsStateWithLifecycle() val homeDialogState by viewModel.homeDialogState.collectAsStateWithLifecycle() val homeTodayInternList: MutableState> = remember { @@ -117,24 +116,24 @@ fun HomeRoute( } } - LaunchedEffect(homeFilteringState, currentSortBy.value) { - when (homeFilteringState) { - is UiState.Success -> - with((homeFilteringState as UiState.Success).data) { - viewModel.getRecommendInternsData( - currentSortBy.value, - startYear ?: viewModel.currentYear, - startMonth ?: viewModel.currentMonth - ) - } - - else -> {} - } - } - - LaunchedEffect(homeFilteringState) { - viewModel.getHomeTodayInternList() - } +// LaunchedEffect(homeFilteringState, currentSortBy.value) { +// when (homeFilteringState) { +// is UiState.Success -> +// with((homeFilteringState as UiState.Success).data) { +// viewModel.getRecommendInternsData( +// currentSortBy.value, +// startYear ?: viewModel.currentYear, +// startMonth ?: viewModel.currentMonth +// ) +// } +// +// else -> {} +// } +// } +// +// LaunchedEffect(homeFilteringState) { +// viewModel.getHomeTodayInternList() +// } LaunchedEffect(key1 = true) { viewModel.getFilteringInfo() @@ -160,16 +159,16 @@ fun HomeRoute( else -> emptyList() } - val homeFilteringInfo = when (homeFilteringState) { - is UiState.Success -> (homeFilteringState as UiState.Success).data - else -> HomeFilteringInfoModel(null, null, viewModel.currentYear, viewModel.currentMonth) - } - val homeUserName = when (homeState.homeUserNameState) { is UiState.Success -> (homeState.homeUserNameState as UiState.Success).data else -> "" } + val homeFilteringInfo = when (homeState.homeFilteringInfoState) { + is UiState.Success -> (homeState.homeFilteringInfoState as UiState.Success).data + else -> HomeFilteringInfoModel(null, null, null, null) + } + HomeScreen( currentSortBy, homeUserName = homeUserName, diff --git a/feature/src/main/java/com/terning/feature/home/home/HomeViewModel.kt b/feature/src/main/java/com/terning/feature/home/home/HomeViewModel.kt index 7fc0907e9..5fc6aa694 100644 --- a/feature/src/main/java/com/terning/feature/home/home/HomeViewModel.kt +++ b/feature/src/main/java/com/terning/feature/home/home/HomeViewModel.kt @@ -49,10 +49,6 @@ class HomeViewModel @Inject constructor( MutableStateFlow>>(UiState.Loading) val homeRecommendInternState get() = _homeRecommendInternState.asStateFlow() - private val _homeFilteringState = - MutableStateFlow>(UiState.Loading) - val homeFilteringState get() = _homeFilteringState.asStateFlow() - private val _homeSortByState = MutableStateFlow(0) val homeSortByState get() = _homeSortByState.asStateFlow() @@ -91,12 +87,15 @@ class HomeViewModel @Inject constructor( } fun getFilteringInfo() { - _homeFilteringState.value = UiState.Loading viewModelScope.launch { homeRepository.getFilteringInfo().onSuccess { filteringInfo -> - _homeFilteringState.value = UiState.Success(filteringInfo) + _homeState.value = _homeState.value.copy( + homeFilteringInfoState = UiState.Success(filteringInfo) + ) }.onFailure { exception: Throwable -> - _homeFilteringState.value = UiState.Failure(exception.message ?: "") + _homeState.value = _homeState.value.copy( + homeFilteringInfoState = UiState.Failure(exception.toString()) + ) _homeSideEffect.emit(HomeSideEffect.ShowToast(R.string.server_failure)) } } From 89b5b604be79fc0555f7bc3872ad4626b5f73bd1 Mon Sep 17 00:00:00 2001 From: Hyobeen-Park Date: Fri, 23 Aug 2024 17:16:43 +0900 Subject: [PATCH 05/20] =?UTF-8?q?[REFACTOR/#193]=20=EC=98=A4=EB=8A=98=20?= =?UTF-8?q?=EB=A7=88=EA=B0=90=20=EA=B3=B5=EA=B3=A0,=20=EB=A7=9F=EC=B6=A4?= =?UTF-8?q?=20=EA=B3=B5=EA=B3=A0=20=EC=B4=88=EA=B8=B0=ED=99=94=20=EB=A1=9C?= =?UTF-8?q?=EC=A7=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/terning/feature/home/home/HomeRoute.kt | 8 -------- .../java/com/terning/feature/home/home/HomeViewModel.kt | 9 +++++++-- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt b/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt index f4a42f9db..b56e7211a 100644 --- a/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt +++ b/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt @@ -130,14 +130,6 @@ fun HomeRoute( // else -> {} // } // } -// -// LaunchedEffect(homeFilteringState) { -// viewModel.getHomeTodayInternList() -// } - - LaunchedEffect(key1 = true) { - viewModel.getFilteringInfo() - } when (homeTodayState) { is UiState.Success -> { diff --git a/feature/src/main/java/com/terning/feature/home/home/HomeViewModel.kt b/feature/src/main/java/com/terning/feature/home/home/HomeViewModel.kt index 5fc6aa694..4bd0919ce 100644 --- a/feature/src/main/java/com/terning/feature/home/home/HomeViewModel.kt +++ b/feature/src/main/java/com/terning/feature/home/home/HomeViewModel.kt @@ -7,7 +7,6 @@ import com.terning.core.designsystem.theme.CalRed import com.terning.core.state.UiState import com.terning.domain.entity.CalendarScrapRequest import com.terning.domain.entity.request.ChangeFilteringRequestModel -import com.terning.domain.entity.response.HomeFilteringInfoModel import com.terning.domain.entity.response.HomeRecommendInternModel import com.terning.domain.entity.response.HomeTodayInternModel import com.terning.domain.repository.HomeRepository @@ -74,7 +73,7 @@ class HomeViewModel @Inject constructor( } } - fun getHomeTodayInternList() { + private fun getHomeTodayInternList() { _homeTodayState.value = UiState.Loading viewModelScope.launch { homeRepository.getHomeTodayInternList().onSuccess { internList -> @@ -92,6 +91,12 @@ class HomeViewModel @Inject constructor( _homeState.value = _homeState.value.copy( homeFilteringInfoState = UiState.Success(filteringInfo) ) + getHomeTodayInternList() + getRecommendInternsData( + sortBy = _homeState.value.sortBy.ordinal, + startYear = filteringInfo.startYear ?: currentYear, + startMonth = filteringInfo.startMonth ?: currentMonth, + ) }.onFailure { exception: Throwable -> _homeState.value = _homeState.value.copy( homeFilteringInfoState = UiState.Failure(exception.toString()) From e62c2b673303101d07084fd7ee68a3e6bf3a8414 Mon Sep 17 00:00:00 2001 From: Hyobeen-Park Date: Fri, 23 Aug 2024 17:17:36 +0900 Subject: [PATCH 06/20] =?UTF-8?q?[CHORE/#193]=20getFilteringInfo()=20?= =?UTF-8?q?=ED=95=A8=EC=88=98=20private=EC=9C=BC=EB=A1=9C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/terning/feature/home/home/HomeViewModel.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/feature/src/main/java/com/terning/feature/home/home/HomeViewModel.kt b/feature/src/main/java/com/terning/feature/home/home/HomeViewModel.kt index 4bd0919ce..9e481915a 100644 --- a/feature/src/main/java/com/terning/feature/home/home/HomeViewModel.kt +++ b/feature/src/main/java/com/terning/feature/home/home/HomeViewModel.kt @@ -85,7 +85,7 @@ class HomeViewModel @Inject constructor( } } - fun getFilteringInfo() { + private fun getFilteringInfo() { viewModelScope.launch { homeRepository.getFilteringInfo().onSuccess { filteringInfo -> _homeState.value = _homeState.value.copy( From b398065562a057359a81b7a0ef163ba19c90899f Mon Sep 17 00:00:00 2001 From: Hyobeen-Park Date: Fri, 23 Aug 2024 17:33:06 +0900 Subject: [PATCH 07/20] =?UTF-8?q?[REFACTOR/#193]=20=EC=98=A4=EB=8A=98=20?= =?UTF-8?q?=EB=A7=88=EA=B0=90=20=EA=B3=B5=EA=B3=A0=20=EB=A1=9C=EC=A7=81=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../terning/feature/home/home/HomeRoute.kt | 44 ++++++++----------- .../feature/home/home/HomeViewModel.kt | 14 +++--- 2 files changed, 25 insertions(+), 33 deletions(-) diff --git a/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt b/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt index b56e7211a..dcc819759 100644 --- a/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt +++ b/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt @@ -97,7 +97,6 @@ fun HomeRoute( val context = LocalContext.current val homeState by viewModel.homeState.collectAsStateWithLifecycle() - val homeTodayState by viewModel.homeTodayState.collectAsStateWithLifecycle() val homeRecommendInternState by viewModel.homeRecommendInternState.collectAsStateWithLifecycle() val homeDialogState by viewModel.homeDialogState.collectAsStateWithLifecycle() @@ -131,18 +130,6 @@ fun HomeRoute( // } // } - when (homeTodayState) { - is UiState.Success -> { - homeTodayInternList.value = - (homeTodayState as UiState.Success>).data - } - - is UiState.Loading -> {} - else -> { - homeTodayInternList.value = emptyList() - } - } - val homeRecommendInternList = when (homeRecommendInternState) { is UiState.Success -> { (homeRecommendInternState as UiState.Success>).data @@ -165,7 +152,7 @@ fun HomeRoute( currentSortBy, homeUserName = homeUserName, homeFilteringInfo = homeFilteringInfo, - homeTodayInternList = homeTodayInternList.value, + homeTodayInternState = homeState.homeTodayInternState, recommendInternList = homeRecommendInternList, homeDialogState = homeDialogState, onChangeFilterClick = { navController.navigateChangeFilter() }, @@ -179,7 +166,7 @@ fun HomeScreen( currentSortBy: MutableState, homeUserName: String, homeFilteringInfo: HomeFilteringInfoModel, - homeTodayInternList: List, + homeTodayInternState: UiState>, recommendInternList: List, homeDialogState: HomeDialogState, onChangeFilterClick: () -> Unit, @@ -224,7 +211,7 @@ fun HomeScreen( ) { ShowMainTitleWithName(homeUserName) ShowTodayIntern( - homeTodayInternList = homeTodayInternList, + homeTodayInternState = homeTodayInternState, homeDialogState = homeDialogState, navigateToIntern = { navigateToIntern(it) } ) @@ -414,18 +401,25 @@ private fun ShowMainTitleWithName(userName: String) { @Composable private fun ShowTodayIntern( - homeTodayInternList: List, + homeTodayInternState: UiState>, homeDialogState: HomeDialogState, navigateToIntern: (Long) -> Unit, ) { - if (homeTodayInternList.isEmpty()) { - HomeTodayEmptyWithImg() - } else { - HomeTodayIntern( - internList = homeTodayInternList, - homeDialogState = homeDialogState, - navigateToIntern = { navigateToIntern(it) }, - ) + when (homeTodayInternState) { + is UiState.Success -> { + if (homeTodayInternState.data.isEmpty()) { + HomeTodayEmptyWithImg() + } else { + HomeTodayIntern( + internList = homeTodayInternState.data, + homeDialogState = homeDialogState, + navigateToIntern = { navigateToIntern(it) }, + ) + } + } + + is UiState.Loading -> HomeTodayEmptyWithImg() + else -> {} } } diff --git a/feature/src/main/java/com/terning/feature/home/home/HomeViewModel.kt b/feature/src/main/java/com/terning/feature/home/home/HomeViewModel.kt index 9e481915a..9f11ab72e 100644 --- a/feature/src/main/java/com/terning/feature/home/home/HomeViewModel.kt +++ b/feature/src/main/java/com/terning/feature/home/home/HomeViewModel.kt @@ -8,7 +8,6 @@ import com.terning.core.state.UiState import com.terning.domain.entity.CalendarScrapRequest import com.terning.domain.entity.request.ChangeFilteringRequestModel import com.terning.domain.entity.response.HomeRecommendInternModel -import com.terning.domain.entity.response.HomeTodayInternModel import com.terning.domain.repository.HomeRepository import com.terning.domain.repository.MyPageRepository import com.terning.domain.repository.ScrapRepository @@ -40,10 +39,6 @@ class HomeViewModel @Inject constructor( private val _homeSideEffect = MutableSharedFlow() val homeSideEffect get() = _homeSideEffect.asSharedFlow() - private val _homeTodayState = - MutableStateFlow>>(UiState.Loading) - val homeTodayState get() = _homeTodayState.asStateFlow() - private val _homeRecommendInternState = MutableStateFlow>>(UiState.Loading) val homeRecommendInternState get() = _homeRecommendInternState.asStateFlow() @@ -74,12 +69,15 @@ class HomeViewModel @Inject constructor( } private fun getHomeTodayInternList() { - _homeTodayState.value = UiState.Loading viewModelScope.launch { homeRepository.getHomeTodayInternList().onSuccess { internList -> - _homeTodayState.value = UiState.Success(internList) + _homeState.value = _homeState.value.copy( + homeTodayInternState = UiState.Success(internList) + ) }.onFailure { exception: Throwable -> - _homeTodayState.value = UiState.Failure(exception.message ?: "") + _homeState.value = _homeState.value.copy( + homeTodayInternState = UiState.Failure(exception.toString()) + ) _homeSideEffect.emit(HomeSideEffect.ShowToast(R.string.server_failure)) } } From b240a7e9f64fb602acd53bb617f2bba4ca3a51d1 Mon Sep 17 00:00:00 2001 From: Hyobeen-Park Date: Fri, 23 Aug 2024 18:04:56 +0900 Subject: [PATCH 08/20] =?UTF-8?q?[REFACTOR/#193]=20=EB=A7=9E=EC=B6=A4=20?= =?UTF-8?q?=EA=B3=B5=EA=B3=A0=20=EB=A1=9C=EC=A7=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../terning/feature/home/home/HomeRoute.kt | 74 +++++++------------ .../feature/home/home/HomeViewModel.kt | 14 ++-- 2 files changed, 34 insertions(+), 54 deletions(-) diff --git a/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt b/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt index dcc819759..4d2019722 100644 --- a/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt +++ b/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt @@ -97,13 +97,8 @@ fun HomeRoute( val context = LocalContext.current val homeState by viewModel.homeState.collectAsStateWithLifecycle() - val homeRecommendInternState by viewModel.homeRecommendInternState.collectAsStateWithLifecycle() val homeDialogState by viewModel.homeDialogState.collectAsStateWithLifecycle() - val homeTodayInternList: MutableState> = remember { - mutableStateOf(emptyList()) - } - LaunchedEffect(viewModel.homeSideEffect, lifecycleOwner) { viewModel.homeSideEffect.flowWithLifecycle(lifecycle = lifecycleOwner.lifecycle) .collect { sideEffect -> @@ -115,45 +110,17 @@ fun HomeRoute( } } -// LaunchedEffect(homeFilteringState, currentSortBy.value) { -// when (homeFilteringState) { -// is UiState.Success -> -// with((homeFilteringState as UiState.Success).data) { -// viewModel.getRecommendInternsData( -// currentSortBy.value, -// startYear ?: viewModel.currentYear, -// startMonth ?: viewModel.currentMonth -// ) -// } -// -// else -> {} -// } -// } - - val homeRecommendInternList = when (homeRecommendInternState) { - is UiState.Success -> { - (homeRecommendInternState as UiState.Success>).data - } - - else -> emptyList() - } - val homeUserName = when (homeState.homeUserNameState) { is UiState.Success -> (homeState.homeUserNameState as UiState.Success).data else -> "" } - val homeFilteringInfo = when (homeState.homeFilteringInfoState) { - is UiState.Success -> (homeState.homeFilteringInfoState as UiState.Success).data - else -> HomeFilteringInfoModel(null, null, null, null) - } - HomeScreen( currentSortBy, homeUserName = homeUserName, - homeFilteringInfo = homeFilteringInfo, + homeFilteringInfoState = homeState.homeFilteringInfoState, homeTodayInternState = homeState.homeTodayInternState, - recommendInternList = homeRecommendInternList, + homeRecommendInternState = homeState.homeRecommendInternState, homeDialogState = homeDialogState, onChangeFilterClick = { navController.navigateChangeFilter() }, navigateToIntern = { navController.navigateIntern(announcementId = it) } @@ -165,14 +132,24 @@ fun HomeRoute( fun HomeScreen( currentSortBy: MutableState, homeUserName: String, - homeFilteringInfo: HomeFilteringInfoModel, + homeFilteringInfoState: UiState, homeTodayInternState: UiState>, - recommendInternList: List, + homeRecommendInternState: UiState>, homeDialogState: HomeDialogState, onChangeFilterClick: () -> Unit, navigateToIntern: (Long) -> Unit, viewModel: HomeViewModel = hiltViewModel(), ) { + val homeFilteringInfo = when (homeFilteringInfoState) { + is UiState.Success -> homeFilteringInfoState.data + else -> HomeFilteringInfoModel(null, null, null, null) + } + + val homeRecommendInternList = when (homeRecommendInternState) { + is UiState.Success -> homeRecommendInternState.data + else -> listOf() + } + var sheetState by remember { mutableStateOf(false) } var scrapId by remember { mutableStateOf(-1) } @@ -180,6 +157,11 @@ fun HomeScreen( SortingBottomSheet( onDismiss = { sheetState = false + viewModel.getRecommendInternsData( + currentSortBy.value, + homeFilteringInfo.startYear ?: viewModel.currentYear, + homeFilteringInfo.startMonth ?: viewModel.currentMonth, + ) }, currentSortBy = currentSortBy.value, newSortBy = currentSortBy @@ -250,11 +232,11 @@ fun HomeScreen( } } - if (recommendInternList.isNotEmpty()) { - items(recommendInternList.size) { index -> + if (homeRecommendInternList.isNotEmpty()) { + items(homeRecommendInternList.size) { index -> RecommendInternItem( navigateToIntern = navigateToIntern, - intern = recommendInternList[index], + intern = homeRecommendInternList[index], onScrapButtonClicked = { viewModel.updateScrapDialogVisible(true) viewModel.updateIsToday(false) @@ -265,13 +247,13 @@ fun HomeScreen( } } - if (homeFilteringInfo.grade == null) { + if (homeFilteringInfoState is UiState.Success && homeFilteringInfo.grade == null) { HomeFilteringEmptyIntern( modifier = Modifier .padding(horizontal = 24.dp) .fillMaxSize() ) - } else if (recommendInternList.isEmpty()) { + } else if (homeRecommendInternList.isEmpty()) { HomeRecommendEmptyIntern() } } @@ -284,12 +266,12 @@ fun HomeScreen( viewModel.updatePaletteOpen(false) }, content = { - if (recommendInternList[scrapId].scrapId != null) { + if (homeRecommendInternList[scrapId].scrapId != null) { ScrapCancelDialogContent( onClickScrapCancel = { viewModel.updateScrapDialogVisible(false) viewModel.deleteScrap( - recommendInternList[scrapId].scrapId ?: -1, + homeRecommendInternList[scrapId].scrapId ?: -1, ) if (homeDialogState.isScrappedState) { viewModel.getRecommendInternsData( @@ -318,7 +300,7 @@ fun HomeScreen( val selectedColorIndex = colorList.indexOf(homeDialogState.selectedColor).takeIf { it >= 0 } ?: 0 - with(recommendInternList[scrapId]) { + with(homeRecommendInternList[scrapId]) { HomeRecommendInternDialog( internInfoList = listOf( stringResource(id = R.string.intern_info_d_day) to deadline, @@ -337,7 +319,7 @@ fun HomeScreen( viewModel.updateScrapDialogVisible(false) } viewModel.postScrap( - recommendInternList[scrapId].internshipAnnouncementId, + homeRecommendInternList[scrapId].internshipAnnouncementId, selectedColorIndex, ) viewModel.updateScrapDialogVisible(false) diff --git a/feature/src/main/java/com/terning/feature/home/home/HomeViewModel.kt b/feature/src/main/java/com/terning/feature/home/home/HomeViewModel.kt index 9f11ab72e..48bad0f0c 100644 --- a/feature/src/main/java/com/terning/feature/home/home/HomeViewModel.kt +++ b/feature/src/main/java/com/terning/feature/home/home/HomeViewModel.kt @@ -7,7 +7,6 @@ import com.terning.core.designsystem.theme.CalRed import com.terning.core.state.UiState import com.terning.domain.entity.CalendarScrapRequest import com.terning.domain.entity.request.ChangeFilteringRequestModel -import com.terning.domain.entity.response.HomeRecommendInternModel import com.terning.domain.repository.HomeRepository import com.terning.domain.repository.MyPageRepository import com.terning.domain.repository.ScrapRepository @@ -39,10 +38,6 @@ class HomeViewModel @Inject constructor( private val _homeSideEffect = MutableSharedFlow() val homeSideEffect get() = _homeSideEffect.asSharedFlow() - private val _homeRecommendInternState = - MutableStateFlow>>(UiState.Loading) - val homeRecommendInternState get() = _homeRecommendInternState.asStateFlow() - private val _homeSortByState = MutableStateFlow(0) val homeSortByState get() = _homeSortByState.asStateFlow() @@ -56,13 +51,16 @@ class HomeViewModel @Inject constructor( } fun getRecommendInternsData(sortBy: Int, startYear: Int, startMonth: Int) { - _homeRecommendInternState.value = UiState.Loading viewModelScope.launch { homeRepository.getRecommendIntern(SortBy.entries[sortBy].sortBy, startYear, startMonth) .onSuccess { internList -> - _homeRecommendInternState.value = UiState.Success(internList) + _homeState.value = _homeState.value.copy( + homeRecommendInternState = UiState.Success(internList) + ) }.onFailure { exception: Throwable -> - _homeRecommendInternState.value = UiState.Failure(exception.message ?: "") + _homeState.value = _homeState.value.copy( + homeRecommendInternState = UiState.Failure(exception.toString()) + ) _homeSideEffect.emit(HomeSideEffect.ShowToast(R.string.server_failure)) } } From 7e8eb45c6a2cc295f004ee1c138d6c6c00563666 Mon Sep 17 00:00:00 2001 From: Hyobeen-Park Date: Fri, 23 Aug 2024 18:14:21 +0900 Subject: [PATCH 09/20] =?UTF-8?q?[REFACTOR/#193]=20getRecommendInternsData?= =?UTF-8?q?=20=ED=95=A8=EC=88=98=20=ED=8C=8C=EB=9D=BC=EB=AF=B8=ED=84=B0=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/terning/feature/home/home/HomeRoute.kt | 12 ++++++------ .../com/terning/feature/home/home/HomeViewModel.kt | 12 ++++++++---- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt b/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt index 4d2019722..83a70c372 100644 --- a/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt +++ b/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt @@ -159,8 +159,8 @@ fun HomeScreen( sheetState = false viewModel.getRecommendInternsData( currentSortBy.value, - homeFilteringInfo.startYear ?: viewModel.currentYear, - homeFilteringInfo.startMonth ?: viewModel.currentMonth, + homeFilteringInfo.startYear, + homeFilteringInfo.startMonth, ) }, currentSortBy = currentSortBy.value, @@ -276,8 +276,8 @@ fun HomeScreen( if (homeDialogState.isScrappedState) { viewModel.getRecommendInternsData( currentSortBy.value, - homeFilteringInfo.startYear ?: viewModel.currentYear, - homeFilteringInfo.startMonth ?: viewModel.currentMonth, + homeFilteringInfo.startYear, + homeFilteringInfo.startMonth, ) viewModel.updateScrapped(false) } @@ -326,8 +326,8 @@ fun HomeScreen( if (homeDialogState.isScrappedState) { viewModel.getRecommendInternsData( currentSortBy.value, - homeFilteringInfo.startYear ?: viewModel.currentYear, - homeFilteringInfo.startMonth ?: viewModel.currentMonth, + homeFilteringInfo.startYear, + homeFilteringInfo.startMonth, ) viewModel.updateScrapped(false) } diff --git a/feature/src/main/java/com/terning/feature/home/home/HomeViewModel.kt b/feature/src/main/java/com/terning/feature/home/home/HomeViewModel.kt index 48bad0f0c..434d5f45f 100644 --- a/feature/src/main/java/com/terning/feature/home/home/HomeViewModel.kt +++ b/feature/src/main/java/com/terning/feature/home/home/HomeViewModel.kt @@ -50,9 +50,13 @@ class HomeViewModel @Inject constructor( getFilteringInfo() } - fun getRecommendInternsData(sortBy: Int, startYear: Int, startMonth: Int) { + fun getRecommendInternsData(sortBy: Int, startYear: Int?, startMonth: Int?) { viewModelScope.launch { - homeRepository.getRecommendIntern(SortBy.entries[sortBy].sortBy, startYear, startMonth) + homeRepository.getRecommendIntern( + SortBy.entries[sortBy].sortBy, + startYear ?: currentYear, + startMonth ?: currentMonth, + ) .onSuccess { internList -> _homeState.value = _homeState.value.copy( homeRecommendInternState = UiState.Success(internList) @@ -90,8 +94,8 @@ class HomeViewModel @Inject constructor( getHomeTodayInternList() getRecommendInternsData( sortBy = _homeState.value.sortBy.ordinal, - startYear = filteringInfo.startYear ?: currentYear, - startMonth = filteringInfo.startMonth ?: currentMonth, + startYear = filteringInfo.startYear, + startMonth = filteringInfo.startMonth, ) }.onFailure { exception: Throwable -> _homeState.value = _homeState.value.copy( From c39baf40a25c856c560283c9bc3aa7baaea16889 Mon Sep 17 00:00:00 2001 From: Hyobeen-Park Date: Fri, 23 Aug 2024 18:15:22 +0900 Subject: [PATCH 10/20] =?UTF-8?q?[CHORE/#193]=20=EC=82=AC=EC=9A=A9?= =?UTF-8?q?=ED=95=98=EC=A7=80=20=EC=95=8A=EB=8A=94=20=EB=B3=80=EC=88=98=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/terning/feature/home/home/HomeViewModel.kt | 3 --- 1 file changed, 3 deletions(-) diff --git a/feature/src/main/java/com/terning/feature/home/home/HomeViewModel.kt b/feature/src/main/java/com/terning/feature/home/home/HomeViewModel.kt index 434d5f45f..353f7b507 100644 --- a/feature/src/main/java/com/terning/feature/home/home/HomeViewModel.kt +++ b/feature/src/main/java/com/terning/feature/home/home/HomeViewModel.kt @@ -38,9 +38,6 @@ class HomeViewModel @Inject constructor( private val _homeSideEffect = MutableSharedFlow() val homeSideEffect get() = _homeSideEffect.asSharedFlow() - private val _homeSortByState = MutableStateFlow(0) - val homeSortByState get() = _homeSortByState.asStateFlow() - private val _homeDialogState: MutableStateFlow = MutableStateFlow(HomeDialogState()) val homeDialogState get() = _homeDialogState.asStateFlow() From 59284307c2e9b233c99d77e2a6540de95adf3c3b Mon Sep 17 00:00:00 2001 From: Hyobeen-Park Date: Sat, 24 Aug 2024 17:26:25 +0900 Subject: [PATCH 11/20] =?UTF-8?q?[REFACTOR/#193]=20=ED=95=84=ED=84=B0?= =?UTF-8?q?=EB=A7=81=20=EC=9E=AC=EC=84=A4=EC=A0=95=20=EB=B7=B0=20homeState?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../terning/feature/home/changefilter/ChangeFilterRoute.kt | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/feature/src/main/java/com/terning/feature/home/changefilter/ChangeFilterRoute.kt b/feature/src/main/java/com/terning/feature/home/changefilter/ChangeFilterRoute.kt index 2551651dd..70ab1b911 100644 --- a/feature/src/main/java/com/terning/feature/home/changefilter/ChangeFilterRoute.kt +++ b/feature/src/main/java/com/terning/feature/home/changefilter/ChangeFilterRoute.kt @@ -35,7 +35,6 @@ import com.terning.feature.home.changefilter.component.FilteringSubTitleText import com.terning.feature.home.changefilter.navigation.navigateChangeFilter import com.terning.feature.home.home.HomeSideEffect import com.terning.feature.home.home.HomeViewModel -import com.terning.feature.home.home.navigation.navigateHome const val MIN_INDEX = 0 const val MAX_WORKING_INDEX = 2 @@ -49,11 +48,11 @@ fun ChangeFilterRoute( val lifecycleOwner = LocalLifecycleOwner.current val context = LocalContext.current - val filteringState by viewModel.homeFilteringState.collectAsStateWithLifecycle() + val homeState by viewModel.homeState.collectAsStateWithLifecycle() - when (filteringState) { + when (homeState.homeFilteringInfoState) { is UiState.Success -> ChangeFilterScreen( - (filteringState as UiState.Success).data, + (homeState.homeFilteringInfoState as UiState.Success).data, navController, viewModel, ) From e2271c5d61482e296ab2515dec77685c327b4b15 Mon Sep 17 00:00:00 2001 From: Hyobeen-Park Date: Sat, 24 Aug 2024 17:54:59 +0900 Subject: [PATCH 12/20] =?UTF-8?q?[REFACTOR/#193]=20=ED=95=84=ED=84=B0?= =?UTF-8?q?=EB=A7=81=20=EC=9E=AC=EC=84=A4=EC=A0=95=20=EB=B7=B0=20navContro?= =?UTF-8?q?ller=20=EC=A0=84=EB=8B=AC=20=EB=B0=A9=EC=8B=9D=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../feature/home/changefilter/ChangeFilterRoute.kt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/feature/src/main/java/com/terning/feature/home/changefilter/ChangeFilterRoute.kt b/feature/src/main/java/com/terning/feature/home/changefilter/ChangeFilterRoute.kt index 70ab1b911..c7bd59300 100644 --- a/feature/src/main/java/com/terning/feature/home/changefilter/ChangeFilterRoute.kt +++ b/feature/src/main/java/com/terning/feature/home/changefilter/ChangeFilterRoute.kt @@ -52,8 +52,8 @@ fun ChangeFilterRoute( when (homeState.homeFilteringInfoState) { is UiState.Success -> ChangeFilterScreen( - (homeState.homeFilteringInfoState as UiState.Success).data, - navController, + filterData = (homeState.homeFilteringInfoState as UiState.Success).data, + navigateToHome = { navController.popBackStack() }, viewModel, ) @@ -75,7 +75,7 @@ fun ChangeFilterRoute( @Composable fun ChangeFilterScreen( filterData: HomeFilteringInfoModel, - navController: NavController, + navigateToHome: () -> Unit, viewModel: HomeViewModel, ) { var currentGrade by remember { mutableIntStateOf(filterData.grade ?: -1) } @@ -96,7 +96,7 @@ fun ChangeFilterScreen( topBar = { BackButtonTopAppBar( title = stringResource(id = R.string.change_filter_top_bar_title), - onBackButtonClick = { navController.popBackStack() }, + onBackButtonClick = { navigateToHome() }, modifier = Modifier .shadow(elevation = 2.dp) ) From e0714d574b3da55bbba55cfa6ffcfa244d5cf66e Mon Sep 17 00:00:00 2001 From: Hyobeen-Park Date: Sat, 24 Aug 2024 18:05:16 +0900 Subject: [PATCH 13/20] =?UTF-8?q?[REFACTOR/#193]=20=ED=99=88=20=EB=B7=B0?= =?UTF-8?q?=20=ED=95=84=ED=84=B0=EB=A7=81=20=EC=A0=95=EB=B3=B4=20=EC=B4=88?= =?UTF-8?q?=EA=B8=B0=ED=99=94=20=EB=B6=80=EB=B6=84=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/terning/feature/home/home/HomeRoute.kt | 4 ++++ .../main/java/com/terning/feature/home/home/HomeViewModel.kt | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt b/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt index 83a70c372..1ea11b61e 100644 --- a/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt +++ b/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt @@ -99,6 +99,10 @@ fun HomeRoute( val homeState by viewModel.homeState.collectAsStateWithLifecycle() val homeDialogState by viewModel.homeDialogState.collectAsStateWithLifecycle() + LaunchedEffect(key1 = true) { + viewModel.getFilteringInfo() + } + LaunchedEffect(viewModel.homeSideEffect, lifecycleOwner) { viewModel.homeSideEffect.flowWithLifecycle(lifecycle = lifecycleOwner.lifecycle) .collect { sideEffect -> diff --git a/feature/src/main/java/com/terning/feature/home/home/HomeViewModel.kt b/feature/src/main/java/com/terning/feature/home/home/HomeViewModel.kt index 353f7b507..96c958fe1 100644 --- a/feature/src/main/java/com/terning/feature/home/home/HomeViewModel.kt +++ b/feature/src/main/java/com/terning/feature/home/home/HomeViewModel.kt @@ -82,7 +82,7 @@ class HomeViewModel @Inject constructor( } } - private fun getFilteringInfo() { + fun getFilteringInfo() { viewModelScope.launch { homeRepository.getFilteringInfo().onSuccess { filteringInfo -> _homeState.value = _homeState.value.copy( From afe9a289b2875bcd928c4d57580d6d71ebbe8d02 Mon Sep 17 00:00:00 2001 From: Hyobeen-Park Date: Sat, 24 Aug 2024 18:16:28 +0900 Subject: [PATCH 14/20] =?UTF-8?q?[CHORE/#193]=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/terning/feature/home/home/HomeRoute.kt | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt b/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt index 1ea11b61e..91bef4b6d 100644 --- a/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt +++ b/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt @@ -120,14 +120,15 @@ fun HomeRoute( } HomeScreen( - currentSortBy, + currentSortBy = currentSortBy, homeUserName = homeUserName, homeFilteringInfoState = homeState.homeFilteringInfoState, homeTodayInternState = homeState.homeTodayInternState, homeRecommendInternState = homeState.homeRecommendInternState, homeDialogState = homeDialogState, onChangeFilterClick = { navController.navigateChangeFilter() }, - navigateToIntern = { navController.navigateIntern(announcementId = it) } + navigateToIntern = { navController.navigateIntern(announcementId = it) }, + viewModel = viewModel, ) } @@ -142,7 +143,7 @@ fun HomeScreen( homeDialogState: HomeDialogState, onChangeFilterClick: () -> Unit, navigateToIntern: (Long) -> Unit, - viewModel: HomeViewModel = hiltViewModel(), + viewModel: HomeViewModel, ) { val homeFilteringInfo = when (homeFilteringInfoState) { is UiState.Success -> homeFilteringInfoState.data @@ -155,7 +156,7 @@ fun HomeScreen( } var sheetState by remember { mutableStateOf(false) } - var scrapId by remember { mutableStateOf(-1) } + var scrapId by remember { mutableIntStateOf(-1) } if (sheetState) { SortingBottomSheet( From 0a0dfc7a27aa4ff0eee05dcb33a397ac50ef7718 Mon Sep 17 00:00:00 2001 From: Hyobeen-Park Date: Sat, 24 Aug 2024 18:24:02 +0900 Subject: [PATCH 15/20] =?UTF-8?q?[REFACTOR/#193]=20currentSortBy=20?= =?UTF-8?q?=ED=8C=8C=EB=9D=BC=EB=AF=B8=ED=84=B0=20HomeScreen=20=EC=95=88?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/terning/feature/home/home/HomeRoute.kt | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt b/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt index 91bef4b6d..0c84889cd 100644 --- a/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt +++ b/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt @@ -78,7 +78,6 @@ fun HomeRoute( navController: NavHostController, viewModel: HomeViewModel = hiltViewModel(), ) { - val systemUiController = rememberSystemUiController() SideEffect { systemUiController.setStatusBarColor( @@ -89,10 +88,6 @@ fun HomeRoute( ) } - val currentSortBy: MutableState = remember { - mutableIntStateOf(0) - } - val lifecycleOwner = LocalLifecycleOwner.current val context = LocalContext.current @@ -120,7 +115,6 @@ fun HomeRoute( } HomeScreen( - currentSortBy = currentSortBy, homeUserName = homeUserName, homeFilteringInfoState = homeState.homeFilteringInfoState, homeTodayInternState = homeState.homeTodayInternState, @@ -135,7 +129,6 @@ fun HomeRoute( @OptIn(ExperimentalFoundationApi::class) @Composable fun HomeScreen( - currentSortBy: MutableState, homeUserName: String, homeFilteringInfoState: UiState, homeTodayInternState: UiState>, @@ -155,6 +148,7 @@ fun HomeScreen( else -> listOf() } + val currentSortBy: MutableState = remember { mutableIntStateOf(0) } var sheetState by remember { mutableStateOf(false) } var scrapId by remember { mutableIntStateOf(-1) } From c6cf178dd9affdd3f1efbfec3d6cfab614d24b4b Mon Sep 17 00:00:00 2001 From: Hyobeen-Park Date: Mon, 26 Aug 2024 21:43:56 +0900 Subject: [PATCH 16/20] =?UTF-8?q?[CHORE/#193]=20conflict=20=ED=95=B4?= =?UTF-8?q?=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../feature/home/changefilter/ChangeFilterRoute.kt | 1 + .../java/com/terning/feature/home/home/HomeRoute.kt | 13 ++++++++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/feature/src/main/java/com/terning/feature/home/changefilter/ChangeFilterRoute.kt b/feature/src/main/java/com/terning/feature/home/changefilter/ChangeFilterRoute.kt index a99e115dc..ae99fafd4 100644 --- a/feature/src/main/java/com/terning/feature/home/changefilter/ChangeFilterRoute.kt +++ b/feature/src/main/java/com/terning/feature/home/changefilter/ChangeFilterRoute.kt @@ -26,6 +26,7 @@ import com.terning.core.designsystem.component.topappbar.BackButtonTopAppBar import com.terning.core.designsystem.theme.TerningTheme import com.terning.core.extension.toast import com.terning.core.state.UiState +import com.terning.domain.entity.home.HomeFilteringInfo import com.terning.domain.entity.request.ChangeFilteringRequestModel import com.terning.feature.R import com.terning.feature.home.changefilter.component.ChangeFilteringRadioGroup diff --git a/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt b/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt index e2c7948fd..16237d42c 100644 --- a/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt +++ b/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt @@ -56,6 +56,9 @@ import com.terning.core.designsystem.theme.White import com.terning.core.extension.noRippleClickable import com.terning.core.extension.toast import com.terning.core.state.UiState +import com.terning.domain.entity.home.HomeFilteringInfo +import com.terning.domain.entity.home.HomeRecommendIntern +import com.terning.domain.entity.home.HomeTodayIntern import com.terning.feature.R import com.terning.feature.home.changefilter.navigation.navigateChangeFilter import com.terning.feature.home.home.component.HomeFilteringEmptyIntern @@ -127,9 +130,9 @@ fun HomeRoute( @Composable fun HomeScreen( homeUserName: String, - homeFilteringInfoState: UiState, - homeTodayInternState: UiState>, - homeRecommendInternState: UiState>, + homeFilteringInfoState: UiState, + homeTodayInternState: UiState>, + homeRecommendInternState: UiState>, homeDialogState: HomeDialogState, onChangeFilterClick: () -> Unit, navigateToIntern: (Long) -> Unit, @@ -137,7 +140,7 @@ fun HomeScreen( ) { val homeFilteringInfo = when (homeFilteringInfoState) { is UiState.Success -> homeFilteringInfoState.data - else -> HomeFilteringInfoModel(null, null, null, null) + else -> HomeFilteringInfo(null, null, null, null) } val homeRecommendInternList = when (homeRecommendInternState) { @@ -340,7 +343,7 @@ fun HomeScreen( @Composable private fun RecommendInternItem( - intern: HomeRecommendInternModel, + intern: HomeRecommendIntern, navigateToIntern: (Long) -> Unit, onScrapButtonClicked: (Long) -> Unit, ) { From 06810b7970bcc121a8936c862c45f04ca06c5423 Mon Sep 17 00:00:00 2001 From: Hyobeen-Park Date: Mon, 26 Aug 2024 22:02:17 +0900 Subject: [PATCH 17/20] =?UTF-8?q?[CHORE/#193]=20conflict=20=ED=95=B4?= =?UTF-8?q?=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/terning/feature/home/home/HomeState.kt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/feature/src/main/java/com/terning/feature/home/home/HomeState.kt b/feature/src/main/java/com/terning/feature/home/home/HomeState.kt index 04f2ee4cb..fdee536c3 100644 --- a/feature/src/main/java/com/terning/feature/home/home/HomeState.kt +++ b/feature/src/main/java/com/terning/feature/home/home/HomeState.kt @@ -1,15 +1,15 @@ package com.terning.feature.home.home import com.terning.core.state.UiState -import com.terning.domain.entity.response.HomeFilteringInfoModel -import com.terning.domain.entity.response.HomeRecommendInternModel -import com.terning.domain.entity.response.HomeTodayInternModel +import com.terning.domain.entity.home.HomeFilteringInfo +import com.terning.domain.entity.home.HomeRecommendIntern +import com.terning.domain.entity.home.HomeTodayIntern import com.terning.feature.home.home.model.SortBy data class HomeState( val sortBy: SortBy = SortBy.EARLIEST, val homeUserNameState: UiState = UiState.Loading, - val homeFilteringInfoState: UiState = UiState.Loading, - val homeTodayInternState: UiState> = UiState.Loading, - val homeRecommendInternState: UiState> = UiState.Loading, + val homeFilteringInfoState: UiState = UiState.Loading, + val homeTodayInternState: UiState> = UiState.Loading, + val homeRecommendInternState: UiState> = UiState.Loading, ) From 5b3c9834d18eb5935da95fb5c5bd23a2a62eab14 Mon Sep 17 00:00:00 2001 From: Hyobeen-Park Date: Mon, 26 Aug 2024 22:05:39 +0900 Subject: [PATCH 18/20] =?UTF-8?q?[REFACTOR/#193]=20=ED=99=88=20=EB=B7=B0?= =?UTF-8?q?=20scaffold=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../terning/feature/home/home/HomeRoute.kt | 152 +++++++++--------- .../res/drawable/ic_terning_logo_typo.xml | 38 +++++ 2 files changed, 113 insertions(+), 77 deletions(-) create mode 100644 feature/src/main/res/drawable/ic_terning_logo_typo.xml diff --git a/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt b/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt index 16237d42c..6ffa91788 100644 --- a/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt +++ b/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt @@ -12,7 +12,6 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.material3.HorizontalDivider -import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect @@ -23,6 +22,7 @@ import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource @@ -37,8 +37,8 @@ import com.terning.core.designsystem.component.bottomsheet.SortingBottomSheet import com.terning.core.designsystem.component.button.SortingButton import com.terning.core.designsystem.component.dialog.ScrapCancelDialogContent import com.terning.core.designsystem.component.dialog.TerningBasicDialog +import com.terning.core.designsystem.component.image.TerningImage import com.terning.core.designsystem.component.item.InternItemWithShadow -import com.terning.core.designsystem.component.topappbar.LogoTopAppBar import com.terning.core.designsystem.theme.Black import com.terning.core.designsystem.theme.CalBlue1 import com.terning.core.designsystem.theme.CalBlue2 @@ -167,95 +167,93 @@ fun HomeScreen( ) } - Scaffold( - modifier = Modifier, - topBar = { - LogoTopAppBar() - } - ) { paddingValues -> - Column( + Column( + horizontalAlignment = Alignment.Start, + ) { + TerningImage( + painter = R.drawable.ic_terning_logo_typo, modifier = Modifier - .fillMaxSize() - .padding(top = paddingValues.calculateTopPadding()), + .padding(start = 24.dp, top = 16.dp, bottom = 16.dp) + ) + + LazyColumn( + contentPadding = PaddingValues( + top = 2.dp, + bottom = 20.dp, + ), + verticalArrangement = Arrangement.spacedBy(12.dp), + modifier = Modifier + .fillMaxWidth(), ) { - LazyColumn( - contentPadding = PaddingValues( - top = 2.dp, - bottom = 20.dp, - ), - verticalArrangement = Arrangement.spacedBy(12.dp) - ) { - item { - Column( - modifier = Modifier - .padding(bottom = 16.dp) - ) { - ShowMainTitleWithName(homeUserName) - ShowTodayIntern( - homeTodayInternState = homeTodayInternState, - homeDialogState = homeDialogState, - navigateToIntern = { navigateToIntern(it) } - ) - } + item { + Column( + modifier = Modifier + .padding(bottom = 16.dp) + ) { + ShowMainTitleWithName(homeUserName) + ShowTodayIntern( + homeTodayInternState = homeTodayInternState, + homeDialogState = homeDialogState, + navigateToIntern = { navigateToIntern(it) } + ) } - stickyHeader { - Column( + } + stickyHeader { + Column( + modifier = Modifier + .background(White) + ) { + ShowRecommendTitle() + ShowInternFilter(homeFilteringInfo = homeFilteringInfo, onChangeFilterClick) + + HorizontalDivider( + thickness = 4.dp, + color = Grey150, modifier = Modifier - .background(White) - ) { - ShowRecommendTitle() - ShowInternFilter(homeFilteringInfo = homeFilteringInfo, onChangeFilterClick) + .fillMaxWidth(), + ) - HorizontalDivider( - thickness = 4.dp, - color = Grey150, + Row( + modifier = Modifier + .fillMaxWidth(), + horizontalArrangement = Arrangement.End, + ) { + SortingButton( + sortBy = currentSortBy.value, + onCLick = { sheetState = true }, modifier = Modifier - .fillMaxWidth(), + .padding(vertical = 4.dp) ) - - Row( - modifier = Modifier - .fillMaxWidth(), - horizontalArrangement = Arrangement.End, - ) { - SortingButton( - sortBy = currentSortBy.value, - onCLick = { sheetState = true }, - modifier = Modifier - .padding(vertical = 4.dp) - ) - Spacer( - modifier = Modifier.padding(9.dp) - ) - } - } - } - - if (homeRecommendInternList.isNotEmpty()) { - items(homeRecommendInternList.size) { index -> - RecommendInternItem( - navigateToIntern = navigateToIntern, - intern = homeRecommendInternList[index], - onScrapButtonClicked = { - viewModel.updateScrapDialogVisible(true) - viewModel.updateIsToday(false) - scrapId = index - } + Spacer( + modifier = Modifier.padding(9.dp) ) } } } - if (homeFilteringInfoState is UiState.Success && homeFilteringInfo.grade == null) { - HomeFilteringEmptyIntern( - modifier = Modifier - .padding(horizontal = 24.dp) - .fillMaxSize() - ) - } else if (homeRecommendInternList.isEmpty()) { - HomeRecommendEmptyIntern() + if (homeRecommendInternList.isNotEmpty()) { + items(homeRecommendInternList.size) { index -> + RecommendInternItem( + navigateToIntern = navigateToIntern, + intern = homeRecommendInternList[index], + onScrapButtonClicked = { + viewModel.updateScrapDialogVisible(true) + viewModel.updateIsToday(false) + scrapId = index + } + ) + } } } + if (homeFilteringInfoState is UiState.Success && homeFilteringInfo.grade == null) { + HomeFilteringEmptyIntern( + modifier = Modifier + .padding(horizontal = 24.dp) + .fillMaxSize() + ) + } else if (homeRecommendInternList.isEmpty()) { + HomeRecommendEmptyIntern() + } } if (homeDialogState.isScrapDialogVisible && !homeDialogState.isToday) { diff --git a/feature/src/main/res/drawable/ic_terning_logo_typo.xml b/feature/src/main/res/drawable/ic_terning_logo_typo.xml new file mode 100644 index 000000000..4e7d72284 --- /dev/null +++ b/feature/src/main/res/drawable/ic_terning_logo_typo.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + From 710eeeb015c74cede82a421622ba2ec563dbb635 Mon Sep 17 00:00:00 2001 From: Hyobeen-Park Date: Mon, 26 Aug 2024 23:38:20 +0900 Subject: [PATCH 19/20] =?UTF-8?q?[REFACTOR/#193]=20=ED=99=88=20=EB=B7=B0?= =?UTF-8?q?=EB=AA=A8=EB=8D=B8=20=EA=B4=80=EB=A0=A8=20=EB=A1=9C=EC=A7=81=20?= =?UTF-8?q?=ED=99=88=20=EC=8A=A4=ED=81=AC=EB=A6=B0=20=EB=82=B4=EB=B6=80?= =?UTF-8?q?=EB=A1=9C=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../terning/feature/home/home/HomeRoute.kt | 33 ++++++++----------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt b/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt index 6ffa91788..520151c0f 100644 --- a/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt +++ b/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt @@ -91,7 +91,6 @@ fun HomeRoute( val lifecycleOwner = LocalLifecycleOwner.current val context = LocalContext.current - val homeState by viewModel.homeState.collectAsStateWithLifecycle() val homeDialogState by viewModel.homeDialogState.collectAsStateWithLifecycle() LaunchedEffect(key1 = true) { @@ -109,16 +108,7 @@ fun HomeRoute( } } - val homeUserName = when (homeState.homeUserNameState) { - is UiState.Success -> (homeState.homeUserNameState as UiState.Success).data - else -> "" - } - HomeScreen( - homeUserName = homeUserName, - homeFilteringInfoState = homeState.homeFilteringInfoState, - homeTodayInternState = homeState.homeTodayInternState, - homeRecommendInternState = homeState.homeRecommendInternState, homeDialogState = homeDialogState, onChangeFilterClick = { navController.navigateChangeFilter() }, navigateToIntern = { navController.navigateIntern(announcementId = it) }, @@ -129,22 +119,25 @@ fun HomeRoute( @OptIn(ExperimentalFoundationApi::class) @Composable fun HomeScreen( - homeUserName: String, - homeFilteringInfoState: UiState, - homeTodayInternState: UiState>, - homeRecommendInternState: UiState>, homeDialogState: HomeDialogState, onChangeFilterClick: () -> Unit, navigateToIntern: (Long) -> Unit, viewModel: HomeViewModel, ) { - val homeFilteringInfo = when (homeFilteringInfoState) { - is UiState.Success -> homeFilteringInfoState.data + val homeState by viewModel.homeState.collectAsStateWithLifecycle() + + val homeUserName = when (homeState.homeUserNameState) { + is UiState.Success -> (homeState.homeUserNameState as UiState.Success).data + else -> "" + } + + val homeFilteringInfo = when (homeState.homeFilteringInfoState) { + is UiState.Success -> (homeState.homeFilteringInfoState as UiState.Success).data else -> HomeFilteringInfo(null, null, null, null) } - val homeRecommendInternList = when (homeRecommendInternState) { - is UiState.Success -> homeRecommendInternState.data + val homeRecommendInternList = when (homeState.homeRecommendInternState) { + is UiState.Success -> (homeState.homeRecommendInternState as UiState.Success>).data else -> listOf() } @@ -192,7 +185,7 @@ fun HomeScreen( ) { ShowMainTitleWithName(homeUserName) ShowTodayIntern( - homeTodayInternState = homeTodayInternState, + homeTodayInternState = homeState.homeTodayInternState, homeDialogState = homeDialogState, navigateToIntern = { navigateToIntern(it) } ) @@ -245,7 +238,7 @@ fun HomeScreen( } } } - if (homeFilteringInfoState is UiState.Success && homeFilteringInfo.grade == null) { + if (homeState.homeFilteringInfoState is UiState.Success && homeFilteringInfo.grade == null) { HomeFilteringEmptyIntern( modifier = Modifier .padding(horizontal = 24.dp) From 90c1b9be6d6f6b4095c9f2972c76dcbee257c854 Mon Sep 17 00:00:00 2001 From: Hyobeen-Park Date: Fri, 30 Aug 2024 23:37:11 +0900 Subject: [PATCH 20/20] =?UTF-8?q?[CHORE/#193]=20=EC=BD=94=EB=93=9C?= =?UTF-8?q?=EB=A6=AC=EB=B7=B0=20=EB=B0=98=EC=98=81=20=EB=B0=8F=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../terning/feature/home/changefilter/ChangeFilterRoute.kt | 2 +- .../main/java/com/terning/feature/home/home/HomeRoute.kt | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/feature/src/main/java/com/terning/feature/home/changefilter/ChangeFilterRoute.kt b/feature/src/main/java/com/terning/feature/home/changefilter/ChangeFilterRoute.kt index ae99fafd4..ec13a8e4e 100644 --- a/feature/src/main/java/com/terning/feature/home/changefilter/ChangeFilterRoute.kt +++ b/feature/src/main/java/com/terning/feature/home/changefilter/ChangeFilterRoute.kt @@ -96,7 +96,7 @@ fun ChangeFilterScreen( topBar = { BackButtonTopAppBar( title = stringResource(id = R.string.change_filter_top_bar_title), - onBackButtonClick = { navigateToHome() }, + onBackButtonClick = navigateToHome, modifier = Modifier .shadow(elevation = 2.dp) ) diff --git a/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt b/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt index 520151c0f..cc92f3bdf 100644 --- a/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt +++ b/feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt @@ -202,8 +202,6 @@ fun HomeScreen( HorizontalDivider( thickness = 4.dp, color = Grey150, - modifier = Modifier - .fillMaxWidth(), ) Row( @@ -426,7 +424,7 @@ private fun ShowInternFilter( grade = stringResource(id = R.string.home_recommend_no_filtering_hyphen), period = stringResource(id = R.string.home_recommend_no_filtering_hyphen), startYear = stringResource(id = R.string.home_recommend_no_filtering_hyphen), - onChangeFilterClick = { onChangeFilterClick() }, + onChangeFilterClick = onChangeFilterClick, ) } else { with(homeFilteringInfo) { @@ -442,7 +440,7 @@ private fun ShowInternFilter( ), startYear = startYear.toString() + stringResource(id = R.string.home_recommend_filtering_startYear) + " " + startMonth.toString() + stringResource(id = R.string.home_recommend_filtering_startMonth), - onChangeFilterClick = { onChangeFilterClick() }, + onChangeFilterClick = onChangeFilterClick, ) } }