From d2321c264fdace1882ffe1a9630f09addd92c663 Mon Sep 17 00:00:00 2001 From: Naeun Kim <102296721+Nico1eKim@users.noreply.github.com> Date: Fri, 23 May 2025 15:48:11 +0900 Subject: [PATCH 01/27] =?UTF-8?q?[feat]:=20home=20response=20=EC=9E=91?= =?UTF-8?q?=EC=84=B1=20(#64)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/model/home/response/HomeResponse.kt | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 app/src/main/java/com/kuit/ourmenu/data/model/home/response/HomeResponse.kt diff --git a/app/src/main/java/com/kuit/ourmenu/data/model/home/response/HomeResponse.kt b/app/src/main/java/com/kuit/ourmenu/data/model/home/response/HomeResponse.kt new file mode 100644 index 00000000..66aaa96a --- /dev/null +++ b/app/src/main/java/com/kuit/ourmenu/data/model/home/response/HomeResponse.kt @@ -0,0 +1,20 @@ +package com.kuit.ourmenu.data.model.home.response + +import kotlinx.serialization.Serializable + +@Serializable +data class HomeResponse( + val answer: String = "", + val answerRecommendMenus: List = emptyList(), + val tag: String = "", + val tagRecommendMenus: List = emptyList(), + val otherRecommendMenus: List = emptyList(), +) + +@Serializable +data class RecommendMenuList( + val menuId: Int, + val menuName: String, + val menuPrice: Int, + val menuImgUrl: String, +) \ No newline at end of file From af0e423cdf76f83969965e11e65e968704f5dd60 Mon Sep 17 00:00:00 2001 From: Naeun Kim <102296721+Nico1eKim@users.noreply.github.com> Date: Fri, 23 May 2025 15:48:18 +0900 Subject: [PATCH 02/27] =?UTF-8?q?[feat]:=20home=20service=20=EC=9E=91?= =?UTF-8?q?=EC=84=B1=20(#64)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/kuit/ourmenu/data/service/HomeService.kt | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 app/src/main/java/com/kuit/ourmenu/data/service/HomeService.kt diff --git a/app/src/main/java/com/kuit/ourmenu/data/service/HomeService.kt b/app/src/main/java/com/kuit/ourmenu/data/service/HomeService.kt new file mode 100644 index 00000000..baabb72c --- /dev/null +++ b/app/src/main/java/com/kuit/ourmenu/data/service/HomeService.kt @@ -0,0 +1,10 @@ +package com.kuit.ourmenu.data.service + +import com.kuit.ourmenu.data.model.base.BaseResponse +import com.kuit.ourmenu.data.model.home.response.HomeResponse +import retrofit2.http.GET + +interface HomeService { + @GET("api/home") + suspend fun getHome(): BaseResponse +} \ No newline at end of file From 3b39b08afcae4bc5d5ab5c9eab6256383cf46c22 Mon Sep 17 00:00:00 2001 From: Naeun Kim <102296721+Nico1eKim@users.noreply.github.com> Date: Fri, 23 May 2025 15:48:29 +0900 Subject: [PATCH 03/27] =?UTF-8?q?[feat]:=20home=20repository=20=EC=9E=91?= =?UTF-8?q?=EC=84=B1=20(#64)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ourmenu/data/repository/HomeRepository.kt | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 app/src/main/java/com/kuit/ourmenu/data/repository/HomeRepository.kt diff --git a/app/src/main/java/com/kuit/ourmenu/data/repository/HomeRepository.kt b/app/src/main/java/com/kuit/ourmenu/data/repository/HomeRepository.kt new file mode 100644 index 00000000..5d165e8c --- /dev/null +++ b/app/src/main/java/com/kuit/ourmenu/data/repository/HomeRepository.kt @@ -0,0 +1,15 @@ +package com.kuit.ourmenu.data.repository + +import com.kuit.ourmenu.data.model.base.handleBaseResponse +import com.kuit.ourmenu.data.service.HomeService +import javax.inject.Inject +import javax.inject.Singleton + +@Singleton +class HomeRepository @Inject constructor( + private val homeService: HomeService, +) { + suspend fun getHome() = runCatching { + homeService.getHome().handleBaseResponse().getOrThrow() + } +} \ No newline at end of file From 560e0bc7a2abee68b1262ce01650a8fb3585057f Mon Sep 17 00:00:00 2001 From: Naeun Kim <102296721+Nico1eKim@users.noreply.github.com> Date: Fri, 23 May 2025 15:48:36 +0900 Subject: [PATCH 04/27] =?UTF-8?q?[feat]:=20home=20viewmodel=20=EC=9E=91?= =?UTF-8?q?=EC=84=B1=20(#64)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/home/viewmodel/HomeViewModel.kt | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 app/src/main/java/com/kuit/ourmenu/ui/home/viewmodel/HomeViewModel.kt diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/viewmodel/HomeViewModel.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/viewmodel/HomeViewModel.kt new file mode 100644 index 00000000..a3f827f7 --- /dev/null +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/viewmodel/HomeViewModel.kt @@ -0,0 +1,51 @@ +package com.kuit.ourmenu.ui.home.viewmodel + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.kuit.ourmenu.data.model.home.response.HomeResponse +import com.kuit.ourmenu.data.repository.HomeRepository +import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.asStateFlow +import kotlinx.coroutines.launch +import javax.inject.Inject + +@HiltViewModel +class HomeViewModel @Inject constructor( + private val homeRepository: HomeRepository +): ViewModel() { + + private val _home = MutableStateFlow(HomeResponse()) + val home = _home.asStateFlow() + + private val _error: MutableStateFlow = MutableStateFlow(null) + val error = _error.asStateFlow() + + private val _isLoading = MutableStateFlow(false) + val isLoading = _isLoading.asStateFlow() + + init { + getHome() + } + + fun getHome() { + viewModelScope.launch { + _isLoading.value = true + _error.value = null + + homeRepository.getHome() + .fold( + onSuccess = { response -> + if (response != null) { + _home.value = response + } + }, + onFailure = { throwable -> + _error.value = throwable.message ?: "홈을 불러오는 중 오류가 발생했습니다." + } + ) + + _isLoading.value = false + } + } +} \ No newline at end of file From 05c23634c4f842dbe41819581a36498eb7a2e78c Mon Sep 17 00:00:00 2001 From: Naeun Kim <102296721+Nico1eKim@users.noreply.github.com> Date: Fri, 23 May 2025 15:48:42 +0900 Subject: [PATCH 05/27] =?UTF-8?q?[feat]:=20home=20service=20model=20?= =?UTF-8?q?=EC=9E=91=EC=84=B1=20(#64)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/com/kuit/ourmenu/data/di/ServiceModule.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/java/com/kuit/ourmenu/data/di/ServiceModule.kt b/app/src/main/java/com/kuit/ourmenu/data/di/ServiceModule.kt index bede5e88..6c07166a 100644 --- a/app/src/main/java/com/kuit/ourmenu/data/di/ServiceModule.kt +++ b/app/src/main/java/com/kuit/ourmenu/data/di/ServiceModule.kt @@ -3,6 +3,7 @@ package com.kuit.ourmenu.data.di import com.kuit.ourmenu.data.service.AuthService import com.kuit.ourmenu.data.service.CacheService import com.kuit.ourmenu.data.service.DummyService +import com.kuit.ourmenu.data.service.HomeService import com.kuit.ourmenu.data.service.MapService import com.kuit.ourmenu.data.service.MenuFolderService import com.kuit.ourmenu.data.service.UserService @@ -47,4 +48,9 @@ object ServiceModule { fun provideMenuFolderService(retrofit: Retrofit): MenuFolderService = retrofit.create(MenuFolderService::class.java) + @Provides + @Singleton + fun provideHomeService(retrofit: Retrofit): HomeService = + retrofit.create(HomeService::class.java) + } \ No newline at end of file From e59a0c903f269596dcc3767bf6d7fa41817484c6 Mon Sep 17 00:00:00 2001 From: Naeun Kim <102296721+Nico1eKim@users.noreply.github.com> Date: Fri, 23 May 2025 16:39:50 +0900 Subject: [PATCH 06/27] =?UTF-8?q?[refactor]:=20home=20response=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20(#64)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kuit/ourmenu/data/model/home/response/HomeResponse.kt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/kuit/ourmenu/data/model/home/response/HomeResponse.kt b/app/src/main/java/com/kuit/ourmenu/data/model/home/response/HomeResponse.kt index 66aaa96a..d3148a4c 100644 --- a/app/src/main/java/com/kuit/ourmenu/data/model/home/response/HomeResponse.kt +++ b/app/src/main/java/com/kuit/ourmenu/data/model/home/response/HomeResponse.kt @@ -13,8 +13,8 @@ data class HomeResponse( @Serializable data class RecommendMenuList( - val menuId: Int, - val menuName: String, - val menuPrice: Int, - val menuImgUrl: String, + val menuId: Int = 0, + val menuName: String = "", + val menuPrice: Int = 0, // TODO: StoreTitle로 변경 + val menuImgUrl: String = "", ) \ No newline at end of file From c65418f6822d7528082208f7961be2d3a8eb2342 Mon Sep 17 00:00:00 2001 From: Naeun Kim <102296721+Nico1eKim@users.noreply.github.com> Date: Fri, 23 May 2025 16:40:34 +0900 Subject: [PATCH 07/27] =?UTF-8?q?[feat]:=20home=20api=20=EC=97=B0=EA=B2=B0?= =?UTF-8?q?=20=EB=A1=9C=EC=A7=81=20=EC=9E=91=EC=84=B1=20(#64)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kuit/ourmenu/ui/home/screen/HomeScreen.kt | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt index 13b803d0..922fca3f 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt @@ -8,21 +8,34 @@ import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Scaffold import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import androidx.hilt.navigation.compose.hiltViewModel +import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.navigation.compose.rememberNavController import com.kuit.ourmenu.ui.common.topappbar.OurMenuAddButtonTopAppBar import com.kuit.ourmenu.ui.home.component.recommendation.main.HomeMainRecommendation import com.kuit.ourmenu.ui.home.component.recommendation.sub.HomeSubRecommendation -import com.kuit.ourmenu.ui.home.dummy.HomeDummyData +import com.kuit.ourmenu.ui.home.viewmodel.HomeViewModel @Composable -fun HomeScreen(modifier: Modifier = Modifier) { +fun HomeScreen( + // TODO: navagation 연결 + viewModel: HomeViewModel = hiltViewModel() +) { val scrollState = rememberScrollState() + val homeData by viewModel.home.collectAsStateWithLifecycle() + + val answer = homeData.answer + val answerRecommendMenus = homeData.answerRecommendMenus + val tagRecommendMenus = homeData.tagRecommendMenus + val otherRecommendMenus = homeData.otherRecommendMenus + Scaffold( topBar = { OurMenuAddButtonTopAppBar() @@ -38,7 +51,7 @@ fun HomeScreen(modifier: Modifier = Modifier) { HomeMainRecommendation( modifier = Modifier .padding(top = 16.dp, bottom = 29.dp), - homeMainDataList = HomeDummyData.dummyData + homeMainDataList = answerRecommendMenus ) @@ -47,7 +60,7 @@ fun HomeScreen(modifier: Modifier = Modifier) { .fillMaxWidth() .wrapContentHeight() .padding(bottom = 25.dp), - homeSubDataList = HomeDummyData.dummyData + homeSubDataList = tagRecommendMenus ) HomeSubRecommendation( @@ -55,7 +68,7 @@ fun HomeScreen(modifier: Modifier = Modifier) { .fillMaxWidth() .wrapContentHeight() .padding(bottom = 25.dp), - homeSubDataList = HomeDummyData.dummyData + homeSubDataList = otherRecommendMenus ) } } From 28367e20d681141e4ea5644df06b4c200ffc09fb Mon Sep 17 00:00:00 2001 From: Naeun Kim <102296721+Nico1eKim@users.noreply.github.com> Date: Fri, 23 May 2025 16:40:56 +0900 Subject: [PATCH 08/27] =?UTF-8?q?[feat]:=20home=20main=20recommend=20api?= =?UTF-8?q?=20=EC=97=B0=EA=B2=B0=20(#64)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/HomeMainRecommendation.kt | 16 ++-------------- .../main/HomeMainRecommendationItem.kt | 16 +++++++--------- .../main/HomeMainRecommendationList.kt | 7 +++++-- 3 files changed, 14 insertions(+), 25 deletions(-) diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendation.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendation.kt index e2e93266..9508a7fd 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendation.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendation.kt @@ -1,22 +1,19 @@ package com.kuit.ourmenu.ui.home.component.recommendation.main import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Spacer 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.foundation.layout.width import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import com.kuit.ourmenu.ui.home.dummy.HomeDummyData +import com.kuit.ourmenu.data.model.home.response.RecommendMenuList @Composable fun HomeMainRecommendation( modifier: Modifier = Modifier, - homeMainDataList : List + homeMainDataList: List ) { Column( modifier = modifier @@ -37,12 +34,3 @@ fun HomeMainRecommendation( ) } } - -@Preview(showBackground = true) -@Composable -private fun MainRecommendationPreview() { - HomeMainRecommendation( - modifier = Modifier.padding(top = 16.dp), - homeMainDataList = HomeDummyData.dummyData - ) -} diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendationItem.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendationItem.kt index ac655278..22bef1a9 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendationItem.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendationItem.kt @@ -1,6 +1,5 @@ package com.kuit.ourmenu.ui.home.component.recommendation.main -import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth @@ -17,26 +16,25 @@ import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Shadow import androidx.compose.ui.layout.ContentScale -import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.font.FontStyle import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import com.kuit.ourmenu.R -import com.kuit.ourmenu.ui.home.dummy.HomeDummyData +import coil3.compose.AsyncImage +import com.kuit.ourmenu.data.model.home.response.RecommendMenuList import com.kuit.ourmenu.ui.theme.NeutralWhite import com.kuit.ourmenu.ui.theme.ourMenuTypography @Composable fun HomeMainRecommendationItem( modifier: Modifier = Modifier, - recommendData: HomeDummyData + recommendData: RecommendMenuList ) { Box( modifier = modifier, contentAlignment = Alignment.BottomStart ) { - Image( - painter = painterResource(recommendData.imageRes), // TODO : 추후 Async Image Loading 적용 + AsyncImage( + model = recommendData.menuImgUrl, contentDescription = "Main Recommendation Image", contentScale = ContentScale.Crop, modifier = Modifier @@ -55,7 +53,7 @@ fun HomeMainRecommendationItem( contentAlignment = Alignment.CenterStart, // 수직 및 수평 중앙 정렬 ) { Text( - text = recommendData.name, + text = recommendData.menuName, style = ourMenuTypography().pretendard_700_24.copy( shadow = Shadow( color = Color.Black.copy(alpha = 0.2f), // 그림자 색상 및 투명도 @@ -74,7 +72,7 @@ fun HomeMainRecommendationItem( contentAlignment = Alignment.CenterStart, // 수직 및 수평 중앙 정렬 ) { Text( - text = recommendData.store, + text = recommendData.menuPrice.toString(), // TODO: storeTitle로 변경 style = ourMenuTypography().pretendard_600_16.copy( shadow = Shadow( color = Color.Black.copy(alpha = 0.2f), // 그림자 색상 및 투명도 diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendationList.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendationList.kt index cce7aea0..787bdaae 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendationList.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendationList.kt @@ -12,14 +12,17 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp -import com.kuit.ourmenu.ui.home.dummy.HomeDummyData +import com.kuit.ourmenu.data.model.home.response.RecommendMenuList @OptIn(ExperimentalFoundationApi::class) @Composable fun HomeMainRecommendationList( modifier: Modifier = Modifier, - homeMainDataList: List + homeMainDataList: List ) { + // 리스트가 비어있으면 아무것도 표시하지 않음 + if (homeMainDataList.isEmpty()) return + val state = rememberLazyListState() // TODO : hoisting val startIndex = (Int.MAX_VALUE / 2) - (Int.MAX_VALUE / 2) % homeMainDataList.size LaunchedEffect(Unit) { From 8a01f26d04735ac26f9d5358598ae479cf60481f Mon Sep 17 00:00:00 2001 From: Naeun Kim <102296721+Nico1eKim@users.noreply.github.com> Date: Fri, 23 May 2025 16:41:04 +0900 Subject: [PATCH 09/27] =?UTF-8?q?[feat]:=20home=20sub=20recommend=20api=20?= =?UTF-8?q?=EC=97=B0=EA=B2=B0=20(#64)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sub/HomeSubRecommendation.kt | 27 +++---------------- .../sub/HomeSubRecommendationItem.kt | 15 +++++------ .../sub/HomeSubRecommendationList.kt | 6 ++--- 3 files changed, 12 insertions(+), 36 deletions(-) diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendation.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendation.kt index ff4d9451..dbcb2b50 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendation.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendation.kt @@ -1,34 +1,24 @@ package com.kuit.ourmenu.ui.home.component.recommendation.sub import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.foundation.lazy.rememberLazyListState -import androidx.compose.material3.Icon -import androidx.compose.material3.Text import androidx.compose.runtime.Composable -import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.res.painterResource -import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.kuit.ourmenu.R -import com.kuit.ourmenu.ui.home.dummy.HomeDummyData -import com.kuit.ourmenu.ui.theme.Neutral900 -import com.kuit.ourmenu.ui.theme.ourMenuTypography +import com.kuit.ourmenu.data.model.home.response.RecommendMenuList @Composable fun HomeSubRecommendation( modifier: Modifier = Modifier, - homeSubDataList: List = listOf() + homeSubDataList: List ) { val state = rememberLazyListState() // TODO : hoisting Column(modifier = modifier) { - HomeSubRecommendationText( + HomeSubRecommendationText( // TODO: 서버에서 데이터 받아오기 modifier = Modifier .padding(start = 20.dp, end = 20.dp, bottom = 11.dp), icon = R.drawable.ic_home_sub_reco_1, @@ -44,14 +34,3 @@ fun HomeSubRecommendation( ) } } - -@Preview(showBackground = true) -@Composable -private fun HomeSubRecommendationListPreview() { - HomeSubRecommendation( - modifier = Modifier - .fillMaxWidth() - .wrapContentHeight(), - HomeDummyData.dummyData - ) -} diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendationItem.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendationItem.kt index 414e42b4..e5ee00c5 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendationItem.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendationItem.kt @@ -1,6 +1,5 @@ package com.kuit.ourmenu.ui.home.component.recommendation.sub -import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding @@ -11,15 +10,15 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.layout.ContentScale -import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.Font import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import coil3.compose.AsyncImage import com.kuit.ourmenu.R -import com.kuit.ourmenu.ui.home.dummy.HomeDummyData +import com.kuit.ourmenu.data.model.home.response.RecommendMenuList import com.kuit.ourmenu.ui.theme.Neutral700 import com.kuit.ourmenu.ui.theme.Neutral900 import com.kuit.ourmenu.ui.theme.ourMenuTypography @@ -27,13 +26,13 @@ import com.kuit.ourmenu.ui.theme.ourMenuTypography @Composable fun HomeSubRecommendationItem( - recommendData: HomeDummyData + recommendData: RecommendMenuList ) { Column( modifier = Modifier.padding(end = 11.dp) ) { - Image( - painter = painterResource(recommendData.imageRes), + AsyncImage( + model = recommendData.menuImgUrl, contentDescription = "Home Sub Recommendation Image", contentScale = ContentScale.Crop, modifier = Modifier @@ -43,14 +42,14 @@ fun HomeSubRecommendationItem( .clip(shape = RoundedCornerShape(12.dp)) ) Text( - text = recommendData.name, + text = recommendData.menuName, style = ourMenuTypography().pretendard_600_18.copy( color = Neutral900, lineHeight = 27.sp ) ) Text( - text = recommendData.store, + text = recommendData.menuPrice.toString(), // TODO: StoreTitle으로 수정 style = TextStyle( // TODO : Design system 적용 fontSize = 14.sp, diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendationList.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendationList.kt index 27a93cc2..9f1b8b67 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendationList.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendationList.kt @@ -1,20 +1,18 @@ package com.kuit.ourmenu.ui.home.component.recommendation.sub import androidx.compose.foundation.layout.PaddingValues -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.foundation.lazy.LazyListState import androidx.compose.foundation.lazy.LazyRow import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp -import com.kuit.ourmenu.ui.home.dummy.HomeDummyData +import com.kuit.ourmenu.data.model.home.response.RecommendMenuList @Composable fun HomeSubRecommendationList( modifier: Modifier = Modifier, state: LazyListState, - homeSubDataList: List + homeSubDataList: List ) { LazyRow( modifier = modifier, From 966f4a788eccc8e19b893afffe6891d9348610cd Mon Sep 17 00:00:00 2001 From: Naeun Kim <102296721+Nico1eKim@users.noreply.github.com> Date: Sat, 31 May 2025 15:54:01 +0900 Subject: [PATCH 10/27] =?UTF-8?q?[refactor]:=20home=20api=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20=EB=B0=98=EC=98=81=20(#64)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ourmenu/data/model/home/response/HomeResponse.kt | 9 +++++---- .../recommendation/main/HomeMainRecommendationItem.kt | 4 ++-- .../recommendation/sub/HomeSubRecommendationItem.kt | 4 ++-- .../java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt | 2 +- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/kuit/ourmenu/data/model/home/response/HomeResponse.kt b/app/src/main/java/com/kuit/ourmenu/data/model/home/response/HomeResponse.kt index d3148a4c..1bfd959c 100644 --- a/app/src/main/java/com/kuit/ourmenu/data/model/home/response/HomeResponse.kt +++ b/app/src/main/java/com/kuit/ourmenu/data/model/home/response/HomeResponse.kt @@ -4,17 +4,18 @@ import kotlinx.serialization.Serializable @Serializable data class HomeResponse( - val answer: String = "", + val answerImgUrl: String = "", val answerRecommendMenus: List = emptyList(), - val tag: String = "", + val tagRecommendImgUrl: String = "", val tagRecommendMenus: List = emptyList(), + val otherRecommendImgUrl: String = "", val otherRecommendMenus: List = emptyList(), ) @Serializable data class RecommendMenuList( val menuId: Int = 0, - val menuName: String = "", - val menuPrice: Int = 0, // TODO: StoreTitle로 변경 + val menuTitle: String = "", + val storeName: String = "", val menuImgUrl: String = "", ) \ No newline at end of file diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendationItem.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendationItem.kt index 22bef1a9..76c5b253 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendationItem.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendationItem.kt @@ -53,7 +53,7 @@ fun HomeMainRecommendationItem( contentAlignment = Alignment.CenterStart, // 수직 및 수평 중앙 정렬 ) { Text( - text = recommendData.menuName, + text = recommendData.menuTitle, style = ourMenuTypography().pretendard_700_24.copy( shadow = Shadow( color = Color.Black.copy(alpha = 0.2f), // 그림자 색상 및 투명도 @@ -72,7 +72,7 @@ fun HomeMainRecommendationItem( contentAlignment = Alignment.CenterStart, // 수직 및 수평 중앙 정렬 ) { Text( - text = recommendData.menuPrice.toString(), // TODO: storeTitle로 변경 + text = recommendData.storeName, style = ourMenuTypography().pretendard_600_16.copy( shadow = Shadow( color = Color.Black.copy(alpha = 0.2f), // 그림자 색상 및 투명도 diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendationItem.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendationItem.kt index e5ee00c5..76be4931 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendationItem.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendationItem.kt @@ -42,14 +42,14 @@ fun HomeSubRecommendationItem( .clip(shape = RoundedCornerShape(12.dp)) ) Text( - text = recommendData.menuName, + text = recommendData.menuTitle, style = ourMenuTypography().pretendard_600_18.copy( color = Neutral900, lineHeight = 27.sp ) ) Text( - text = recommendData.menuPrice.toString(), // TODO: StoreTitle으로 수정 + text = recommendData.storeName, style = TextStyle( // TODO : Design system 적용 fontSize = 14.sp, diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt index 922fca3f..1539d881 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt @@ -31,7 +31,7 @@ fun HomeScreen( val homeData by viewModel.home.collectAsStateWithLifecycle() - val answer = homeData.answer + val answer = homeData.answerImgUrl val answerRecommendMenus = homeData.answerRecommendMenus val tagRecommendMenus = homeData.tagRecommendMenus val otherRecommendMenus = homeData.otherRecommendMenus From 4a23843e0f3c24667b75f6e89acadef6e0d76625 Mon Sep 17 00:00:00 2001 From: Naeun Kim <102296721+Nico1eKim@users.noreply.github.com> Date: Sat, 31 May 2025 15:56:56 +0900 Subject: [PATCH 11/27] =?UTF-8?q?[chore]:=20=ED=95=84=EC=9A=94=EC=97=86?= =?UTF-8?q?=EB=8A=94=20dummy=20=ED=8C=8C=EC=9D=BC=20=EC=A0=9C=EA=B1=B0=20(?= =?UTF-8?q?#64)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ourmenu/ui/home/dummy/HomeDummyData.kt | 30 ------------------- 1 file changed, 30 deletions(-) delete mode 100644 app/src/main/java/com/kuit/ourmenu/ui/home/dummy/HomeDummyData.kt diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/dummy/HomeDummyData.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/dummy/HomeDummyData.kt deleted file mode 100644 index c89c5c28..00000000 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/dummy/HomeDummyData.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.kuit.ourmenu.ui.home.dummy - -import com.kuit.ourmenu.R - -data class HomeDummyData( - val imageRes: Int, - val name: String, - val store: String, -) { - - companion object { - val dummyData = listOf( - HomeDummyData( - imageRes = R.drawable.img_dummy_pizza, - name = "초코 소프트콘 1", - store = "아이스크림세계할인점", - ), - HomeDummyData( - imageRes = R.drawable.img_dummy_pizza, - name = "초코 소프트콘 2", - store = "아이스크림세계할인점", - ), - HomeDummyData( - imageRes = R.drawable.img_dummy_pizza, - name = "초코 소프트콘 3", - store = "아이스크림세계할인점", - ), - ) - } -} \ No newline at end of file From 779b4b5d40c647dc0068aa54a06c97b567ff8dc2 Mon Sep 17 00:00:00 2001 From: Naeun Kim <102296721+Nico1eKim@users.noreply.github.com> Date: Sat, 31 May 2025 16:15:08 +0900 Subject: [PATCH 12/27] =?UTF-8?q?[refactor]:=20home=20api=20=EC=9D=B4?= =?UTF-8?q?=EB=AF=B8=EC=A7=80=20=EC=88=98=EC=A0=95=20=EB=B0=98=EC=98=81=20?= =?UTF-8?q?(#64)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/deploymentTargetSelector.xml | 25 ------------ .../main/HomeMainRecommendation.kt | 6 +-- .../main/HomeMainRecommendationText.kt | 14 ++----- .../sub/HomeSubRecommendation.kt | 11 +++--- .../sub/HomeSubRecommendationText.kt | 38 +++---------------- .../kuit/ourmenu/ui/home/screen/HomeScreen.kt | 7 +++- 6 files changed, 25 insertions(+), 76 deletions(-) diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml index 5a72f16a..758fd2cd 100644 --- a/.idea/deploymentTargetSelector.xml +++ b/.idea/deploymentTargetSelector.xml @@ -13,31 +13,6 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendation.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendation.kt index 9508a7fd..331870d7 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendation.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendation.kt @@ -4,7 +4,6 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.width import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp @@ -13,6 +12,7 @@ import com.kuit.ourmenu.data.model.home.response.RecommendMenuList @Composable fun HomeMainRecommendation( modifier: Modifier = Modifier, + imgUrl: String = "", homeMainDataList: List ) { Column( @@ -21,8 +21,8 @@ fun HomeMainRecommendation( HomeMainRecommendationText( modifier = Modifier .padding(horizontal = 20.dp) - .width(278.dp) - .height(144.dp) + .height(148.dp), + imgUrl = imgUrl ) HomeMainRecommendationList( diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendationText.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendationText.kt index 51e80d03..0b5f0fa9 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendationText.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendationText.kt @@ -1,24 +1,18 @@ package com.kuit.ourmenu.ui.home.component.recommendation.main -import androidx.compose.foundation.Image -import androidx.compose.foundation.layout.height -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.width import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import androidx.compose.ui.res.painterResource -import androidx.compose.ui.unit.dp -import com.kuit.ourmenu.R +import coil3.compose.AsyncImage @Composable fun HomeMainRecommendationText( modifier: Modifier = Modifier, imgUrl: String = "" ) { - Image( + AsyncImage( modifier = modifier, - painter = painterResource(id = R.drawable.ic_home_reco_1), - contentDescription = "Home Banner" + model = imgUrl, + contentDescription = "Home Banner", ) } diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendation.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendation.kt index dbcb2b50..c0945d90 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendation.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendation.kt @@ -2,27 +2,28 @@ package com.kuit.ourmenu.ui.home.component.recommendation.sub import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp -import com.kuit.ourmenu.R import com.kuit.ourmenu.data.model.home.response.RecommendMenuList @Composable fun HomeSubRecommendation( modifier: Modifier = Modifier, + imgUrl: String = "", homeSubDataList: List ) { val state = rememberLazyListState() // TODO : hoisting Column(modifier = modifier) { - HomeSubRecommendationText( // TODO: 서버에서 데이터 받아오기 + HomeSubRecommendationText( modifier = Modifier - .padding(start = 20.dp, end = 20.dp, bottom = 11.dp), - icon = R.drawable.ic_home_sub_reco_1, - text = "추천 메뉴" + .padding(start = 20.dp, end = 20.dp, bottom = 12.dp) + .height(32.dp), + imgUrl = imgUrl ) HomeSubRecommendationList( diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendationText.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendationText.kt index 83ce0b53..dfabd375 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendationText.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendationText.kt @@ -1,45 +1,19 @@ package com.kuit.ourmenu.ui.home.component.recommendation.sub -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.size -import androidx.compose.material3.Icon -import androidx.compose.material3.Text import androidx.compose.runtime.Composable -import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.res.painterResource -import androidx.compose.ui.unit.dp -import com.kuit.ourmenu.ui.theme.Neutral900 -import com.kuit.ourmenu.ui.theme.ourMenuTypography +import coil3.compose.AsyncImage @Composable fun HomeSubRecommendationText( modifier: Modifier = Modifier, - icon: Int, - text: String, + imgUrl: String = "", ) { - Row( + AsyncImage( modifier = modifier, - verticalAlignment = Alignment.CenterVertically - ) { - // TODO : Async Image Loading - Icon( - painter = painterResource(icon), - modifier = Modifier - .size(32.dp) - .padding(end = 4.dp), - contentDescription = "Home Sub Recommendation 1", - tint = Color.Unspecified - ) - Text( - text = text, - style = ourMenuTypography().pretendard_700_24.copy( - color = Neutral900 - ) - ) - } + model = imgUrl, + contentDescription = "Home Sub Recommendation 1", + ) } diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt index 1539d881..cc7f6979 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt @@ -31,9 +31,11 @@ fun HomeScreen( val homeData by viewModel.home.collectAsStateWithLifecycle() - val answer = homeData.answerImgUrl + val answerImgUrl = homeData.answerImgUrl val answerRecommendMenus = homeData.answerRecommendMenus + val tagRecommendImgUrl = homeData.tagRecommendImgUrl val tagRecommendMenus = homeData.tagRecommendMenus + val otherRecommendImgUrl = homeData.otherRecommendImgUrl val otherRecommendMenus = homeData.otherRecommendMenus Scaffold( @@ -51,6 +53,7 @@ fun HomeScreen( HomeMainRecommendation( modifier = Modifier .padding(top = 16.dp, bottom = 29.dp), + imgUrl = answerImgUrl, homeMainDataList = answerRecommendMenus ) @@ -60,6 +63,7 @@ fun HomeScreen( .fillMaxWidth() .wrapContentHeight() .padding(bottom = 25.dp), + imgUrl = tagRecommendImgUrl, homeSubDataList = tagRecommendMenus ) @@ -68,6 +72,7 @@ fun HomeScreen( .fillMaxWidth() .wrapContentHeight() .padding(bottom = 25.dp), + imgUrl = otherRecommendImgUrl, homeSubDataList = otherRecommendMenus ) } From 321b6dc9e924580ed95ba3a70930ffdcfd2ca4f1 Mon Sep 17 00:00:00 2001 From: Naeun Kim <102296721+Nico1eKim@users.noreply.github.com> Date: Fri, 1 Aug 2025 16:51:42 +0900 Subject: [PATCH 13/27] =?UTF-8?q?[feat]:=20=ED=99=88=ED=99=94=EB=A9=B4?= =?UTF-8?q?=EC=97=90=20=EB=8B=A4=EC=9D=B4=EC=96=BC=EB=A1=9C=EA=B7=B8=20?= =?UTF-8?q?=EB=9C=A8=EB=8F=84=EB=A1=9D=20=ED=95=98=EA=B8=B0=20(#64)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/home/component/dialog/HomeDialog.kt | 31 ++++++++++--------- .../kuit/ourmenu/ui/home/screen/HomeScreen.kt | 17 ++++++++++ .../ui/home/viewmodel/HomeViewModel.kt | 7 +++++ 3 files changed, 40 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/component/dialog/HomeDialog.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/component/dialog/HomeDialog.kt index b5cdff6a..ca657ac3 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/component/dialog/HomeDialog.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/component/dialog/HomeDialog.kt @@ -2,13 +2,11 @@ package com.kuit.ourmenu.ui.home.component.dialog import androidx.compose.foundation.background import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material3.Button import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -28,13 +26,12 @@ import com.kuit.ourmenu.ui.theme.Primary500Main import com.kuit.ourmenu.ui.theme.ourMenuTypography @Composable -fun HomePopUpDialog(modifier: Modifier = Modifier) { - - Dialog( - onDismissRequest = { - // TODO : Dismiss Dialog Event - }, - ) { +fun HomePopUpDialog( + onDismissRequest: () -> Unit, + onPositiveClick: () -> Unit, + onNegativeClick: () -> Unit +) { + Dialog(onDismissRequest = onDismissRequest) { Surface( modifier = Modifier .shadow(elevation = 8.dp) @@ -62,9 +59,7 @@ fun HomePopUpDialog(modifier: Modifier = Modifier) { onDiceClick = { // TODO : Dice Click Event }, - onCloseClick = { - // TODO : Close Click Event - } + onCloseClick = onDismissRequest ) Text( modifier = Modifier @@ -97,7 +92,8 @@ fun HomePopUpDialog(modifier: Modifier = Modifier) { .fillMaxWidth() .height(48.dp), buttonText = "좋아!", - containerColor = Primary500Main + containerColor = Primary500Main, + onClick = onPositiveClick ) DialogBigButton( @@ -106,7 +102,8 @@ fun HomePopUpDialog(modifier: Modifier = Modifier) { .fillMaxWidth() .height(48.dp), buttonText = "별로야..", - containerColor = Primary500Main + containerColor = Primary500Main, + onClick = onNegativeClick ) } } @@ -119,5 +116,9 @@ fun HomePopUpDialog(modifier: Modifier = Modifier) { ) @Composable private fun HomePopUpDialogPreview() { - HomePopUpDialog() + HomePopUpDialog( + onDismissRequest = {}, + onPositiveClick = {}, + onNegativeClick = {} + ) } \ No newline at end of file diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt index cc7f6979..757cd9c0 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt @@ -17,6 +17,7 @@ import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.navigation.compose.rememberNavController import com.kuit.ourmenu.ui.common.topappbar.OurMenuAddButtonTopAppBar +import com.kuit.ourmenu.ui.home.component.dialog.HomePopUpDialog import com.kuit.ourmenu.ui.home.component.recommendation.main.HomeMainRecommendation import com.kuit.ourmenu.ui.home.component.recommendation.sub.HomeSubRecommendation import com.kuit.ourmenu.ui.home.viewmodel.HomeViewModel @@ -31,6 +32,8 @@ fun HomeScreen( val homeData by viewModel.home.collectAsStateWithLifecycle() + val showDialog by viewModel.showDialog.collectAsStateWithLifecycle() + val answerImgUrl = homeData.answerImgUrl val answerRecommendMenus = homeData.answerRecommendMenus val tagRecommendImgUrl = homeData.tagRecommendImgUrl @@ -38,6 +41,20 @@ fun HomeScreen( val otherRecommendImgUrl = homeData.otherRecommendImgUrl val otherRecommendMenus = homeData.otherRecommendMenus + if (showDialog) { + HomePopUpDialog( + onDismissRequest = { viewModel.onDialogDismiss() }, + onPositiveClick = { + // TODO: "좋아!" 버튼 클릭 시 로직 구현 + viewModel.onDialogDismiss() // 로직 처리 후 다이얼로그 닫기 + }, + onNegativeClick = { + // TODO: "별로야.." 버튼 클릭 시 로직 구현 + viewModel.onDialogDismiss() // 로직 처리 후 다이얼로그 닫기 + } + ) + } + Scaffold( topBar = { OurMenuAddButtonTopAppBar() diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/viewmodel/HomeViewModel.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/viewmodel/HomeViewModel.kt index a3f827f7..058b0241 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/viewmodel/HomeViewModel.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/viewmodel/HomeViewModel.kt @@ -18,6 +18,9 @@ class HomeViewModel @Inject constructor( private val _home = MutableStateFlow(HomeResponse()) val home = _home.asStateFlow() + private val _showDialog = MutableStateFlow(true) + val showDialog = _showDialog.asStateFlow() + private val _error: MutableStateFlow = MutableStateFlow(null) val error = _error.asStateFlow() @@ -28,6 +31,10 @@ class HomeViewModel @Inject constructor( getHome() } + fun onDialogDismiss() { + _showDialog.value = false + } + fun getHome() { viewModelScope.launch { _isLoading.value = true From 01f0fa94c6a589fc0ca3dc65a2e9ea8cdf6c9c35 Mon Sep 17 00:00:00 2001 From: Naeun Kim <102296721+Nico1eKim@users.noreply.github.com> Date: Fri, 1 Aug 2025 17:24:35 +0900 Subject: [PATCH 14/27] =?UTF-8?q?[feat]:=20home=20service=EC=97=90=20post?= =?UTF-8?q?=20api=20=EC=B6=94=EA=B0=80=20(#64)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/kuit/ourmenu/data/service/HomeService.kt | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/app/src/main/java/com/kuit/ourmenu/data/service/HomeService.kt b/app/src/main/java/com/kuit/ourmenu/data/service/HomeService.kt index baabb72c..cec9c97f 100644 --- a/app/src/main/java/com/kuit/ourmenu/data/service/HomeService.kt +++ b/app/src/main/java/com/kuit/ourmenu/data/service/HomeService.kt @@ -1,10 +1,22 @@ package com.kuit.ourmenu.data.service import com.kuit.ourmenu.data.model.base.BaseResponse +import com.kuit.ourmenu.data.model.home.request.HomeAnswerRequest +import com.kuit.ourmenu.data.model.home.response.HomeQuestionResponse import com.kuit.ourmenu.data.model.home.response.HomeResponse +import retrofit2.http.Body import retrofit2.http.GET +import retrofit2.http.POST interface HomeService { @GET("api/home") suspend fun getHome(): BaseResponse + + @POST("/api/home/questions") + suspend fun postHomeQuestion(): BaseResponse + + @POST("/api/home/questions/answers") + suspend fun postHomeAnswer( + @Body answerRequest: HomeAnswerRequest + ): BaseResponse } \ No newline at end of file From ad004e051d668b600ce32f5f06e0fc34ae8fe752 Mon Sep 17 00:00:00 2001 From: Naeun Kim <102296721+Nico1eKim@users.noreply.github.com> Date: Fri, 1 Aug 2025 17:25:11 +0900 Subject: [PATCH 15/27] =?UTF-8?q?[feat]:=20home=20request,=20response=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20(#64)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/model/home/request/HomeAnswerRequest.kt | 8 ++++++++ .../model/home/response/HomeQuestionResponse.kt | 15 +++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 app/src/main/java/com/kuit/ourmenu/data/model/home/request/HomeAnswerRequest.kt create mode 100644 app/src/main/java/com/kuit/ourmenu/data/model/home/response/HomeQuestionResponse.kt diff --git a/app/src/main/java/com/kuit/ourmenu/data/model/home/request/HomeAnswerRequest.kt b/app/src/main/java/com/kuit/ourmenu/data/model/home/request/HomeAnswerRequest.kt new file mode 100644 index 00000000..7bedb794 --- /dev/null +++ b/app/src/main/java/com/kuit/ourmenu/data/model/home/request/HomeAnswerRequest.kt @@ -0,0 +1,8 @@ +package com.kuit.ourmenu.data.model.home.request + +import kotlinx.serialization.Serializable + +@Serializable +data class HomeAnswerRequest( + val answer: String +) diff --git a/app/src/main/java/com/kuit/ourmenu/data/model/home/response/HomeQuestionResponse.kt b/app/src/main/java/com/kuit/ourmenu/data/model/home/response/HomeQuestionResponse.kt new file mode 100644 index 00000000..1e733013 --- /dev/null +++ b/app/src/main/java/com/kuit/ourmenu/data/model/home/response/HomeQuestionResponse.kt @@ -0,0 +1,15 @@ +package com.kuit.ourmenu.data.model.home.response + +import kotlinx.serialization.Serializable + +@Serializable +data class HomeQuestionResponse( + val question: String, + val answers: List +) + +@Serializable +data class Answer( + val answer: String, + val answerImgUrl: String +) \ No newline at end of file From 6813ccdf9a7e58336479dde3fbe3ef455a853188 Mon Sep 17 00:00:00 2001 From: Naeun Kim <102296721+Nico1eKim@users.noreply.github.com> Date: Fri, 1 Aug 2025 17:25:24 +0900 Subject: [PATCH 16/27] =?UTF-8?q?[feat]:=20home=20repository=EC=97=90=20po?= =?UTF-8?q?st=20=EC=B6=94=EA=B0=80=20(#64)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kuit/ourmenu/data/repository/HomeRepository.kt | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/app/src/main/java/com/kuit/ourmenu/data/repository/HomeRepository.kt b/app/src/main/java/com/kuit/ourmenu/data/repository/HomeRepository.kt index 5d165e8c..4c5d6fe8 100644 --- a/app/src/main/java/com/kuit/ourmenu/data/repository/HomeRepository.kt +++ b/app/src/main/java/com/kuit/ourmenu/data/repository/HomeRepository.kt @@ -1,6 +1,7 @@ package com.kuit.ourmenu.data.repository import com.kuit.ourmenu.data.model.base.handleBaseResponse +import com.kuit.ourmenu.data.model.home.request.HomeAnswerRequest import com.kuit.ourmenu.data.service.HomeService import javax.inject.Inject import javax.inject.Singleton @@ -12,4 +13,14 @@ class HomeRepository @Inject constructor( suspend fun getHome() = runCatching { homeService.getHome().handleBaseResponse().getOrThrow() } + + suspend fun postHomeQuestion() = runCatching { + homeService.postHomeQuestion().handleBaseResponse().getOrThrow() + } + + suspend fun postHomeAnswer(answer: String) = runCatching { + homeService.postHomeAnswer(HomeAnswerRequest(answer)) + .handleBaseResponse() + .getOrThrow() + } } \ No newline at end of file From 857478cb5cedac6eed948b82c00ad126cff5ede1 Mon Sep 17 00:00:00 2001 From: Naeun Kim <102296721+Nico1eKim@users.noreply.github.com> Date: Fri, 1 Aug 2025 17:27:05 +0900 Subject: [PATCH 17/27] =?UTF-8?q?[feat]:=20home=20viewmodel=20=EC=9E=91?= =?UTF-8?q?=EC=84=B1=20(#64)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/home/viewmodel/HomeViewModel.kt | 46 ++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/viewmodel/HomeViewModel.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/viewmodel/HomeViewModel.kt index 058b0241..20bd5745 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/viewmodel/HomeViewModel.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/viewmodel/HomeViewModel.kt @@ -2,6 +2,7 @@ package com.kuit.ourmenu.ui.home.viewmodel import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope +import com.kuit.ourmenu.data.model.home.response.HomeQuestionResponse import com.kuit.ourmenu.data.model.home.response.HomeResponse import com.kuit.ourmenu.data.repository.HomeRepository import dagger.hilt.android.lifecycle.HiltViewModel @@ -14,6 +15,8 @@ import javax.inject.Inject class HomeViewModel @Inject constructor( private val homeRepository: HomeRepository ): ViewModel() { + private val _questionState = MutableStateFlow(null) + val questionState = _questionState.asStateFlow() private val _home = MutableStateFlow(HomeResponse()) val home = _home.asStateFlow() @@ -28,13 +31,54 @@ class HomeViewModel @Inject constructor( val isLoading = _isLoading.asStateFlow() init { - getHome() + fetchQuestion() + } + + fun selectAnswer(answer: String) { + viewModelScope.launch { + _isLoading.value = true + _error.value = null + + homeRepository.postHomeAnswer(answer) + .fold( + onSuccess = { + getHome() + onDialogDismiss() + }, + onFailure = { throwable -> + _error.value = throwable.message ?: "답변 제출 중 오류가 발생했습니다." + onDialogDismiss() + } + ) + + _isLoading.value = false + } } fun onDialogDismiss() { _showDialog.value = false } + private fun fetchQuestion() { + viewModelScope.launch { + homeRepository.postHomeQuestion() + .fold( + onSuccess = { response -> + _questionState.value = response + if (response == null) { + onDialogDismiss() + getHome() + } + }, + onFailure = { throwable -> + _error.value = throwable.message ?: "질문을 불러오는 중 오류가 발생했습니다." + onDialogDismiss() + getHome() + } + ) + } + } + fun getHome() { viewModelScope.launch { _isLoading.value = true From 845448455f3faee6a04d3b2e92216c649c3bc88d Mon Sep 17 00:00:00 2001 From: Naeun Kim <102296721+Nico1eKim@users.noreply.github.com> Date: Fri, 1 Aug 2025 18:30:23 +0900 Subject: [PATCH 18/27] =?UTF-8?q?[refactor]:=20home=20dialog=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20(#64)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/common/dialog/DialogBigButton.kt | 115 ------------------ .../ui/home/component/dialog/HomeDialog.kt | 94 +++++++++----- .../home/component/dialog/HomeDialogAssets.kt | 8 +- 3 files changed, 65 insertions(+), 152 deletions(-) delete mode 100644 app/src/main/java/com/kuit/ourmenu/ui/common/dialog/DialogBigButton.kt diff --git a/app/src/main/java/com/kuit/ourmenu/ui/common/dialog/DialogBigButton.kt b/app/src/main/java/com/kuit/ourmenu/ui/common/dialog/DialogBigButton.kt deleted file mode 100644 index ed71fa1a..00000000 --- a/app/src/main/java/com/kuit/ourmenu/ui/common/dialog/DialogBigButton.kt +++ /dev/null @@ -1,115 +0,0 @@ -package com.kuit.ourmenu.ui.common.dialog - -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.Spacer -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.foundation.shape.RoundedCornerShape -import androidx.compose.material3.Button -import androidx.compose.material3.ButtonDefaults -import androidx.compose.material3.Icon -import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.res.painterResource -import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.unit.dp -import androidx.compose.ui.unit.sp -import com.kuit.ourmenu.R -import com.kuit.ourmenu.ui.theme.Neutral400 -import com.kuit.ourmenu.ui.theme.NeutralWhite -import com.kuit.ourmenu.ui.theme.Primary500Main -import com.kuit.ourmenu.ui.theme.ourMenuTypography - -/** - * Dialog 에 사용되는 Big Button - * - * Width : fillMaxWidth - * - * Height : 48dp - * - * Padding 값 없음 - * - * Round Corner : 12dp - * - * Text Style : Pretendard 700 20sp - * - * Text Color : NeutralWhite - * - * @param buttonText: 버튼 텍스트 - * @param buttonIcon: 버튼 아이콘 - * @param hasIcon: 아이콘 여부 - * @param containerColor: 버튼 색상 - * */ -@Composable -fun DialogBigButton( - buttonText: String, - modifier: Modifier = Modifier, - hasIcon: Boolean = true, - buttonIcon: String = "", - containerColor: Color, - onClick: () -> Unit = { /* TODO */ } -) { - Button( - onClick = onClick, - modifier = modifier, - shape = RoundedCornerShape(12.dp), - colors = ButtonDefaults.buttonColors( - containerColor = containerColor, - contentColor = NeutralWhite - ) - ) { - Row( - modifier = Modifier.fillMaxWidth(), - horizontalArrangement = Arrangement.Center, - verticalAlignment = Alignment.CenterVertically - ) { - if (hasIcon) { - Icon( - painter = painterResource(R.drawable.img_home_popup_thumbsup), - contentDescription = null, - tint = Color.Unspecified, - modifier = Modifier - .padding(end = 8.dp) - .size(28.dp) - ) - } - Text( - text = buttonText, - style = ourMenuTypography().pretendard_700_20.copy( - fontSize = 18.sp - ) - ) - } - } -} - -@Preview -@Composable -private fun IBBPreview() { - Column { - DialogBigButton( - modifier = Modifier - .fillMaxWidth() - .height(48.dp), - buttonText = "좋아!", - hasIcon = true, - containerColor = Primary500Main - ) - Spacer(modifier = Modifier.height(16.dp)) - DialogBigButton( - modifier = Modifier - .fillMaxWidth() - .height(48.dp), - buttonText = "확인", - hasIcon = false, - containerColor = Neutral400 - ) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/component/dialog/HomeDialog.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/component/dialog/HomeDialog.kt index ca657ac3..da24c181 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/component/dialog/HomeDialog.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/component/dialog/HomeDialog.kt @@ -1,24 +1,34 @@ package com.kuit.ourmenu.ui.home.component.dialog import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.Button +import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.shadow +import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Dialog -import com.kuit.ourmenu.ui.common.dialog.DialogBigButton +import coil3.compose.SubcomposeAsyncImage +import com.kuit.ourmenu.R +import com.kuit.ourmenu.data.model.home.response.Answer +import com.kuit.ourmenu.data.model.home.response.HomeQuestionResponse import com.kuit.ourmenu.ui.theme.Neutral500 import com.kuit.ourmenu.ui.theme.Neutral900 import com.kuit.ourmenu.ui.theme.NeutralWhite @@ -27,9 +37,10 @@ import com.kuit.ourmenu.ui.theme.ourMenuTypography @Composable fun HomePopUpDialog( + questionData: HomeQuestionResponse, onDismissRequest: () -> Unit, - onPositiveClick: () -> Unit, - onNegativeClick: () -> Unit + onAnswerSelected: (String) -> Unit, + onDiceClick: () -> Unit, ) { Dialog(onDismissRequest = onDismissRequest) { Surface( @@ -56,17 +67,14 @@ fun HomePopUpDialog( ) { HomeDialogAssets( - onDiceClick = { - // TODO : Dice Click Event - }, + onDiceClick = onDiceClick, onCloseClick = onDismissRequest ) Text( modifier = Modifier .padding(top = 13.dp) .fillMaxWidth(), - text = "안녕하세요!\n" + - "오늘의 기분은 어떠신가요?", // TODO : 추천 문구 반영 + text = stringResource(R.string.hello) + questionData.question, style = ourMenuTypography().pretendard_700_20.copy( color = Neutral900 ), @@ -76,35 +84,44 @@ fun HomePopUpDialog( modifier = Modifier .padding(top = 13.dp, bottom = 19.dp) .fillMaxWidth(), - text = "질문에 답해 기분에 맞는 메뉴를\n" + - "추천받아보세요!", + text = stringResource(R.string.home_recommend), style = ourMenuTypography().pretendard_500_14.copy( fontWeight = FontWeight(500), color = Neutral500 ), textAlign = TextAlign.Center ) + Column( + modifier = Modifier.fillMaxWidth(), + verticalArrangement = Arrangement.spacedBy(8.dp), + horizontalAlignment = Alignment.CenterHorizontally + ) { + questionData.answers.forEach { answer -> + SubcomposeAsyncImage( + model = answer.answerImgUrl, + contentDescription = answer.answer, + modifier = Modifier + .width(248.dp) + .height(48.dp) + .clickable { onAnswerSelected(answer.answer) }, + loading = { + Button( + modifier = Modifier + .width(248.dp) + .height(48.dp), + shape = RoundedCornerShape(8.dp), + colors = ButtonDefaults.buttonColors( + containerColor = Primary500Main, + contentColor = NeutralWhite + ), + onClick = {} + ) { - DialogBigButton( - modifier = Modifier - .padding(bottom = 8.dp) - .padding(horizontal = 4.dp) - .fillMaxWidth() - .height(48.dp), - buttonText = "좋아!", - containerColor = Primary500Main, - onClick = onPositiveClick - ) - - DialogBigButton( - modifier = Modifier - .padding(horizontal = 4.dp) - .fillMaxWidth() - .height(48.dp), - buttonText = "별로야..", - containerColor = Primary500Main, - onClick = onNegativeClick - ) + } + }, + ) + } + } } } } @@ -117,8 +134,21 @@ fun HomePopUpDialog( @Composable private fun HomePopUpDialogPreview() { HomePopUpDialog( + questionData = HomeQuestionResponse( + question = "스트레스 받을 때는 어떤 음식을 드시나요?", + answers = listOf( + Answer( + "SWEET", + "https://ourmenu-s3-default.s3.ap-northeast-2.amazonaws.com/answers/SWEET.svg" + ), + Answer( + "SPICY", + "https://ourmenu-s3-default.s3.ap-northeast-2.amazonaws.com/answers/SPICY.svg" + ), + ) + ), onDismissRequest = {}, - onPositiveClick = {}, - onNegativeClick = {} + onAnswerSelected = {}, + onDiceClick = {} ) } \ No newline at end of file diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/component/dialog/HomeDialogAssets.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/component/dialog/HomeDialogAssets.kt index f66b7077..d235d722 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/component/dialog/HomeDialogAssets.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/component/dialog/HomeDialogAssets.kt @@ -1,6 +1,7 @@ package com.kuit.ourmenu.ui.home.component.dialog import androidx.compose.foundation.Image +import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer @@ -8,10 +9,7 @@ import androidx.compose.foundation.layout.aspectRatio 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.foundation.layout.width import androidx.compose.material3.Icon -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -20,8 +18,6 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.kuit.ourmenu.R -import com.kuit.ourmenu.ui.theme.Neutral700 -import com.kuit.ourmenu.ui.theme.ourMenuTypography @Composable fun HomeDialogAssets( @@ -49,6 +45,7 @@ fun HomeDialogAssets( modifier = Modifier .aspectRatio(1f) .weight(24f) + .clickable { onCloseClick() } ) } Image( @@ -60,6 +57,7 @@ fun HomeDialogAssets( .padding(horizontal = 82.dp) .fillMaxWidth() .aspectRatio(1f) + .clickable { onDiceClick() } ) // TODO : Add Dice shadow asset } From f88d8234ab0697517efe432858d697f4a3db2127 Mon Sep 17 00:00:00 2001 From: Naeun Kim <102296721+Nico1eKim@users.noreply.github.com> Date: Fri, 1 Aug 2025 18:30:55 +0900 Subject: [PATCH 19/27] =?UTF-8?q?[refactor]:=20home=20dialog=20=EC=A7=88?= =?UTF-8?q?=EB=AC=B8=20=EB=8B=A4=EC=8B=9C=20=EB=B0=9B=EC=95=84=EC=98=A4?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95=20(#64)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/kuit/ourmenu/ui/home/viewmodel/HomeViewModel.kt | 6 ++++++ app/src/main/res/values/strings.xml | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/viewmodel/HomeViewModel.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/viewmodel/HomeViewModel.kt index 20bd5745..046d003d 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/viewmodel/HomeViewModel.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/viewmodel/HomeViewModel.kt @@ -34,6 +34,10 @@ class HomeViewModel @Inject constructor( fetchQuestion() } + fun refreshQuestion() { + fetchQuestion() + } + fun selectAnswer(answer: String) { viewModelScope.launch { _isLoading.value = true @@ -61,6 +65,7 @@ class HomeViewModel @Inject constructor( private fun fetchQuestion() { viewModelScope.launch { + _isLoading.value = true homeRepository.postHomeQuestion() .fold( onSuccess = { response -> @@ -76,6 +81,7 @@ class HomeViewModel @Inject constructor( getHome() } ) + _isLoading.value = false } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a70adc52..59f19642 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -128,4 +128,8 @@ 로그아웃 하시겠습니까? 탈퇴 하시겠습니까? 탈퇴 시 계정 및 이용 기록은 모두 삭제되며,\n삭제된 데이터는 복구가 불가능합니다. + + + 안녕하세요!\n + 질문에 답해 기분에 맞는 메뉴를\n추천받아보세요! \ No newline at end of file From 5268aeea8f96a45036331a82071f22b67a8fc2ce Mon Sep 17 00:00:00 2001 From: Naeun Kim <102296721+Nico1eKim@users.noreply.github.com> Date: Fri, 1 Aug 2025 18:32:04 +0900 Subject: [PATCH 20/27] =?UTF-8?q?[feat]:=20home=20dialog=20api=20=EC=97=B0?= =?UTF-8?q?=EA=B2=B0=20(#64)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kuit/ourmenu/ui/home/screen/HomeScreen.kt | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt index 757cd9c0..00e531a9 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt @@ -8,6 +8,7 @@ import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Scaffold import androidx.compose.runtime.Composable +import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -31,7 +32,7 @@ fun HomeScreen( val scrollState = rememberScrollState() val homeData by viewModel.home.collectAsStateWithLifecycle() - + val questionData by viewModel.questionState.collectAsStateWithLifecycle() val showDialog by viewModel.showDialog.collectAsStateWithLifecycle() val answerImgUrl = homeData.answerImgUrl @@ -41,16 +42,17 @@ fun HomeScreen( val otherRecommendImgUrl = homeData.otherRecommendImgUrl val otherRecommendMenus = homeData.otherRecommendMenus - if (showDialog) { + if (showDialog && questionData != null) { HomePopUpDialog( - onDismissRequest = { viewModel.onDialogDismiss() }, - onPositiveClick = { - // TODO: "좋아!" 버튼 클릭 시 로직 구현 - viewModel.onDialogDismiss() // 로직 처리 후 다이얼로그 닫기 + questionData = questionData!!, + onAnswerSelected = { selectedAnswer -> + viewModel.selectAnswer(selectedAnswer) + }, + onDismissRequest = { + viewModel.dismissDialog() }, - onNegativeClick = { - // TODO: "별로야.." 버튼 클릭 시 로직 구현 - viewModel.onDialogDismiss() // 로직 처리 후 다이얼로그 닫기 + onDiceClick = { + viewModel.refreshQuestion() } ) } From 704fb9fbd3ae5b79532406a9fb978619b18c12d5 Mon Sep 17 00:00:00 2001 From: Naeun Kim <102296721+Nico1eKim@users.noreply.github.com> Date: Fri, 1 Aug 2025 18:33:23 +0900 Subject: [PATCH 21/27] =?UTF-8?q?[fix]:=20=ED=95=A8=EC=88=98=20=EC=9D=B4?= =?UTF-8?q?=EB=A6=84=20=EC=88=98=EC=A0=95=20(#64)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt index 00e531a9..a741ba79 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt @@ -49,7 +49,7 @@ fun HomeScreen( viewModel.selectAnswer(selectedAnswer) }, onDismissRequest = { - viewModel.dismissDialog() + viewModel.onDialogDismiss() }, onDiceClick = { viewModel.refreshQuestion() From 3d2eafe8940412f39c0912a8cf536e3b46a7c331 Mon Sep 17 00:00:00 2001 From: Naeun Kim <102296721+Nico1eKim@users.noreply.github.com> Date: Fri, 1 Aug 2025 18:56:30 +0900 Subject: [PATCH 22/27] =?UTF-8?q?[feat]:=20=EC=8B=9D=EC=82=AC=EC=8B=9C?= =?UTF-8?q?=EA=B0=84=20=EB=90=90=EC=9D=84=20=EB=95=8C=20=EC=A0=95=EB=B3=B4?= =?UTF-8?q?=20=EB=8B=A4=EC=8B=9C=20=EB=B0=9B=EC=95=84=EC=98=A4=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EC=88=98=EC=A0=95=20(#64)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/home/viewmodel/HomeViewModel.kt | 37 +++++++++++++++---- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/viewmodel/HomeViewModel.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/viewmodel/HomeViewModel.kt index 046d003d..92e52235 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/viewmodel/HomeViewModel.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/viewmodel/HomeViewModel.kt @@ -2,6 +2,7 @@ package com.kuit.ourmenu.ui.home.viewmodel import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope +import com.kuit.ourmenu.data.model.base.OurMenuApiFailureException import com.kuit.ourmenu.data.model.home.response.HomeQuestionResponse import com.kuit.ourmenu.data.model.home.response.HomeResponse import com.kuit.ourmenu.data.repository.HomeRepository @@ -47,11 +48,11 @@ class HomeViewModel @Inject constructor( .fold( onSuccess = { getHome() - onDialogDismiss() }, onFailure = { throwable -> _error.value = throwable.message ?: "답변 제출 중 오류가 발생했습니다." onDialogDismiss() + _isLoading.value = false } ) @@ -66,6 +67,8 @@ class HomeViewModel @Inject constructor( private fun fetchQuestion() { viewModelScope.launch { _isLoading.value = true + _error.value = null + homeRepository.postHomeQuestion() .fold( onSuccess = { response -> @@ -73,18 +76,17 @@ class HomeViewModel @Inject constructor( if (response == null) { onDialogDismiss() getHome() + } else { + _isLoading.value = false } }, onFailure = { throwable -> - _error.value = throwable.message ?: "질문을 불러오는 중 오류가 발생했습니다." - onDialogDismiss() - getHome() + handleFailure(throwable) + _isLoading.value = false } ) - _isLoading.value = false } } - fun getHome() { viewModelScope.launch { _isLoading.value = true @@ -96,13 +98,32 @@ class HomeViewModel @Inject constructor( if (response != null) { _home.value = response } + onDialogDismiss() + _isLoading.value = false }, onFailure = { throwable -> - _error.value = throwable.message ?: "홈을 불러오는 중 오류가 발생했습니다." + handleFailure(throwable) + _isLoading.value = false } ) + } + } - _isLoading.value = false + private fun handleFailure(throwable: Throwable) { + when (throwable) { + is OurMenuApiFailureException -> { + if (throwable.code == "H400") { + _showDialog.value = true + fetchQuestion() + } else { + _error.value = throwable.message ?: "알 수 없는 서버 오류입니다." + onDialogDismiss() + } + } + else -> { + _error.value = "네트워크 연결을 확인해주세요." + onDialogDismiss() + } } } } \ No newline at end of file From cfa6c1417b5d4e2b120752c90d606075c18f9646 Mon Sep 17 00:00:00 2001 From: Naeun Kim <102296721+Nico1eKim@users.noreply.github.com> Date: Wed, 13 Aug 2025 14:55:06 +0900 Subject: [PATCH 23/27] =?UTF-8?q?[ui]:=20home=20padding=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20(#64)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ourmenu/ui/home/navigation/HomeNavigation.kt | 1 + .../com/kuit/ourmenu/ui/home/screen/HomeScreen.kt | 15 +++++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/navigation/HomeNavigation.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/navigation/HomeNavigation.kt index 2fecea7e..e32d8738 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/navigation/HomeNavigation.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/navigation/HomeNavigation.kt @@ -18,6 +18,7 @@ fun NavGraphBuilder.homeNavGraph( ) { composable { HomeScreen( + padding = padding, // navigate 이벤트 + 기타 이벤트 ) } diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt index a741ba79..481f020c 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt @@ -1,6 +1,8 @@ package com.kuit.ourmenu.ui.home.screen +import android.annotation.SuppressLint import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.wrapContentHeight @@ -8,7 +10,6 @@ import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Scaffold import androidx.compose.runtime.Composable -import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -23,8 +24,10 @@ import com.kuit.ourmenu.ui.home.component.recommendation.main.HomeMainRecommenda import com.kuit.ourmenu.ui.home.component.recommendation.sub.HomeSubRecommendation import com.kuit.ourmenu.ui.home.viewmodel.HomeViewModel +@SuppressLint("UnusedMaterial3ScaffoldPaddingParameter") @Composable fun HomeScreen( + padding: PaddingValues, // TODO: navagation 연결 viewModel: HomeViewModel = hiltViewModel() ) { @@ -61,10 +64,11 @@ fun HomeScreen( topBar = { OurMenuAddButtonTopAppBar() } - ) { innerPadding -> + ) { Column( modifier = Modifier - .padding(innerPadding) + .padding(padding) +// .padding(innerPadding) .verticalScroll(scrollState), horizontalAlignment = Alignment.Start ) { @@ -105,5 +109,8 @@ fun HomeScreen( @Composable private fun HomeScreenPreview() { val navController = rememberNavController() - HomeScreen() + HomeScreen( + padding = PaddingValues(0.dp), +// viewModel = hiltViewModel(navController = navController) + ) } \ No newline at end of file From 5a5079833cf0283be56447b1b54044574dc26da0 Mon Sep 17 00:00:00 2001 From: Naeun Kim <102296721+Nico1eKim@users.noreply.github.com> Date: Wed, 13 Aug 2025 15:06:47 +0900 Subject: [PATCH 24/27] =?UTF-8?q?[feat]:=20home=EC=97=90=EC=84=9C=20item?= =?UTF-8?q?=20=ED=81=B4=EB=A6=AD=ED=95=98=EB=A9=B4=20menu=20info=EB=A1=9C?= =?UTF-8?q?=20=EB=84=98=EC=96=B4=EA=B0=80=EB=8F=84=EB=A1=9D=20navigation?= =?UTF-8?q?=20=EA=B5=AC=ED=98=84=20(#64)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../recommendation/main/HomeMainRecommendation.kt | 6 ++++-- .../recommendation/main/HomeMainRecommendationItem.kt | 8 ++++++-- .../recommendation/main/HomeMainRecommendationList.kt | 6 ++++-- .../recommendation/sub/HomeSubRecommendation.kt | 6 ++++-- .../recommendation/sub/HomeSubRecommendationItem.kt | 8 ++++++-- .../recommendation/sub/HomeSubRecommendationList.kt | 6 ++++-- .../kuit/ourmenu/ui/home/navigation/HomeNavigation.kt | 4 ++-- .../com/kuit/ourmenu/ui/home/screen/HomeScreen.kt | 11 +++++++---- .../java/com/kuit/ourmenu/ui/navigator/MainNavHost.kt | 1 + 9 files changed, 38 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendation.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendation.kt index 331870d7..6bcc1b52 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendation.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendation.kt @@ -13,7 +13,8 @@ import com.kuit.ourmenu.data.model.home.response.RecommendMenuList fun HomeMainRecommendation( modifier: Modifier = Modifier, imgUrl: String = "", - homeMainDataList: List + homeMainDataList: List, + onItemClick: (Int) -> Unit ) { Column( modifier = modifier @@ -30,7 +31,8 @@ fun HomeMainRecommendation( .fillMaxWidth() .padding(top = 32.dp) .height(244.dp), - homeMainDataList = homeMainDataList + homeMainDataList = homeMainDataList, + onItemClick = onItemClick ) } } diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendationItem.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendationItem.kt index 76c5b253..4b79181a 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendationItem.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendationItem.kt @@ -1,5 +1,6 @@ package com.kuit.ourmenu.ui.home.component.recommendation.main +import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth @@ -27,10 +28,13 @@ import com.kuit.ourmenu.ui.theme.ourMenuTypography @Composable fun HomeMainRecommendationItem( modifier: Modifier = Modifier, - recommendData: RecommendMenuList + recommendData: RecommendMenuList, + onItemClick: (Int) -> Unit ) { Box( - modifier = modifier, + modifier = modifier.clickable{ + onItemClick(recommendData.menuId) + }, contentAlignment = Alignment.BottomStart ) { AsyncImage( diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendationList.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendationList.kt index 787bdaae..dfb37d25 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendationList.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendationList.kt @@ -18,7 +18,8 @@ import com.kuit.ourmenu.data.model.home.response.RecommendMenuList @Composable fun HomeMainRecommendationList( modifier: Modifier = Modifier, - homeMainDataList: List + homeMainDataList: List, + onItemClick: (Int) -> Unit ) { // 리스트가 비어있으면 아무것도 표시하지 않음 if (homeMainDataList.isEmpty()) return @@ -43,7 +44,8 @@ fun HomeMainRecommendationList( .height(244.dp) .width(304.dp) .padding(horizontal = 6.dp), - recommendData = homeMainDataList[itemIndex] + recommendData = homeMainDataList[itemIndex], + onItemClick = onItemClick ) } } diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendation.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendation.kt index c0945d90..d7f956ce 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendation.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendation.kt @@ -15,7 +15,8 @@ import com.kuit.ourmenu.data.model.home.response.RecommendMenuList fun HomeSubRecommendation( modifier: Modifier = Modifier, imgUrl: String = "", - homeSubDataList: List + homeSubDataList: List, + onItemClick: (Int) -> Unit ) { val state = rememberLazyListState() // TODO : hoisting Column(modifier = modifier) { @@ -31,7 +32,8 @@ fun HomeSubRecommendation( .fillMaxWidth() .wrapContentHeight(), state = state, - homeSubDataList = homeSubDataList + homeSubDataList = homeSubDataList, + onItemClick = onItemClick ) } } diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendationItem.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendationItem.kt index 76be4931..a3d5fe83 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendationItem.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendationItem.kt @@ -1,5 +1,6 @@ package com.kuit.ourmenu.ui.home.component.recommendation.sub +import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding @@ -26,10 +27,13 @@ import com.kuit.ourmenu.ui.theme.ourMenuTypography @Composable fun HomeSubRecommendationItem( - recommendData: RecommendMenuList + recommendData: RecommendMenuList, + onItemClick: (Int) -> Unit ) { Column( - modifier = Modifier.padding(end = 11.dp) + modifier = Modifier + .padding(end = 11.dp) + .clickable { onItemClick(recommendData.menuId) } ) { AsyncImage( model = recommendData.menuImgUrl, diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendationList.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendationList.kt index 9f1b8b67..fbe265ac 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendationList.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendationList.kt @@ -12,7 +12,8 @@ import com.kuit.ourmenu.data.model.home.response.RecommendMenuList fun HomeSubRecommendationList( modifier: Modifier = Modifier, state: LazyListState, - homeSubDataList: List + homeSubDataList: List, + onItemClick: (Int) -> Unit ) { LazyRow( modifier = modifier, @@ -23,7 +24,8 @@ fun HomeSubRecommendationList( ) { items(homeSubDataList.size) { data -> HomeSubRecommendationItem( - recommendData = homeSubDataList[data] + recommendData = homeSubDataList[data], + onItemClick = onItemClick ) } } diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/navigation/HomeNavigation.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/navigation/HomeNavigation.kt index e32d8738..2ac8ccda 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/navigation/HomeNavigation.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/navigation/HomeNavigation.kt @@ -14,12 +14,12 @@ fun NavController.navigateToHome(navOptions: NavOptions) { fun NavGraphBuilder.homeNavGraph( padding: PaddingValues, - // navigate 이벤트 + navigateToMenuInfo: (Int) -> Unit ) { composable { HomeScreen( padding = padding, - // navigate 이벤트 + 기타 이벤트 + onNavigateToMenuInfo = navigateToMenuInfo ) } } \ No newline at end of file diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt index 481f020c..6b79af18 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt @@ -28,7 +28,7 @@ import com.kuit.ourmenu.ui.home.viewmodel.HomeViewModel @Composable fun HomeScreen( padding: PaddingValues, - // TODO: navagation 연결 + onNavigateToMenuInfo: (Int) -> Unit = {}, viewModel: HomeViewModel = hiltViewModel() ) { @@ -77,7 +77,8 @@ fun HomeScreen( modifier = Modifier .padding(top = 16.dp, bottom = 29.dp), imgUrl = answerImgUrl, - homeMainDataList = answerRecommendMenus + homeMainDataList = answerRecommendMenus, + onItemClick = onNavigateToMenuInfo ) @@ -87,7 +88,8 @@ fun HomeScreen( .wrapContentHeight() .padding(bottom = 25.dp), imgUrl = tagRecommendImgUrl, - homeSubDataList = tagRecommendMenus + homeSubDataList = tagRecommendMenus, + onItemClick = onNavigateToMenuInfo ) HomeSubRecommendation( @@ -96,7 +98,8 @@ fun HomeScreen( .wrapContentHeight() .padding(bottom = 25.dp), imgUrl = otherRecommendImgUrl, - homeSubDataList = otherRecommendMenus + homeSubDataList = otherRecommendMenus, + onItemClick = onNavigateToMenuInfo ) } } diff --git a/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavHost.kt b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavHost.kt index 2a914eae..6e9e2a65 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavHost.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavHost.kt @@ -57,6 +57,7 @@ fun MainNavHost( homeNavGraph( padding = padding, + navigateToMenuInfo = navController::navigateToMenuInfo ) menuFolderNavGraph( From 7db791185aa9bb0eef0629892f1045dda3c320bd Mon Sep 17 00:00:00 2001 From: Naeun Kim <102296721+Nico1eKim@users.noreply.github.com> Date: Wed, 13 Aug 2025 15:18:20 +0900 Subject: [PATCH 25/27] =?UTF-8?q?[feat]:=20home=ED=99=94=EB=A9=B4=20?= =?UTF-8?q?=EC=83=81=EB=8B=A8=EB=B0=94=20=EB=B2=84=ED=8A=BC=20=EB=88=84?= =?UTF-8?q?=EB=A5=B4=EB=A9=B4=20add=20menu=EB=A1=9C=20=EC=9D=B4=EB=8F=99?= =?UTF-8?q?=ED=95=98=EB=8F=84=EB=A1=9D=20navigation=20=EA=B5=AC=ED=98=84?= =?UTF-8?q?=20(#64)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/common/topappbar/OurMenuAddButtonTopAppBar.kt | 7 +++++-- .../com/kuit/ourmenu/ui/home/navigation/HomeNavigation.kt | 6 ++++-- .../java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt | 5 ++++- .../main/java/com/kuit/ourmenu/ui/navigator/MainNavHost.kt | 3 ++- 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/kuit/ourmenu/ui/common/topappbar/OurMenuAddButtonTopAppBar.kt b/app/src/main/java/com/kuit/ourmenu/ui/common/topappbar/OurMenuAddButtonTopAppBar.kt index 28e9d333..c2ef9122 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/common/topappbar/OurMenuAddButtonTopAppBar.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/common/topappbar/OurMenuAddButtonTopAppBar.kt @@ -18,7 +18,10 @@ import com.kuit.ourmenu.ui.theme.NeutralWhite @OptIn(ExperimentalMaterial3Api::class) @Composable -fun OurMenuAddButtonTopAppBar(modifier: Modifier = Modifier) { +fun OurMenuAddButtonTopAppBar( + modifier: Modifier = Modifier, + onAddMenuClick: () -> Unit = {} +) { // 기본 TopAppBar( modifier = modifier.fillMaxWidth(), @@ -35,7 +38,7 @@ fun OurMenuAddButtonTopAppBar(modifier: Modifier = Modifier) { }, actions = { IconButton( - onClick = { /* TODO : Add Menu Button Click Event */ }, + onClick = onAddMenuClick, modifier = Modifier.padding(end = 20.dp) ) { Icon( diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/navigation/HomeNavigation.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/navigation/HomeNavigation.kt index 2ac8ccda..fae03c11 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/navigation/HomeNavigation.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/navigation/HomeNavigation.kt @@ -14,12 +14,14 @@ fun NavController.navigateToHome(navOptions: NavOptions) { fun NavGraphBuilder.homeNavGraph( padding: PaddingValues, - navigateToMenuInfo: (Int) -> Unit + navigateToMenuInfo: (Int) -> Unit, + navigateToAddMenu: () -> Unit, ) { composable { HomeScreen( padding = padding, - onNavigateToMenuInfo = navigateToMenuInfo + onNavigateToMenuInfo = navigateToMenuInfo, + onNavigateToAddMenu = navigateToAddMenu, ) } } \ No newline at end of file diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt index 6b79af18..87f7ce03 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt @@ -29,6 +29,7 @@ import com.kuit.ourmenu.ui.home.viewmodel.HomeViewModel fun HomeScreen( padding: PaddingValues, onNavigateToMenuInfo: (Int) -> Unit = {}, + onNavigateToAddMenu: () -> Unit = {}, viewModel: HomeViewModel = hiltViewModel() ) { @@ -62,7 +63,9 @@ fun HomeScreen( Scaffold( topBar = { - OurMenuAddButtonTopAppBar() + OurMenuAddButtonTopAppBar( + onAddMenuClick = onNavigateToAddMenu + ) } ) { Column( diff --git a/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavHost.kt b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavHost.kt index 6e9e2a65..e81ba730 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavHost.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavHost.kt @@ -57,7 +57,8 @@ fun MainNavHost( homeNavGraph( padding = padding, - navigateToMenuInfo = navController::navigateToMenuInfo + navigateToMenuInfo = navController::navigateToMenuInfo, + navigateToAddMenu = navController::navigateToAddMenu, ) menuFolderNavGraph( From d15b8c7cc1fb855fe8d07dfb1fd68aa41e65a583 Mon Sep 17 00:00:00 2001 From: Naeun Kim <102296721+Nico1eKim@users.noreply.github.com> Date: Wed, 13 Aug 2025 15:22:38 +0900 Subject: [PATCH 26/27] =?UTF-8?q?[chore]:=20gitignore=EC=97=90=20deploymen?= =?UTF-8?q?tTargetSelector.xml=20=EC=B6=94=EA=B0=80=20(#64)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index b7197f62..1c5dbcc4 100644 --- a/.gitignore +++ b/.gitignore @@ -59,6 +59,7 @@ output.json misc.xml deploymentTargetDropDown.xml render.experimental.xml +deploymentTargetSelector.xml # Keystore files *.jks From 170d762b9a487ec80058afef524b5e2e19b93c71 Mon Sep 17 00:00:00 2001 From: Naeun Kim <102296721+Nico1eKim@users.noreply.github.com> Date: Wed, 13 Aug 2025 15:31:55 +0900 Subject: [PATCH 27/27] =?UTF-8?q?[fix]:=20menuId=20type=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20(#64)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/kuit/ourmenu/data/model/home/response/HomeResponse.kt | 2 +- .../component/recommendation/main/HomeMainRecommendation.kt | 2 +- .../component/recommendation/main/HomeMainRecommendationItem.kt | 2 +- .../component/recommendation/main/HomeMainRecommendationList.kt | 2 +- .../home/component/recommendation/sub/HomeSubRecommendation.kt | 2 +- .../component/recommendation/sub/HomeSubRecommendationItem.kt | 2 +- .../component/recommendation/sub/HomeSubRecommendationList.kt | 2 +- .../java/com/kuit/ourmenu/ui/home/navigation/HomeNavigation.kt | 2 +- app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/kuit/ourmenu/data/model/home/response/HomeResponse.kt b/app/src/main/java/com/kuit/ourmenu/data/model/home/response/HomeResponse.kt index 1bfd959c..abdcbee1 100644 --- a/app/src/main/java/com/kuit/ourmenu/data/model/home/response/HomeResponse.kt +++ b/app/src/main/java/com/kuit/ourmenu/data/model/home/response/HomeResponse.kt @@ -14,7 +14,7 @@ data class HomeResponse( @Serializable data class RecommendMenuList( - val menuId: Int = 0, + val menuId: Long = 0, val menuTitle: String = "", val storeName: String = "", val menuImgUrl: String = "", diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendation.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendation.kt index 6bcc1b52..a5fb2cfd 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendation.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendation.kt @@ -14,7 +14,7 @@ fun HomeMainRecommendation( modifier: Modifier = Modifier, imgUrl: String = "", homeMainDataList: List, - onItemClick: (Int) -> Unit + onItemClick: (Long) -> Unit ) { Column( modifier = modifier diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendationItem.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendationItem.kt index 4b79181a..4740fddf 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendationItem.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendationItem.kt @@ -29,7 +29,7 @@ import com.kuit.ourmenu.ui.theme.ourMenuTypography fun HomeMainRecommendationItem( modifier: Modifier = Modifier, recommendData: RecommendMenuList, - onItemClick: (Int) -> Unit + onItemClick: (Long) -> Unit ) { Box( modifier = modifier.clickable{ diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendationList.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendationList.kt index dfb37d25..d59e9e19 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendationList.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/main/HomeMainRecommendationList.kt @@ -19,7 +19,7 @@ import com.kuit.ourmenu.data.model.home.response.RecommendMenuList fun HomeMainRecommendationList( modifier: Modifier = Modifier, homeMainDataList: List, - onItemClick: (Int) -> Unit + onItemClick: (Long) -> Unit ) { // 리스트가 비어있으면 아무것도 표시하지 않음 if (homeMainDataList.isEmpty()) return diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendation.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendation.kt index d7f956ce..ffb4197f 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendation.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendation.kt @@ -16,7 +16,7 @@ fun HomeSubRecommendation( modifier: Modifier = Modifier, imgUrl: String = "", homeSubDataList: List, - onItemClick: (Int) -> Unit + onItemClick: (Long) -> Unit ) { val state = rememberLazyListState() // TODO : hoisting Column(modifier = modifier) { diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendationItem.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendationItem.kt index a3d5fe83..0e57496f 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendationItem.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendationItem.kt @@ -28,7 +28,7 @@ import com.kuit.ourmenu.ui.theme.ourMenuTypography @Composable fun HomeSubRecommendationItem( recommendData: RecommendMenuList, - onItemClick: (Int) -> Unit + onItemClick: (Long) -> Unit ) { Column( modifier = Modifier diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendationList.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendationList.kt index fbe265ac..3bf6b746 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendationList.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/component/recommendation/sub/HomeSubRecommendationList.kt @@ -13,7 +13,7 @@ fun HomeSubRecommendationList( modifier: Modifier = Modifier, state: LazyListState, homeSubDataList: List, - onItemClick: (Int) -> Unit + onItemClick: (Long) -> Unit ) { LazyRow( modifier = modifier, diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/navigation/HomeNavigation.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/navigation/HomeNavigation.kt index fae03c11..0a8419ef 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/navigation/HomeNavigation.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/navigation/HomeNavigation.kt @@ -14,7 +14,7 @@ fun NavController.navigateToHome(navOptions: NavOptions) { fun NavGraphBuilder.homeNavGraph( padding: PaddingValues, - navigateToMenuInfo: (Int) -> Unit, + navigateToMenuInfo: (Long) -> Unit, navigateToAddMenu: () -> Unit, ) { composable { diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt index 87f7ce03..f821368a 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt @@ -28,7 +28,7 @@ import com.kuit.ourmenu.ui.home.viewmodel.HomeViewModel @Composable fun HomeScreen( padding: PaddingValues, - onNavigateToMenuInfo: (Int) -> Unit = {}, + onNavigateToMenuInfo: (Long) -> Unit = {}, onNavigateToAddMenu: () -> Unit = {}, viewModel: HomeViewModel = hiltViewModel() ) {