@@ -4,8 +4,8 @@ import androidx.browser.customtabs.CustomTabsIntent
44import androidx.compose.foundation.background
55import androidx.compose.foundation.layout.Box
66import androidx.compose.foundation.layout.Column
7+ import androidx.compose.foundation.layout.PaddingValues
78import androidx.compose.foundation.layout.Spacer
8- import androidx.compose.foundation.layout.fillMaxSize
99import androidx.compose.foundation.layout.fillMaxWidth
1010import androidx.compose.foundation.layout.padding
1111import androidx.compose.foundation.lazy.LazyColumn
@@ -30,22 +30,26 @@ import com.terning.core.designsystem.state.UiState
3030import com.terning.core.designsystem.theme.Black
3131import com.terning.core.designsystem.theme.TerningTheme
3232import com.terning.core.designsystem.theme.White
33+ import com.terning.domain.search.entity.SearchBanner
34+ import com.terning.domain.search.entity.SearchPopularAnnouncement
3335import com.terning.feature.search.R
3436import com.terning.feature.search.search.component.ImageSlider
3537import com.terning.feature.search.search.component.InternListType
3638import com.terning.feature.search.search.component.SearchInternList
37- import okhttp3.internal.toImmutableList
39+ import kotlinx.collections.immutable.ImmutableList
40+ import kotlinx.collections.immutable.toImmutableList
3841
3942@Composable
4043fun SearchRoute (
41- modifier : Modifier ,
44+ paddingValues : PaddingValues ,
4245 navigateToSearchProcess : () -> Unit ,
4346 navigateToIntern : (Long ) -> Unit ,
4447 viewModel : SearchViewModel = hiltViewModel(),
4548) {
4649 val lifecycleOwner = LocalLifecycleOwner .current
4750 val context = LocalContext .current
4851
52+ val bannerState by viewModel.bannerState.collectAsStateWithLifecycle(lifecycleOwner = lifecycleOwner)
4953 val viewState by viewModel.viewState.collectAsStateWithLifecycle(lifecycleOwner = lifecycleOwner)
5054 val scrapState by viewModel.scrapState.collectAsStateWithLifecycle(lifecycleOwner = lifecycleOwner)
5155
@@ -54,32 +58,38 @@ fun SearchRoute(
5458 LaunchedEffect (key1 = true ) {
5559 viewModel.getSearchViews()
5660 viewModel.getSearchScraps()
61+ viewModel.getSearchBanners()
5762 }
5863
5964 LaunchedEffect (viewModel.sideEffect, lifecycleOwner) {
6065 viewModel.sideEffect.flowWithLifecycle(lifecycle = lifecycleOwner.lifecycle)
6166 .collect { sideEffect ->
6267 when (sideEffect) {
63- is SearchSideEffect .Toast -> {
68+ is SearchSideEffect .ShowToast -> {
6469 sideEffect.message
6570 }
6671 }
6772 }
6873 }
6974
75+ val bannerList = when (bannerState.searchBannersList) {
76+ is UiState .Success -> (bannerState.searchBannersList as UiState .Success <List <SearchBanner >>).data.toImmutableList()
77+ else -> emptyList<SearchBanner >().toImmutableList()
78+ }
79+
7080 val searchViewsList = when (viewState.searchViewsList) {
71- is UiState .Success -> (viewState.searchViewsList as UiState .Success <List <com.terning.domain.search.entity. SearchPopularAnnouncement >>).data.toImmutableList()
72- else -> emptyList()
81+ is UiState .Success -> (viewState.searchViewsList as UiState .Success <List <SearchPopularAnnouncement >>).data.toImmutableList()
82+ else -> emptyList< SearchPopularAnnouncement >().toImmutableList ()
7383 }
7484
7585 val searchScrapsList = when (scrapState.searchScrapsList) {
76- is UiState .Success -> (scrapState.searchScrapsList as UiState .Success <List <com.terning.domain.search.entity. SearchPopularAnnouncement >>).data.toImmutableList()
77- else -> emptyList()
86+ is UiState .Success -> (scrapState.searchScrapsList as UiState .Success <List <SearchPopularAnnouncement >>).data.toImmutableList()
87+ else -> emptyList< SearchPopularAnnouncement >().toImmutableList ()
7888 }
7989
8090 SearchScreen (
81- modifier = modifier ,
82- bannerList = SearchViewModel . bannerList,
91+ paddingValues = paddingValues ,
92+ bannerList = bannerList,
8393 searchViewsList = searchViewsList,
8494 searchScrapsList = searchScrapsList,
8595 navigateToSearchProcess = {
@@ -96,25 +106,25 @@ fun SearchRoute(
96106 name = " quest_banner"
97107 )
98108 CustomTabsIntent .Builder ().build()
99- .launchUrl(context, SearchViewModel . bannerList[pageIndex].url.toUri())
109+ .launchUrl(context, bannerList[pageIndex].url.toUri())
100110 }
101111 )
102112}
103113
104114@Composable
105115fun SearchScreen (
106- modifier : Modifier = Modifier ,
107- bannerList : List <com.terning.domain.search.entity. SearchBanner >,
108- searchViewsList : List <com.terning.domain.search.entity. SearchPopularAnnouncement >,
109- searchScrapsList : List <com.terning.domain.search.entity. SearchPopularAnnouncement >,
116+ paddingValues : PaddingValues ,
117+ bannerList : ImmutableList < SearchBanner >,
118+ searchViewsList : ImmutableList < SearchPopularAnnouncement >,
119+ searchScrapsList : ImmutableList < SearchPopularAnnouncement >,
110120 navigateToSearchProcess : () -> Unit ,
111121 navigateToIntern : (Long ) -> Unit ,
112122 onAdvertisementClick : (Int ) -> Unit ,
113123) {
114124 Column (
115- modifier = modifier
116- .fillMaxSize()
125+ modifier = Modifier
117126 .background(White )
127+ .padding(paddingValues)
118128 ) {
119129 TerningImage (
120130 painter = R .drawable.ic_terning_logo_typo,
@@ -145,7 +155,7 @@ fun SearchScreen(
145155 LazyColumn {
146156 item {
147157 ImageSlider (
148- images = bannerList,
158+ searchBanners = bannerList,
149159 onAdvertisementClick = onAdvertisementClick,
150160 )
151161
0 commit comments