diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml
index 5a72f16a..d7fd201e 100644
--- a/.idea/deploymentTargetSelector.xml
+++ b/.idea/deploymentTargetSelector.xml
@@ -27,17 +27,6 @@
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/java/com/kuit/ourmenu/data/model/map/response/MapDetailResponse.kt b/app/src/main/java/com/kuit/ourmenu/data/model/map/response/MapDetailResponse.kt
index 758cbbcb..c616bb64 100644
--- a/app/src/main/java/com/kuit/ourmenu/data/model/map/response/MapDetailResponse.kt
+++ b/app/src/main/java/com/kuit/ourmenu/data/model/map/response/MapDetailResponse.kt
@@ -6,11 +6,13 @@ import kotlinx.serialization.Serializable
@Serializable
data class MapDetailResponse(
@SerialName("menuId")
- val menuId: Int,
+ val menuId: Long,
@SerialName("menuTitle")
val menuTitle: String,
@SerialName("menuPrice")
val menuPrice: Int,
+ @SerialName("storeTitle")
+ val storeTitle: String,
@SerialName("menuPinImgUrl")
val menuPinImgUrl: String,
@SerialName("menuTagImgUrls")
diff --git a/app/src/main/java/com/kuit/ourmenu/data/model/map/response/MapMenuDetailResponse.kt b/app/src/main/java/com/kuit/ourmenu/data/model/map/response/MapMenuDetailResponse.kt
index f354721a..7c068d4f 100644
--- a/app/src/main/java/com/kuit/ourmenu/data/model/map/response/MapMenuDetailResponse.kt
+++ b/app/src/main/java/com/kuit/ourmenu/data/model/map/response/MapMenuDetailResponse.kt
@@ -6,9 +6,11 @@ import kotlinx.serialization.Serializable
@Serializable
data class MapMenuDetailResponse(
@SerialName("menuId")
- val menuId: Int,
+ val menuId: Long,
@SerialName("menuTitle")
val menuTitle: String,
+ @SerialName("storeTitle")
+ val storeTitle: String,
@SerialName("menuPrice")
val menuPrice: Int,
@SerialName("menuPinImgUrl")
@@ -20,11 +22,11 @@ data class MapMenuDetailResponse(
@SerialName("menuFolderInfo")
val menuFolderInfo: MenuFolderInfo,
@SerialName("mapId")
- val mapId: Int,
+ val mapId: Long,
@SerialName("mapX")
- val mapX: Int,
+ val mapX: Double,
@SerialName("mapY")
- val mapY: Int,
+ val mapY: Double,
)
diff --git a/app/src/main/java/com/kuit/ourmenu/data/model/map/response/MapSearchHistoryResponse.kt b/app/src/main/java/com/kuit/ourmenu/data/model/map/response/MapSearchHistoryResponse.kt
index 8480fa90..40346cb8 100644
--- a/app/src/main/java/com/kuit/ourmenu/data/model/map/response/MapSearchHistoryResponse.kt
+++ b/app/src/main/java/com/kuit/ourmenu/data/model/map/response/MapSearchHistoryResponse.kt
@@ -6,7 +6,7 @@ import kotlinx.serialization.Serializable
@Serializable
data class MapSearchHistoryResponse(
@SerialName("menuId")
- val menuId: Int,
+ val menuId: Long,
@SerialName("menuTitle")
val menuTitle: String,
@SerialName("storeTitle")
diff --git a/app/src/main/java/com/kuit/ourmenu/data/model/menuFolder/response/MenuFolderAllResponse.kt b/app/src/main/java/com/kuit/ourmenu/data/model/menuFolder/response/MenuFolderAllResponse.kt
index 0ec4a341..931673d8 100644
--- a/app/src/main/java/com/kuit/ourmenu/data/model/menuFolder/response/MenuFolderAllResponse.kt
+++ b/app/src/main/java/com/kuit/ourmenu/data/model/menuFolder/response/MenuFolderAllResponse.kt
@@ -4,7 +4,7 @@ import kotlinx.serialization.Serializable
@Serializable
data class MenuFolderAllResponse(
- override val menuId: Int,
+ override val menuId: Long,
override val menuTitle: String,
override val storeTitle: String,
override val storeAddress: String,
diff --git a/app/src/main/java/com/kuit/ourmenu/data/model/menuFolder/response/MenuFolderDetailResponse.kt b/app/src/main/java/com/kuit/ourmenu/data/model/menuFolder/response/MenuFolderDetailResponse.kt
index 8e7f2d1f..09a51668 100644
--- a/app/src/main/java/com/kuit/ourmenu/data/model/menuFolder/response/MenuFolderDetailResponse.kt
+++ b/app/src/main/java/com/kuit/ourmenu/data/model/menuFolder/response/MenuFolderDetailResponse.kt
@@ -13,7 +13,7 @@ data class MenuFolderDetailResponse(
@Serializable
data class MenuFolderDetailMenus(
- override val menuId: Int = 0,
+ override val menuId: Long = 0,
override val menuTitle: String = "",
override val storeTitle: String = "",
override val storeAddress: String = "",
diff --git a/app/src/main/java/com/kuit/ourmenu/data/model/menuFolder/response/MenuFolderMenuItem.kt b/app/src/main/java/com/kuit/ourmenu/data/model/menuFolder/response/MenuFolderMenuItem.kt
index fc9cc531..caf3923e 100644
--- a/app/src/main/java/com/kuit/ourmenu/data/model/menuFolder/response/MenuFolderMenuItem.kt
+++ b/app/src/main/java/com/kuit/ourmenu/data/model/menuFolder/response/MenuFolderMenuItem.kt
@@ -1,7 +1,7 @@
package com.kuit.ourmenu.data.model.menuFolder.response
interface MenuFolderMenuItem {
- val menuId: Int
+ val menuId: Long
val menuTitle: String
val storeTitle: String
val storeAddress: String
diff --git a/app/src/main/java/com/kuit/ourmenu/data/model/menuFolder/response/MenuFolderResponse.kt b/app/src/main/java/com/kuit/ourmenu/data/model/menuFolder/response/MenuFolderResponse.kt
index 0ca5a665..ba24a0c9 100644
--- a/app/src/main/java/com/kuit/ourmenu/data/model/menuFolder/response/MenuFolderResponse.kt
+++ b/app/src/main/java/com/kuit/ourmenu/data/model/menuFolder/response/MenuFolderResponse.kt
@@ -10,7 +10,7 @@ data class MenuFolderResponse(
@Serializable
data class MenuFolderList(
- val menuFolderId: Int,
+ val menuFolderId: Long,
val menuFolderTitle: String,
val menuFolderImgUrl: String,
val menuFolderIconImgUrl: String,
diff --git a/app/src/main/java/com/kuit/ourmenu/data/model/menuinfo/response/MenuInfoResponse.kt b/app/src/main/java/com/kuit/ourmenu/data/model/menuinfo/response/MenuInfoResponse.kt
index 2d38185a..c75e3d3c 100644
--- a/app/src/main/java/com/kuit/ourmenu/data/model/menuinfo/response/MenuInfoResponse.kt
+++ b/app/src/main/java/com/kuit/ourmenu/data/model/menuinfo/response/MenuInfoResponse.kt
@@ -4,10 +4,12 @@ import kotlinx.serialization.Serializable
@Serializable
data class MenuInfoResponse(
- val menuId: Int = 0,
+ val menuId: Long = 0,
val menuTitle: String = "",
val menuPrice: Int = 0,
val menuPinImgUrl: String = "",
+ val menuMemoTitle: String = "",
+ val menuMemoContent: String = "",
val storeTitle: String = "",
val storeAddress: String = "",
val tagImgUrls: List = emptyList(),
diff --git a/app/src/main/java/com/kuit/ourmenu/data/repository/MenuFolderRepository.kt b/app/src/main/java/com/kuit/ourmenu/data/repository/MenuFolderRepository.kt
index 0f9fe242..ae19dcc4 100644
--- a/app/src/main/java/com/kuit/ourmenu/data/repository/MenuFolderRepository.kt
+++ b/app/src/main/java/com/kuit/ourmenu/data/repository/MenuFolderRepository.kt
@@ -14,7 +14,7 @@ class MenuFolderRepository @Inject constructor(
}
suspend fun getMenuFolderDetail(
- menuFolderId: Int,
+ menuFolderId: Long,
sortOrder: String,
) = runCatching {
menuFolderService.getMenuFolderDetails(
diff --git a/app/src/main/java/com/kuit/ourmenu/data/repository/MenuInfoRepository.kt b/app/src/main/java/com/kuit/ourmenu/data/repository/MenuInfoRepository.kt
index 226d8d4e..fbe7f0cb 100644
--- a/app/src/main/java/com/kuit/ourmenu/data/repository/MenuInfoRepository.kt
+++ b/app/src/main/java/com/kuit/ourmenu/data/repository/MenuInfoRepository.kt
@@ -10,7 +10,7 @@ class MenuInfoRepository @Inject constructor(
private val menuInfoService: MenuInfoService
) {
suspend fun getMenuInfo(
- menuId: Int
+ menuId: Long
) = runCatching {
menuInfoService.getMenuInfo(menuId).handleBaseResponse().getOrThrow()
}
diff --git a/app/src/main/java/com/kuit/ourmenu/data/service/MapService.kt b/app/src/main/java/com/kuit/ourmenu/data/service/MapService.kt
index 2f0034a6..d6c1e2ca 100644
--- a/app/src/main/java/com/kuit/ourmenu/data/service/MapService.kt
+++ b/app/src/main/java/com/kuit/ourmenu/data/service/MapService.kt
@@ -18,15 +18,15 @@ interface MapService {
@GET("api/users/menus/{mapId}/maps")
suspend fun getMapDetail(
@Path("mapId") mapId: Long
- ): BaseResponse> // TODO: 리팩토링
+ ): BaseResponse>
@GET("api/users/menus/maps")
- suspend fun getMap(): BaseResponse> // TODO: 리팩토링
+ suspend fun getMap(): BaseResponse>
@GET("api/users/menus/maps/{menuId}/search")
suspend fun getMapMenuDetail(
@Path("menuId") menuId: Long
- ): BaseResponse // TODO: 리팩토링
+ ): BaseResponse
@GET("api/users/menus/maps/search")
suspend fun getMapSearch(
diff --git a/app/src/main/java/com/kuit/ourmenu/data/service/MenuFolderService.kt b/app/src/main/java/com/kuit/ourmenu/data/service/MenuFolderService.kt
index 91d8c6a8..52554202 100644
--- a/app/src/main/java/com/kuit/ourmenu/data/service/MenuFolderService.kt
+++ b/app/src/main/java/com/kuit/ourmenu/data/service/MenuFolderService.kt
@@ -14,7 +14,7 @@ interface MenuFolderService {
@GET("api/menu-folders/{menuFolderId}/menus")
suspend fun getMenuFolderDetails(
- @Path("menuFolderId") menuFolderId: Int,
+ @Path("menuFolderId") menuFolderId: Long,
@Query("sortOrder") sortOrder: String,
): BaseResponse
diff --git a/app/src/main/java/com/kuit/ourmenu/data/service/MenuInfoService.kt b/app/src/main/java/com/kuit/ourmenu/data/service/MenuInfoService.kt
index 2826bf46..f5453009 100644
--- a/app/src/main/java/com/kuit/ourmenu/data/service/MenuInfoService.kt
+++ b/app/src/main/java/com/kuit/ourmenu/data/service/MenuInfoService.kt
@@ -8,6 +8,6 @@ import retrofit2.http.Path
interface MenuInfoService {
@GET("api/menus/{menuId}")
suspend fun getMenuInfo(
- @Path("menuId") menuId: Int
+ @Path("menuId") menuId: Long
): BaseResponse
}
diff --git a/app/src/main/java/com/kuit/ourmenu/ui/common/bottomsheet/MenuInfoBottomSheetContent.kt b/app/src/main/java/com/kuit/ourmenu/ui/common/bottomsheet/MenuInfoBottomSheetContent.kt
index be7ff3d5..a72e0256 100644
--- a/app/src/main/java/com/kuit/ourmenu/ui/common/bottomsheet/MenuInfoBottomSheetContent.kt
+++ b/app/src/main/java/com/kuit/ourmenu/ui/common/bottomsheet/MenuInfoBottomSheetContent.kt
@@ -1,6 +1,8 @@
package com.kuit.ourmenu.ui.common.bottomsheet
+import android.util.Log
import androidx.compose.foundation.Image
+import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
@@ -38,12 +40,17 @@ import com.kuit.ourmenu.utils.ExtensionUtil.toWon
@Composable
fun MenuInfoBottomSheetContent(
modifier: Modifier = Modifier,
- menuInfoData: MapDetailResponse
+ menuInfoData: MapDetailResponse,
+ onClick: (Long) -> Unit
) {
Column(
modifier = modifier
.fillMaxWidth()
.padding(horizontal = 20.dp)
+ .clickable {
+ Log.d("MenuInfoBottomSheetContent", "Menu ID: ${menuInfoData.menuId}")
+ onClick(menuInfoData.menuId)
+ }
) {
MenuInfoContent(
modifier = Modifier
@@ -114,7 +121,7 @@ fun MenuInfoContent(
)
}
Text(
- text = "응답에 가게명 누락", // TODO: 가게명 처리
+ text = menuInfoData.storeTitle,
style = ourMenuTypography().pretendard_600_14.copy(
lineHeight = 12.sp,
color = Neutral500
@@ -187,6 +194,7 @@ private fun MenuInfoBottomSheetContentPreview() {
menuInfoData = MapDetailResponse(
menuId = 1,
menuTitle = "Test Menu",
+ storeTitle = "가게 이름",
menuPrice = 10000,
menuPinImgUrl = "pin",
menuTagImgUrls = listOf("한식", "밥"),
@@ -200,5 +208,7 @@ private fun MenuInfoBottomSheetContentPreview() {
mapX = 127.0,
mapY = 37.0
)
- )
+ ){
+ // 클릭시 동작
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/kuit/ourmenu/ui/menuFolder/navigation/MenuFolderNavigation.kt b/app/src/main/java/com/kuit/ourmenu/ui/menuFolder/navigation/MenuFolderNavigation.kt
index e014e3af..7db71904 100644
--- a/app/src/main/java/com/kuit/ourmenu/ui/menuFolder/navigation/MenuFolderNavigation.kt
+++ b/app/src/main/java/com/kuit/ourmenu/ui/menuFolder/navigation/MenuFolderNavigation.kt
@@ -16,7 +16,7 @@ fun NavController.navigateToMenuFolder(navOptions: NavOptions) {
}
// 이동 이벤트 (menuFolderId 전달)
-fun NavController.navigateToMenuFolderDetail(menuFolderId: Int) {
+fun NavController.navigateToMenuFolderDetail(menuFolderId: Long) {
navigate(Routes.MenuFolderDetail(menuFolderId))
}
@@ -28,15 +28,15 @@ fun NavController.navigateToAddMenu() {
navigate(Routes.AddMenu)
}
-fun NavController.navigateToMenuInfo(menuId: Int) {
+fun NavController.navigateToMenuInfo(menuId: Long) {
navigate(Routes.MenuInfo(menuId))
}
fun NavGraphBuilder.menuFolderNavGraph(
navigateBack: () -> Unit,
- navigateToMenuFolderDetail: (Int) -> Unit,
+ navigateToMenuFolderDetail: (Long) -> Unit,
navigateToMenuFolderAllMenu: () -> Unit,
- navigateToMenuInfo: (Int) -> Unit,
+ navigateToMenuInfo: (Long) -> Unit,
navigateToAddMenu: () -> Unit,
) {
composable {
diff --git a/app/src/main/java/com/kuit/ourmenu/ui/menuFolder/screen/MenuFolderAllMenuScreen.kt b/app/src/main/java/com/kuit/ourmenu/ui/menuFolder/screen/MenuFolderAllMenuScreen.kt
index 9d69c18e..00b7987e 100644
--- a/app/src/main/java/com/kuit/ourmenu/ui/menuFolder/screen/MenuFolderAllMenuScreen.kt
+++ b/app/src/main/java/com/kuit/ourmenu/ui/menuFolder/screen/MenuFolderAllMenuScreen.kt
@@ -56,7 +56,7 @@ import kotlinx.coroutines.launch
@Composable
fun MenuFolderAllMenuScreen(
onNavigateBack: () -> Unit,
- onNavigateToMenuInfo: (Int) -> Unit,
+ onNavigateToMenuInfo: (Long) -> Unit,
// onNavigateToMap: () -> Unit, // TODO: Map으로 화면 이동 구현
onNavigateToAddMenu: () -> Unit,
viewModel: MenuFolderAllViewModel = hiltViewModel()
diff --git a/app/src/main/java/com/kuit/ourmenu/ui/menuFolder/screen/MenuFolderDetailScreen.kt b/app/src/main/java/com/kuit/ourmenu/ui/menuFolder/screen/MenuFolderDetailScreen.kt
index c3733a9e..1915b83c 100644
--- a/app/src/main/java/com/kuit/ourmenu/ui/menuFolder/screen/MenuFolderDetailScreen.kt
+++ b/app/src/main/java/com/kuit/ourmenu/ui/menuFolder/screen/MenuFolderDetailScreen.kt
@@ -45,8 +45,8 @@ import com.kuit.ourmenu.ui.theme.ourMenuTypography
@Composable
fun MenuFolderDetailScreen(
- menuFolderId: Int,
- onNavigateToMenuInfo: (Int) -> Unit,
+ menuFolderId: Long,
+ onNavigateToMenuInfo: (Long) -> Unit,
// onNavigateToMap: () -> Unit, // TODO: Map으로 화면 이동 구현
onNavigateToAddMenu: () -> Unit,
onNavigateBack: () -> Unit,
diff --git a/app/src/main/java/com/kuit/ourmenu/ui/menuFolder/screen/MenuFolderScreen.kt b/app/src/main/java/com/kuit/ourmenu/ui/menuFolder/screen/MenuFolderScreen.kt
index c8e25819..6097174d 100644
--- a/app/src/main/java/com/kuit/ourmenu/ui/menuFolder/screen/MenuFolderScreen.kt
+++ b/app/src/main/java/com/kuit/ourmenu/ui/menuFolder/screen/MenuFolderScreen.kt
@@ -37,7 +37,7 @@ import com.kuit.ourmenu.ui.theme.ourMenuTypography
@Composable
fun MenuFolderScreen(
- onNavigateToDetail: (Int) -> Unit,
+ onNavigateToDetail: (Long) -> Unit,
onNavigateToAllMenu: () -> Unit,
onNavigateToAddMenu: () -> Unit,
viewModel: MenuFolderViewModel = hiltViewModel()
diff --git a/app/src/main/java/com/kuit/ourmenu/ui/menuFolder/viewmodel/MenuFolderDetailViewModel.kt b/app/src/main/java/com/kuit/ourmenu/ui/menuFolder/viewmodel/MenuFolderDetailViewModel.kt
index d06e2216..ec799b12 100644
--- a/app/src/main/java/com/kuit/ourmenu/ui/menuFolder/viewmodel/MenuFolderDetailViewModel.kt
+++ b/app/src/main/java/com/kuit/ourmenu/ui/menuFolder/viewmodel/MenuFolderDetailViewModel.kt
@@ -18,7 +18,7 @@ class MenuFolderDetailViewModel @Inject constructor(
private val _menuFolderDetail = MutableStateFlow(MenuFolderDetailResponse())
val menuFolderDetail = _menuFolderDetail.asStateFlow()
- private val _menuFolderId = MutableStateFlow(0)
+ private val _menuFolderId = MutableStateFlow(0)
val menuFolderId = _menuFolderId.asStateFlow()
private val _sortOrder = MutableStateFlow(SortOrderType.TITLE_ASC)
@@ -31,7 +31,7 @@ class MenuFolderDetailViewModel @Inject constructor(
val isLoading = _isLoading.asStateFlow()
fun getMenuFolderDetail(
- menuFolderId: Int,
+ menuFolderId: Long,
sortOrder: SortOrderType = _sortOrder.value
) {
_menuFolderId.value = menuFolderId
@@ -57,7 +57,7 @@ class MenuFolderDetailViewModel @Inject constructor(
}
}
- fun updateSortOrder(sortOrderType: SortOrderType, menuFolderId: Int) {
+ fun updateSortOrder(sortOrderType: SortOrderType, menuFolderId: Long) {
if (_sortOrder.value != sortOrderType) {
_sortOrder.value = sortOrderType
getMenuFolderDetail(menuFolderId, sortOrderType)
diff --git a/app/src/main/java/com/kuit/ourmenu/ui/menuinfo/navigation/MenuInfoNavigation.kt b/app/src/main/java/com/kuit/ourmenu/ui/menuinfo/navigation/MenuInfoNavigation.kt
index cddeeab7..023204bc 100644
--- a/app/src/main/java/com/kuit/ourmenu/ui/menuinfo/navigation/MenuInfoNavigation.kt
+++ b/app/src/main/java/com/kuit/ourmenu/ui/menuinfo/navigation/MenuInfoNavigation.kt
@@ -7,13 +7,13 @@ import androidx.navigation.toRoute
import com.kuit.ourmenu.ui.menuinfo.screen.MenuInfoDefaultScreen
import com.kuit.ourmenu.ui.navigator.Routes
-fun NavController.navigateToMenuInfo(menuId: Int) {
+fun NavController.navigateToMenuInfo(menuId: Long) {
navigate(Routes.MenuInfo(menuId))
}
fun NavGraphBuilder.menuInfoNavGraph(
navigateBack: () -> Unit,
- navigateToMenuFolderDetail: (Int) -> Unit,
+ navigateToMenuFolderDetail: (Long) -> Unit,
navigateToMenuInfoMap: () -> Unit
) {
composable {
diff --git a/app/src/main/java/com/kuit/ourmenu/ui/menuinfo/screen/MenuInfoDefaultScreen.kt b/app/src/main/java/com/kuit/ourmenu/ui/menuinfo/screen/MenuInfoDefaultScreen.kt
index b0f97e0b..630cd742 100644
--- a/app/src/main/java/com/kuit/ourmenu/ui/menuinfo/screen/MenuInfoDefaultScreen.kt
+++ b/app/src/main/java/com/kuit/ourmenu/ui/menuinfo/screen/MenuInfoDefaultScreen.kt
@@ -23,16 +23,15 @@ import com.kuit.ourmenu.ui.menuinfo.component.info.MenuInfoChipContent
import com.kuit.ourmenu.ui.menuinfo.component.info.MenuInfoContent
import com.kuit.ourmenu.ui.menuinfo.component.info.MenuInfoImagePager
import com.kuit.ourmenu.ui.menuinfo.component.info.MenuInfoMapButton
-import com.kuit.ourmenu.ui.menuinfo.dummy.MenuInfoDummyData
import com.kuit.ourmenu.ui.menuinfo.viewmodel.MenuInfoViewModel
import com.kuit.ourmenu.ui.theme.Neutral300
import com.kuit.ourmenu.ui.theme.NeutralWhite
@Composable
fun MenuInfoDefaultScreen(
- menuId: Int,
+ menuId: Long,
onNavigateBack: () -> Unit,
- onNavigateToMenuFolderDetail: (Int) -> Unit,
+ onNavigateToMenuFolderDetail: (Long) -> Unit,
// onNavigateToMap: () -> Unit,
viewModel: MenuInfoViewModel = hiltViewModel()
) {
@@ -73,15 +72,15 @@ fun MenuInfoDefaultScreen(
)
MenuInfoChipContent(
- onNavigateToMenuFolderDetail = onNavigateToMenuFolderDetail,
+ // TODO: 메뉴 폴더 정보에 따라 변경 필요, 여러개인 경우 각 폴더에 대한 이동 구현
+// onNavigateToMenuFolderDetail = onNavigateToMenuFolderDetail(menuInfo.menuFolders.),
menuInfoData = menuInfo
)
MenuInfoAdditionalContent(
address = menuInfo.storeAddress,
- // TODO: 메뉴 정보에 따라 변경 필요
- memoTitle = MenuInfoDummyData.dummyData.memoTitle,
- memoContent = MenuInfoDummyData.dummyData.memoContent
+ memoTitle = menuInfo.menuMemoTitle,
+ memoContent = menuInfo.menuMemoContent
)
}
MenuInfoMapButton(
@@ -105,4 +104,11 @@ private fun MenuInfoDefaultPreview() {
// val navController = rememberNavController()
//
// MenuInfoDefaultScreen(navController)
+ val viewModel: MenuInfoViewModel = hiltViewModel()
+ MenuInfoDefaultScreen(
+ menuId = 1,
+ onNavigateBack = {},
+ onNavigateToMenuFolderDetail = {},
+ viewModel = viewModel
+ )
}
\ No newline at end of file
diff --git a/app/src/main/java/com/kuit/ourmenu/ui/menuinfo/screen/MenuInfoMapScreen.kt b/app/src/main/java/com/kuit/ourmenu/ui/menuinfo/screen/MenuInfoMapScreen.kt
index 636b26bb..c604905c 100644
--- a/app/src/main/java/com/kuit/ourmenu/ui/menuinfo/screen/MenuInfoMapScreen.kt
+++ b/app/src/main/java/com/kuit/ourmenu/ui/menuinfo/screen/MenuInfoMapScreen.kt
@@ -64,6 +64,7 @@ fun MenuInfoMapScreen(navController: NavController) {
menuInfoData = MapDetailResponse(
menuId = 1,
menuTitle = "Test Menu",
+ storeTitle = "가게 이름",
menuPrice = 10000,
menuPinImgUrl = "pin",
menuTagImgUrls = listOf("한식", "밥"),
@@ -77,7 +78,9 @@ fun MenuInfoMapScreen(navController: NavController) {
mapX = 127.0,
mapY = 37.0
)
- )
+ ){
+
+ }
},
sheetPeekHeight = bottomSheetContentHeight,
) { innerPaddings ->
diff --git a/app/src/main/java/com/kuit/ourmenu/ui/menuinfo/viewmodel/MenuInfoViewModel.kt b/app/src/main/java/com/kuit/ourmenu/ui/menuinfo/viewmodel/MenuInfoViewModel.kt
index beca0b3c..bb03a149 100644
--- a/app/src/main/java/com/kuit/ourmenu/ui/menuinfo/viewmodel/MenuInfoViewModel.kt
+++ b/app/src/main/java/com/kuit/ourmenu/ui/menuinfo/viewmodel/MenuInfoViewModel.kt
@@ -17,7 +17,7 @@ class MenuInfoViewModel @Inject constructor(
private val _menuInfo = MutableStateFlow(MenuInfoResponse())
val menuInfo = _menuInfo.asStateFlow()
- private val _menuId = MutableStateFlow(0)
+ private val _menuId = MutableStateFlow(0)
val menuId = _menuId.asStateFlow()
private val _error: MutableStateFlow = MutableStateFlow(null)
@@ -27,7 +27,7 @@ class MenuInfoViewModel @Inject constructor(
val isLoading = _isLoading.asStateFlow()
fun getMenuInfo(
- menuId: Int
+ menuId: Long
) {
_menuId.value = menuId
diff --git a/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavController.kt b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavController.kt
index af08df63..eb706d95 100644
--- a/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavController.kt
+++ b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavController.kt
@@ -95,7 +95,7 @@ class MainNavController(
}
// Menu Folder
- fun navigateToMenuFolderDetail(menuFolderId: Int) {
+ fun navigateToMenuFolderDetail(menuFolderId: Long) {
navController.navigateToMenuFolderDetail(menuFolderId)
}
@@ -118,7 +118,7 @@ class MainNavController(
}
// Menu Info
- fun navigateToMenuInfo(menuId: Int) {
+ fun navigateToMenuInfo(menuId: Long) {
navController.navigateToMenuInfo(menuId)
}
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 fa607875..2b03ee12 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
@@ -73,7 +73,7 @@ fun MainNavHost(
)
searchMenuNavGraph(
- padding = padding,
+ navigateToMenuDetail = navController::navigateToMenuInfo,
)
myNavGraph(
diff --git a/app/src/main/java/com/kuit/ourmenu/ui/navigator/Routes.kt b/app/src/main/java/com/kuit/ourmenu/ui/navigator/Routes.kt
index 85afe2d2..00b7b8e9 100644
--- a/app/src/main/java/com/kuit/ourmenu/ui/navigator/Routes.kt
+++ b/app/src/main/java/com/kuit/ourmenu/ui/navigator/Routes.kt
@@ -8,13 +8,13 @@ sealed interface Routes{
@Serializable
data object MenuFolder: Routes
@Serializable
- data class MenuFolderDetail(val menuFolderId: Int): Routes
+ data class MenuFolderDetail(val menuFolderId: Long): Routes
@Serializable
data object MenuFolderAllMenu: Routes
// 메뉴
@Serializable
- data class MenuInfo(val menuId: Int): Routes
+ data class MenuInfo(val menuId: Long): Routes
@Serializable
data object MenuInfoMap: Routes
diff --git a/app/src/main/java/com/kuit/ourmenu/ui/searchmenu/component/SearchBottomSheetContent.kt b/app/src/main/java/com/kuit/ourmenu/ui/searchmenu/component/SearchBottomSheetContent.kt
index 0c49339c..bf894f21 100644
--- a/app/src/main/java/com/kuit/ourmenu/ui/searchmenu/component/SearchBottomSheetContent.kt
+++ b/app/src/main/java/com/kuit/ourmenu/ui/searchmenu/component/SearchBottomSheetContent.kt
@@ -14,7 +14,8 @@ import com.kuit.ourmenu.ui.common.bottomsheet.MenuInfoBottomSheetContent
@Composable
fun SearchBottomSheetContent(
modifier: Modifier = Modifier,
- dataList: List
+ dataList: List,
+ onItemClick: (Long) -> Unit
) {
LazyColumn(
modifier = modifier
@@ -22,7 +23,10 @@ fun SearchBottomSheetContent(
items(dataList.size) { index ->
MenuInfoBottomSheetContent(
modifier = Modifier.padding(vertical = 20.dp),
- menuInfoData = dataList[index]
+ menuInfoData = dataList[index],
+ onClick = { menuId ->
+ onItemClick(menuId)
+ }
)
if (index != dataList.size - 1) {
HorizontalDivider()
@@ -39,6 +43,7 @@ private fun SearchBottomSheetContentPreview() {
MapDetailResponse(
menuId = 1,
menuTitle = "Test Menu",
+ storeTitle = "가게 이름",
menuPrice = 10000,
menuPinImgUrl = "pin",
menuTagImgUrls = listOf("한식", "밥"),
@@ -53,5 +58,7 @@ private fun SearchBottomSheetContentPreview() {
mapY = 37.0
)
)
- )
+ ){
+
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/kuit/ourmenu/ui/searchmenu/component/SearchHistory.kt b/app/src/main/java/com/kuit/ourmenu/ui/searchmenu/component/SearchHistory.kt
index 6da3f165..85743c5b 100644
--- a/app/src/main/java/com/kuit/ourmenu/ui/searchmenu/component/SearchHistory.kt
+++ b/app/src/main/java/com/kuit/ourmenu/ui/searchmenu/component/SearchHistory.kt
@@ -23,7 +23,8 @@ 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.searchmenu.model.SearchHistoryData
+import com.kuit.ourmenu.data.model.map.response.MapSearchHistoryResponse
+import com.kuit.ourmenu.ui.theme.Neutral300
import com.kuit.ourmenu.ui.theme.Neutral500
import com.kuit.ourmenu.ui.theme.Neutral700
import com.kuit.ourmenu.ui.theme.ourMenuTypography
@@ -31,8 +32,8 @@ import com.kuit.ourmenu.ui.theme.ourMenuTypography
@Composable
fun SearchHistoryList(
modifier: Modifier = Modifier,
- onClick: () -> Unit = {},
- historyList: List
+ historyList: List?,
+ onClick: (Long) -> Unit = {},
) {
val lazyListState = rememberLazyListState()
@@ -41,28 +42,53 @@ fun SearchHistoryList(
.fillMaxWidth()
.padding(top = 68.dp)
) {
- Text(
- text = "최근 검색",
- style = ourMenuTypography().pretendard_600_16.copy(
- lineHeight = 20.sp,
- color = Neutral700
- ),
- modifier = modifier
- .padding(bottom = 4.dp)
- .padding(horizontal = 28.dp)
- )
- LazyColumn(
- state = lazyListState
- ) {
-
- items(historyList.size) { index ->
- SearchHistoryItem(
- historyData = historyList[index],
- onClick = onClick
+ if (historyList == null || historyList.isEmpty()) {
+ Column(
+ modifier = Modifier
+ .fillMaxWidth()
+ .padding(top = 68.dp),
+ horizontalAlignment = Alignment.CenterHorizontally
+ ) {
+ Icon(
+ painter = painterResource(R.drawable.ic_addmenu_noresult),
+ contentDescription = "no result",
+ tint = Color.Unspecified
+ )
+ Text(
+ text = stringResource(R.string.no_result),
+ style = ourMenuTypography().pretendard_600_14,
+ color = Neutral500,
+ modifier = Modifier.padding(top = 8.dp)
)
+ }
+ } else {
+ Text(
+ text = "최근 검색",
+ style = ourMenuTypography().pretendard_600_16.copy(
+ lineHeight = 20.sp,
+ color = Neutral700
+ ),
+ modifier = modifier
+ .padding(bottom = 4.dp)
+ .padding(horizontal = 28.dp)
+ )
+ LazyColumn(
+ state = lazyListState
+ ) {
+
+ items(historyList.size) { index ->
+ SearchHistoryItem(
+ historyData = historyList[index],
+ onClick = onClick
+ )
- if (index != historyList.size - 1) {
- HorizontalDivider()
+ if (index != historyList.size - 1) {
+ HorizontalDivider(
+ thickness = 1.dp,
+ color = Neutral300,
+ modifier = Modifier.fillMaxWidth()
+ )
+ }
}
}
}
@@ -72,14 +98,14 @@ fun SearchHistoryList(
@Composable
fun SearchHistoryItem(
modifier: Modifier = Modifier,
- historyData: SearchHistoryData,
- onClick: () -> Unit
+ historyData: MapSearchHistoryResponse,
+ onClick: (Long) -> Unit
) {
Column(
modifier = modifier
.fillMaxWidth()
- .clickable(onClick = onClick)
+ .clickable(onClick = { onClick(historyData.menuId) })
.padding(vertical = 20.dp, horizontal = 28.dp)
) {
Text(
@@ -115,7 +141,7 @@ fun SearchHistoryItem(
.wrapContentHeight(align = Alignment.CenterVertically)
)
Text(
- text = stringResource(R.string.neungdongro_112),
+ text = historyData.storeAddress,
style = ourMenuTypography().pretendard_600_14.copy(
lineHeight = 20.sp,
color = Neutral500
@@ -135,20 +161,23 @@ fun SearchHistoryItem(
private fun SearchHistoryPreview() {
SearchHistoryList(
historyList = listOf(
- SearchHistoryData(
+ MapSearchHistoryResponse(
menuTitle = "피자",
storeTitle = "피자헛",
- address = "서울특별시 강남구 역삼동 123-4"
+ menuId = 1,
+ storeAddress = "서울특별시 강남구 역삼동 123-4"
),
- SearchHistoryData(
+ MapSearchHistoryResponse(
menuTitle = "치킨",
storeTitle = "굽네치킨",
- address = "서울특별시 강남구 역삼동 123-4"
+ menuId = 2,
+ storeAddress = "서울특별시 강남구 역삼동 456-7"
),
- SearchHistoryData(
+ MapSearchHistoryResponse(
menuTitle = "햄버거",
storeTitle = "맥도날드",
- address = "서울특별시 강남구 역삼동 123-4"
+ menuId = 3,
+ storeAddress = "서울특별시 강남구 역삼동 987-6"
)
),
)
diff --git a/app/src/main/java/com/kuit/ourmenu/ui/searchmenu/navigation/SearchMenuNavigation.kt b/app/src/main/java/com/kuit/ourmenu/ui/searchmenu/navigation/SearchMenuNavigation.kt
index 57130b11..c461a6bb 100644
--- a/app/src/main/java/com/kuit/ourmenu/ui/searchmenu/navigation/SearchMenuNavigation.kt
+++ b/app/src/main/java/com/kuit/ourmenu/ui/searchmenu/navigation/SearchMenuNavigation.kt
@@ -1,6 +1,5 @@
package com.kuit.ourmenu.ui.searchmenu.navigation
-import androidx.compose.foundation.layout.PaddingValues
import androidx.navigation.NavController
import androidx.navigation.NavGraphBuilder
import androidx.navigation.NavOptions
@@ -13,10 +12,12 @@ fun NavController.navigateToSearchMenu(navOptions: NavOptions) {
}
fun NavGraphBuilder.searchMenuNavGraph(
- padding: PaddingValues,
// navigate 이벤트
+ navigateToMenuDetail: (Long) -> Unit,
) {
composable {
- SearchMenuScreen()
+ SearchMenuScreen(
+ onNavigateToMenuDetail = navigateToMenuDetail
+ )
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/kuit/ourmenu/ui/searchmenu/screen/SearchMenuScreen.kt b/app/src/main/java/com/kuit/ourmenu/ui/searchmenu/screen/SearchMenuScreen.kt
index 2b6e8f4b..9111aef6 100644
--- a/app/src/main/java/com/kuit/ourmenu/ui/searchmenu/screen/SearchMenuScreen.kt
+++ b/app/src/main/java/com/kuit/ourmenu/ui/searchmenu/screen/SearchMenuScreen.kt
@@ -17,10 +17,10 @@ import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.rememberBottomSheetScaffoldState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
-import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
+import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
@@ -42,7 +42,6 @@ import com.kuit.ourmenu.ui.common.map.mapViewWithLifecycle
import com.kuit.ourmenu.ui.common.topappbar.OurMenuAddButtonTopAppBar
import com.kuit.ourmenu.ui.searchmenu.component.SearchBottomSheetContent
import com.kuit.ourmenu.ui.searchmenu.component.SearchHistoryList
-import com.kuit.ourmenu.ui.searchmenu.model.SearchHistoryData
import com.kuit.ourmenu.ui.searchmenu.viewmodel.SearchMenuViewModel
import com.kuit.ourmenu.ui.theme.NeutralWhite
import com.kuit.ourmenu.utils.PermissionHandler
@@ -53,6 +52,7 @@ import kotlinx.coroutines.launch
fun SearchMenuScreen(
modifier: Modifier = Modifier,
viewModel: SearchMenuViewModel = hiltViewModel(),
+ onNavigateToMenuDetail: (Long) -> Unit
) {
val scaffoldState = rememberBottomSheetScaffoldState()
@@ -64,18 +64,19 @@ fun SearchMenuScreen(
var searchActionDone by rememberSaveable { mutableStateOf(false) }
val interactionSource = remember { MutableInteractionSource() }
val searchBarFocused by interactionSource.collectIsFocusedAsState()
+ val scope = rememberCoroutineScope()
val focusManager = LocalFocusManager.current
val context = LocalContext.current
val locationPermissionGranted by viewModel.locationPermissionGranted.collectAsStateWithLifecycle()
// 지도 중심 좌표
- val currentCenter by viewModel.currentCenter.collectAsState()
+ val currentCenter by viewModel.currentCenter.collectAsStateWithLifecycle()
// 검색기록
- val searchHistory by viewModel.searchHistory.collectAsState()
+ val searchHistory by viewModel.searchHistory.collectAsStateWithLifecycle()
// 핀 위치에 해당하는 메뉴들
- val menusOnPin by viewModel.menusOnPin.collectAsState()
+ val menusOnPin by viewModel.menusOnPin.collectAsStateWithLifecycle()
val density = LocalDensity.current
val singleItemHeight = 300.dp // Fixed height for each item
@@ -120,10 +121,11 @@ fun SearchMenuScreen(
if (searchBarFocused) {
showSearchBackground = true
showBottomSheet = false
-
- // Fetch crawling history when search field is focused
- launch {
+
+ // 검색 기록 조회
+ scope.launch {
viewModel.getSearchHistory()
+ Log.d("SearchMenuScreen", "검색 기록 조회: $searchHistory")
}
}
}
@@ -142,7 +144,11 @@ fun SearchMenuScreen(
sheetContent = {
SearchBottomSheetContent(
modifier = Modifier.fillMaxWidth(),
- dataList = menusOnPin ?: emptyList()
+ dataList = menusOnPin ?: emptyList(),
+ onItemClick = { menuId ->
+ Log.d("SearchMenuScreen", "바텀 시트 메뉴 아이템 클릭: $menuId")
+ onNavigateToMenuDetail(menuId)
+ }
)
},
sheetContainerColor = NeutralWhite,
@@ -178,18 +184,12 @@ fun SearchMenuScreen(
)
}
} else {
- val historyDataList = searchHistory?.map { history ->
- SearchHistoryData(
- menuTitle = history.menuTitle,
- storeTitle = history.storeAddress.split(',').firstOrNull() ?: "",
- address = history.storeAddress
- )
- } ?: emptyList()
-
SearchHistoryList(
- historyList = historyDataList,
- onClick = {
+ historyList = searchHistory,
+ onClick = { menuId ->
// 크롤링 기록 아이템 클릭시 동작
+ viewModel.getMapMenuDetail(menuId)
+ Log.d("SearchMenuScreen", "검색 기록 아이템 클릭: $menuId")
showSearchBackground = false
showBottomSheet = true
}
@@ -239,7 +239,7 @@ fun SearchMenuScreen(
.align(Alignment.BottomEnd)
.padding(bottom = 16.dp, end = 20.dp),
onClick = {
- // TODO: 임시로 설정해놓은 카메라 이동
+ // TODO: 임시로 설정해놓은 카메라 이동, 실제로는 네이버 지도에 해당 가게 검색 결과로 이동
viewModel.moveCamera(37.5416, 127.0793)
},
)
@@ -251,5 +251,8 @@ fun SearchMenuScreen(
@Preview(showBackground = true)
@Composable
private fun SearchMenuScreenPreview() {
- SearchMenuScreen()
+ SearchMenuScreen(
+ ){
+
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/kuit/ourmenu/ui/searchmenu/viewmodel/SearchMenuViewModel.kt b/app/src/main/java/com/kuit/ourmenu/ui/searchmenu/viewmodel/SearchMenuViewModel.kt
index 552d47e2..e719bc50 100644
--- a/app/src/main/java/com/kuit/ourmenu/ui/searchmenu/viewmodel/SearchMenuViewModel.kt
+++ b/app/src/main/java/com/kuit/ourmenu/ui/searchmenu/viewmodel/SearchMenuViewModel.kt
@@ -313,11 +313,22 @@ class SearchMenuViewModel @Inject constructor(
}
}
- fun getMapMenuDetail(menuId: Long){
+ fun getMapMenuDetail(menuId: Long) {
viewModelScope.launch {
val response = mapRepository.getMapMenuDetail(menuId)
- response.onSuccess {
- Log.d("SearchMenuViewModel", "메뉴 상세 조회 성공: $it")
+ response.onSuccess { menuDetail ->
+ Log.d("SearchMenuViewModel", "메뉴 상세 조회 성공: $menuDetail")
+
+ // myMenus에서 해당 menuId를 가진 메뉴의 위치 정보 찾기
+ myMenus.value?.find { it.mapId == menuId }?.let { menu ->
+ // 해당 위치로 카메라 이동
+ moveCamera(menu.mapY, menu.mapX)
+ // 해당 핀을 활성화 상태로 변경
+ _activeMapId.value = menuId
+ refreshMarkers()
+ // 메뉴 상세 정보를 바텀시트에 표시하기 위해 설정
+ getMapDetail(menuId)
+ }
}.onFailure {
Log.d("SearchMenuViewModel", "메뉴 상세 조회 실패: ${it.message}")
}