diff --git a/business/src/main/java/in/koreatech/business/feature/insertstore/startinsetstore/StartInsertStore.kt b/business/src/main/java/in/koreatech/business/feature/insertstore/startinsetstore/StartInsertStore.kt index 5c9cb8854..e0ccc5ab3 100644 --- a/business/src/main/java/in/koreatech/business/feature/insertstore/startinsetstore/StartInsertStore.kt +++ b/business/src/main/java/in/koreatech/business/feature/insertstore/startinsetstore/StartInsertStore.kt @@ -42,7 +42,7 @@ fun StartInsertScreen( .padding(top = 56.dp, start = 10.dp , bottom = 18.dp) .width(40.dp) .height(40.dp) - .clickable { onBackPressed } + .clickable { onBackPressed() } ) { Image( diff --git a/business/src/main/java/in/koreatech/business/feature/store/navigator/StoreNavigator.kt b/business/src/main/java/in/koreatech/business/feature/store/navigator/StoreNavigator.kt index c3abda9db..a191f7cc5 100644 --- a/business/src/main/java/in/koreatech/business/feature/store/navigator/StoreNavigator.kt +++ b/business/src/main/java/in/koreatech/business/feature/store/navigator/StoreNavigator.kt @@ -18,7 +18,10 @@ import `in`.koreatech.business.feature.store.modifyinfo.ModifyOperatingTimeScree import `in`.koreatech.business.feature.store.storedetail.MyStoreDetailScreen import `in`.koreatech.business.feature.store.storedetail.MyStoreDetailViewModel import `in`.koreatech.business.navigation.MYSTORESCREEN +import `in`.koreatech.business.navigation.REGISTERSTORESCREEN import `in`.koreatech.business.navigation.sharedHiltViewModel +import `in`.koreatech.business.navigation.toNavigateModifyMenuScreen +import `in`.koreatech.business.navigation.toNavigateRegisterMenuScreen @OptIn(ExperimentalAnimationApi::class) fun NavGraphBuilder.myStoreScreen( @@ -37,7 +40,17 @@ fun NavGraphBuilder.myStoreScreen( modifier = Modifier.fillMaxSize(), navigateToModifyScreen = { navController.navigate(StoreRoute.MODIFY_INFO.name) }, viewModel = myStoreInfoViewModel, - modifyInfoViewModel = modifyInfoViewModel + modifyInfoViewModel = modifyInfoViewModel, + navigateToRegisterStoreScreen = { + navController.navigate(REGISTERSTORESCREEN) + }, + navigateToRegisterMenuScreen = { storeId -> + navController.toNavigateRegisterMenuScreen(storeId) + }, + navigateToModifyMenuScreen = {menuId -> + navController.toNavigateModifyMenuScreen(menuId) + + } ) } diff --git a/business/src/main/java/in/koreatech/business/feature/store/storedetail/MyStoreDetailScreen.kt b/business/src/main/java/in/koreatech/business/feature/store/storedetail/MyStoreDetailScreen.kt index 0b77c2b23..fde718a5b 100644 --- a/business/src/main/java/in/koreatech/business/feature/store/storedetail/MyStoreDetailScreen.kt +++ b/business/src/main/java/in/koreatech/business/feature/store/storedetail/MyStoreDetailScreen.kt @@ -1,6 +1,7 @@ package `in`.koreatech.business.feature.store.storedetail import android.annotation.SuppressLint +import android.util.Log import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.border import androidx.compose.foundation.layout.Arrangement @@ -42,6 +43,7 @@ import androidx.compose.ui.platform.LocalConfiguration import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.compose.ui.zIndex @@ -69,8 +71,10 @@ fun MyStoreDetailScreen( navigateToLoginScreen: () -> Unit = {}, navigateToUploadEventScreen: () -> Unit = {}, navigateToModifyScreen: () -> Unit = {}, + navigateToRegisterStoreScreen: () -> Unit = {}, navigateToManageMenuScreen: () -> Unit = {}, - navigateToRegisterMenuScreen: () -> Unit = {}, + navigateToRegisterMenuScreen: (Int) -> Unit = {}, + navigateToModifyMenuScreen: (Int) -> Unit = {} ) { val state = viewModel.collectAsState().value val pagerState = rememberPagerState(0, 0f) { 2 } @@ -98,6 +102,7 @@ fun MyStoreDetailScreen( } }, onDeleteEvent = viewModel::deleteEventAll, + onMenuItemClicked = viewModel::onModifyMenuClicked ) } viewModel.collectSideEffect { @@ -108,18 +113,24 @@ fun MyStoreDetailScreen( } MyStoreDetailSideEffect.NavigateToUploadEventScreen -> navigateToUploadEventScreen() - MyStoreDetailSideEffect.NavigateToModifyScreen -> navigateToModifyScreen() - MyStoreDetailSideEffect.NavigateToManageMenuScreen -> { - navigateToManageMenuScreen() + MyStoreDetailSideEffect.NavigateToModifyScreen -> { + navigateToModifyScreen() } + MyStoreDetailSideEffect.NavigateToRegisterStoreScreen -> navigateToRegisterStoreScreen() + MyStoreDetailSideEffect.NavigateToManageMenuScreen -> navigateToManageMenuScreen() MyStoreDetailSideEffect.NavigateToRegisterMenuScreen -> { - navigateToRegisterMenuScreen() + navigateToRegisterMenuScreen(state.storeId) + } + + is MyStoreDetailSideEffect.NavigateToModifyMenuScreen ->{ + navigateToModifyMenuScreen(it.menuId) } MyStoreDetailSideEffect.ShowErrorModifyEventToast -> ToastUtil.getInstance().makeShort( context.getString(R.string.error_modify_event) ) + } } } @@ -135,6 +146,8 @@ fun MyStoreScrollScreen( viewModel: MyStoreDetailViewModel, onTabSelected: (Int) -> Unit = {}, onDeleteEvent: () -> Unit = {}, + onMenuItemClicked: (Int) -> Unit, + ) { val toolBarHeight = 145.dp val configuration = LocalConfiguration.current @@ -198,60 +211,6 @@ fun MyStoreScrollScreen( } } } - item { - Row( - modifier = Modifier - .fillMaxWidth() - .padding(bottom = 5.dp), - horizontalArrangement = Arrangement.End, - ) { - Button( - onClick = { viewModel.onManageMenuClicked() }, - modifier = Modifier - .padding(horizontal = 8.dp) - .border(1.dp, ColorPrimary, RoundedCornerShape(0.dp)) - .width(107.dp) - .height(40.dp), - colors = ButtonDefaults.buttonColors( - backgroundColor = Color.White, - contentColor = Color.White - ), - shape = RoundedCornerShape(0.dp), - elevation = ButtonDefaults.elevation(defaultElevation = 0.dp, pressedElevation = 0.dp), - ) { - Text( - text = stringResource(R.string.manage_menu), - style = TextStyle( - color = ColorPrimary, - fontSize = 15.sp - ) - ) - } - - Button( - onClick = { viewModel.onRegisterMenuClicked() }, - modifier = Modifier - .padding(end = 20.dp) - .width(107.dp) - .height(40.dp), - colors = ButtonDefaults.buttonColors( - backgroundColor = ColorPrimary, - contentColor = Color.White - ), - shape = RoundedCornerShape(0.dp), - elevation = ButtonDefaults.elevation(defaultElevation = 0.dp, pressedElevation = 0.dp), - - ) { - Text( - text = stringResource(R.string.register_menu), - style = TextStyle( - color = Color.White, - fontSize = 15.sp - ) - ) - } - } - } item { Divider( modifier = Modifier @@ -295,7 +254,14 @@ fun MyStoreScrollScreen( modifier = Modifier.fillMaxSize() ) { when (page) { - 0 -> MenuScreen(isCollapsed, pagerState.currentPage, state) + 0 -> MenuScreen( + verticalOffset = isCollapsed, + currentPage = pagerState.currentPage, + state = state, + onMenuItemClicked = { + onMenuItemClicked(it) + } + ) 1 -> EventScreen( isCollapsed, pagerState.currentPage, @@ -310,4 +276,4 @@ fun MyStoreScrollScreen( } } } -} +} \ No newline at end of file diff --git a/business/src/main/java/in/koreatech/business/feature/store/storedetail/MyStoreDetailSideEffect.kt b/business/src/main/java/in/koreatech/business/feature/store/storedetail/MyStoreDetailSideEffect.kt index 61bc94707..2b803a449 100644 --- a/business/src/main/java/in/koreatech/business/feature/store/storedetail/MyStoreDetailSideEffect.kt +++ b/business/src/main/java/in/koreatech/business/feature/store/storedetail/MyStoreDetailSideEffect.kt @@ -1,12 +1,14 @@ package `in`.koreatech.business.feature.store.storedetail -import `in`.koreatech.business.feature.store.modifyinfo.ModifyInfoSideEffect sealed class MyStoreDetailSideEffect { data object NavigateToUploadEventScreen : MyStoreDetailSideEffect() data object NavigateToModifyScreen : MyStoreDetailSideEffect() data object NavigateToManageMenuScreen : MyStoreDetailSideEffect() data object NavigateToRegisterMenuScreen : MyStoreDetailSideEffect() + + data class NavigateToModifyMenuScreen(val menuId: Int) : MyStoreDetailSideEffect() + data object NavigateToRegisterStoreScreen : MyStoreDetailSideEffect() data class ShowErrorMessage(val errorMessage: String) : MyStoreDetailSideEffect() data object ShowErrorModifyEventToast : MyStoreDetailSideEffect() } \ No newline at end of file diff --git a/business/src/main/java/in/koreatech/business/feature/store/storedetail/MyStoreDetailState.kt b/business/src/main/java/in/koreatech/business/feature/store/storedetail/MyStoreDetailState.kt index 8468f4c90..c1c5c677c 100644 --- a/business/src/main/java/in/koreatech/business/feature/store/storedetail/MyStoreDetailState.kt +++ b/business/src/main/java/in/koreatech/business/feature/store/storedetail/MyStoreDetailState.kt @@ -17,5 +17,5 @@ data class MyStoreDetailState( val isEventExpanded: List = List(storeEvent?.size ?: 0) { false }, val isAllEventSelected: Boolean = false, val isSelectedEvent: MutableList = mutableListOf(), - val isEditMode: Boolean = false, + val isEditMode: Boolean = false ) \ No newline at end of file diff --git a/business/src/main/java/in/koreatech/business/feature/store/storedetail/MyStoreDetailViewModel.kt b/business/src/main/java/in/koreatech/business/feature/store/storedetail/MyStoreDetailViewModel.kt index 3eca71435..6020e14d9 100644 --- a/business/src/main/java/in/koreatech/business/feature/store/storedetail/MyStoreDetailViewModel.kt +++ b/business/src/main/java/in/koreatech/business/feature/store/storedetail/MyStoreDetailViewModel.kt @@ -1,6 +1,7 @@ package `in`.koreatech.business.feature.store.storedetail +import android.util.Log import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel @@ -176,6 +177,16 @@ class MyStoreDetailViewModel @Inject constructor( fun onRegisterMenuClicked() = intent { postSideEffect(MyStoreDetailSideEffect.NavigateToRegisterMenuScreen) } + + fun onModifyMenuClicked(menuId: Int){ + intent { + postSideEffect(MyStoreDetailSideEffect.NavigateToModifyMenuScreen(menuId)) + } + } + + fun onRegisterStoreClicked() = intent { + postSideEffect(MyStoreDetailSideEffect.NavigateToRegisterStoreScreen) + } fun modifyEventError() = intent { postSideEffect(MyStoreDetailSideEffect.ShowErrorModifyEventToast) } diff --git a/business/src/main/java/in/koreatech/business/feature/store/storedetail/MyStoreTopBar.kt b/business/src/main/java/in/koreatech/business/feature/store/storedetail/MyStoreTopBar.kt index 9d9fb6ccd..f0051fa96 100644 --- a/business/src/main/java/in/koreatech/business/feature/store/storedetail/MyStoreTopBar.kt +++ b/business/src/main/java/in/koreatech/business/feature/store/storedetail/MyStoreTopBar.kt @@ -1,10 +1,12 @@ package `in`.koreatech.business.feature.store.storedetail +import android.util.Log import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.animateColorAsState import androidx.compose.foundation.BorderStroke import androidx.compose.foundation.Image import androidx.compose.foundation.background +import androidx.compose.foundation.border import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column @@ -15,6 +17,7 @@ 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.shape.RoundedCornerShape import androidx.compose.material.Button import androidx.compose.material.ButtonDefaults import androidx.compose.material.Divider @@ -33,6 +36,7 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.hilt.navigation.compose.hiltViewModel +import coil.compose.rememberAsyncImagePainter import `in`.koreatech.business.R import `in`.koreatech.business.ui.theme.ColorPrimary import `in`.koreatech.business.ui.theme.ColorTextField @@ -95,6 +99,90 @@ fun StoreInfoScreen( ) { val state = viewModel.collectAsState().value Column(modifier = Modifier) { + + Row( + modifier = Modifier + .padding(vertical = 16.dp) + .fillMaxWidth(), + horizontalArrangement = Arrangement.Center + ) + { + Button( + onClick = { viewModel.onRegisterStoreClicked() }, + modifier = Modifier + .border(1.dp, ColorPrimary, RoundedCornerShape(0.dp)) + .width(107.dp) + .height(40.dp), + colors = ButtonDefaults.buttonColors( + backgroundColor = ColorPrimary, + contentColor = Color.White + ), + shape = RoundedCornerShape(0.dp), + elevation = ButtonDefaults.elevation(defaultElevation = 0.dp, pressedElevation = 0.dp), + ) { + Text( + text = stringResource(R.string.register_store), + style = TextStyle( + color = Color.White, + fontSize = 15.sp + ) + ) + } + + Button( + onClick = { }, //TODO 상점이 여러개일 경우 선택하는 기능 만들기 + modifier = Modifier + .padding(horizontal = 16.dp) + .border(1.dp, ColorPrimary, RoundedCornerShape(0.dp)) + .width(107.dp) + .height(40.dp), + colors = ButtonDefaults.buttonColors( + backgroundColor = ColorPrimary, + contentColor = Color.White + ), + shape = RoundedCornerShape(0.dp), + elevation = ButtonDefaults.elevation(defaultElevation = 0.dp, pressedElevation = 0.dp), + ) { + Text( + text = stringResource(R.string.select_store), + style = TextStyle( + color = Color.White, + fontSize = 15.sp + ) + ) + } + + Button( + onClick = { + viewModel.onRegisterMenuClicked() + }, + modifier = Modifier + .width(107.dp) + .height(40.dp), + colors = ButtonDefaults.buttonColors( + backgroundColor = ColorPrimary, + contentColor = Color.White + ), + shape = RoundedCornerShape(0.dp), + elevation = ButtonDefaults.elevation(defaultElevation = 0.dp, pressedElevation = 0.dp), + + ) { + Text( + text = stringResource(R.string.register_menu), + style = TextStyle( + color = Color.White, + fontSize = 15.sp + ) + ) + } + } + + Divider( + modifier = Modifier + .fillMaxWidth(), + color = ColorPrimary + ) + Box( modifier = Modifier .fillMaxSize() @@ -103,8 +191,9 @@ fun StoreInfoScreen( ) { Image( modifier = Modifier.height(255.dp), - painter = state.storeInfo?.imageUrls?.getOrNull(0) - .let { painterResource(id = R.drawable.no_image) }, + painter = rememberAsyncImagePainter( + model = state.storeInfo?.imageUrls?.getOrNull(0) ?: R.drawable.no_image + ), contentDescription = stringResource(R.string.shop_image), contentScale = ContentScale.Crop, ) @@ -125,12 +214,12 @@ fun StoreInfoScreen( ) { Row(verticalAlignment = Alignment.CenterVertically) { + Text(text = stringResource(R.string.shop_management), color = ColorPrimary, fontSize = 16.sp) + Spacer(modifier = Modifier.width(1.dp)) Image( painter = painterResource(id = R.drawable.ic_setting), contentDescription = stringResource(R.string.shop_management), ) - Spacer(modifier = Modifier.width(1.dp)) - Text(text = stringResource(R.string.shop_management), color = ColorPrimary, fontSize = 16.sp) } } Text( diff --git a/business/src/main/java/in/koreatech/business/feature/store/storedetail/menu/MenuItem.kt b/business/src/main/java/in/koreatech/business/feature/store/storedetail/menu/MenuItem.kt index 3a28b992a..315c411da 100644 --- a/business/src/main/java/in/koreatech/business/feature/store/storedetail/menu/MenuItem.kt +++ b/business/src/main/java/in/koreatech/business/feature/store/storedetail/menu/MenuItem.kt @@ -1,6 +1,8 @@ package `in`.koreatech.business.feature.store.storedetail.menu +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.Column import androidx.compose.foundation.layout.Row @@ -14,11 +16,13 @@ import androidx.compose.material.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import coil.compose.rememberAsyncImagePainter import `in`.koreatech.business.R import `in`.koreatech.business.ui.theme.ColorCategory import `in`.koreatech.business.ui.theme.ColorPrimary @@ -28,12 +32,19 @@ import `in`.koreatech.koin.domain.model.store.StoreMenuCategories @Composable -fun MenuItem(menuList: StoreMenuCategories) { +fun MenuItem( + menuList: StoreMenuCategories, + onMenuClicked:(Int) -> Unit = {} +) { menuList.menus?.forEach { item -> Row( modifier = Modifier .fillMaxWidth() - .padding(horizontal = 25.dp, vertical = 10.dp), + .padding(horizontal = 25.dp, vertical = 10.dp) + .clickable { + onMenuClicked(item.id) + } + , horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically ) { @@ -45,7 +56,11 @@ fun MenuItem(menuList: StoreMenuCategories) { modifier = Modifier .width(68.dp) .height(68.dp), - painter = painterResource(id = R.drawable.ic_koin_logo), + contentScale = ContentScale.Crop + , + painter = rememberAsyncImagePainter( + model = item.imageUrls?.firstOrNull() ?: R.drawable.ic_koin_logo + ), contentDescription = stringResource(R.string.menu_default_image), ) } diff --git a/business/src/main/java/in/koreatech/business/feature/store/storedetail/menu/MenuScreen.kt b/business/src/main/java/in/koreatech/business/feature/store/storedetail/menu/MenuScreen.kt index b16e69f83..7ec1d2ca0 100644 --- a/business/src/main/java/in/koreatech/business/feature/store/storedetail/menu/MenuScreen.kt +++ b/business/src/main/java/in/koreatech/business/feature/store/storedetail/menu/MenuScreen.kt @@ -7,7 +7,9 @@ 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.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyRow +import androidx.compose.foundation.lazy.items import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.verticalScroll @@ -31,7 +33,12 @@ import `in`.koreatech.business.ui.theme.Gray6 @Composable -fun MenuScreen(verticalOffset: Boolean, currentPage: Int, state: MyStoreDetailState) { +fun MenuScreen( + verticalOffset: Boolean, + currentPage: Int, + state: MyStoreDetailState, + onMenuItemClicked: (Int) -> Unit = {} +) { val scrollState = rememberScrollState() val enabledScroll by remember( verticalOffset, scrollState.value @@ -74,15 +81,21 @@ fun MenuScreen(verticalOffset: Boolean, currentPage: Int, state: MyStoreDetailSt } } } - Column( + LazyColumn( modifier = Modifier - .fillMaxSize() - .verticalScroll(enabled = enabledScroll, state = scrollState) + .fillMaxSize(), + userScrollEnabled = enabledScroll ) { - - state.storeMenu?.forEach { - MenuCategories(it) - MenuItem(it) + state.storeMenu?.let { + items(state.storeMenu){ + MenuCategories(it) + MenuItem( + menuList = it, + onMenuClicked = {menuId -> + onMenuItemClicked(menuId) + } + ) + } } } } diff --git a/business/src/main/java/in/koreatech/business/feature/storemenu/modifymenu/modifymenu/ModifyMenuScreen.kt b/business/src/main/java/in/koreatech/business/feature/storemenu/modifymenu/modifymenu/ModifyMenuScreen.kt index 2116925e1..45ad2532f 100644 --- a/business/src/main/java/in/koreatech/business/feature/storemenu/modifymenu/modifymenu/ModifyMenuScreen.kt +++ b/business/src/main/java/in/koreatech/business/feature/storemenu/modifymenu/modifymenu/ModifyMenuScreen.kt @@ -274,7 +274,7 @@ fun ModifyMenuScreenImpl( modifier = Modifier .align(Alignment.CenterStart) .padding(start = 16.dp), - onClick = { onBackPressed } + onClick = { onBackPressed() } ) { Image( painter = painterResource(id = R.drawable.ic_white_arrow_back), @@ -590,7 +590,7 @@ fun ModifyMenuScreenImpl( horizontalArrangement = Arrangement.spacedBy(8.dp) ) { Button( - onClick = {}, + onClick = {onBackPressed()}, shape = RectangleShape, colors = ButtonDefaults.buttonColors(Color.White), modifier = Modifier diff --git a/business/src/main/java/in/koreatech/business/feature/storemenu/modifymenu/navigator/ModifyMenuNavigator.kt b/business/src/main/java/in/koreatech/business/feature/storemenu/modifymenu/navigator/ModifyMenuNavigator.kt index 4d158d261..f92d690a8 100644 --- a/business/src/main/java/in/koreatech/business/feature/storemenu/modifymenu/navigator/ModifyMenuNavigator.kt +++ b/business/src/main/java/in/koreatech/business/feature/storemenu/modifymenu/navigator/ModifyMenuNavigator.kt @@ -11,6 +11,7 @@ import `in`.koreatech.business.feature.storemenu.modifymenu.modifymenu.ModifyMen import `in`.koreatech.business.feature.storemenu.modifymenu.modifymenu.ModifyMenuScreen import `in`.koreatech.business.feature.storemenu.modifymenu.modifymenu.ModifyMenuViewModel import `in`.koreatech.business.navigation.MODIFYMENUSCREEN +import `in`.koreatech.business.navigation.MYSTORESCREEN import `in`.koreatech.business.navigation.sharedHiltViewModel @OptIn(ExperimentalAnimationApi::class) @@ -49,6 +50,13 @@ fun NavGraphBuilder.modifyMenuScreen( viewModel = viewModel, onBackPressed = { navController.navigateUp() + }, + goToStoreMainScreen = { + navController.navigate(MYSTORESCREEN){ + this.popUpTo(MODIFYMENUSCREEN){ + inclusive = true + } + } } ) } diff --git a/business/src/main/java/in/koreatech/business/feature/storemenu/registermenu/navigator/RegisterMenuNavigator.kt b/business/src/main/java/in/koreatech/business/feature/storemenu/registermenu/navigator/RegisterMenuNavigator.kt index 2957ac5c8..c93778c71 100644 --- a/business/src/main/java/in/koreatech/business/feature/storemenu/registermenu/navigator/RegisterMenuNavigator.kt +++ b/business/src/main/java/in/koreatech/business/feature/storemenu/registermenu/navigator/RegisterMenuNavigator.kt @@ -8,6 +8,8 @@ import androidx.navigation.navigation import `in`.koreatech.business.feature.storemenu.registermenu.registermenu.RegisterMenuCheckScreen import `in`.koreatech.business.feature.storemenu.registermenu.registermenu.RegisterMenuScreen import `in`.koreatech.business.feature.storemenu.registermenu.registermenu.RegisterMenuViewModel +import `in`.koreatech.business.navigation.MODIFYMENUSCREEN +import `in`.koreatech.business.navigation.MYSTORESCREEN import `in`.koreatech.business.navigation.REGISTERMENUSCREEN import `in`.koreatech.business.navigation.sharedHiltViewModel @@ -41,7 +43,14 @@ fun NavGraphBuilder.registerMenuScreen( val viewModel: RegisterMenuViewModel = it.sharedHiltViewModel(navController = navController) RegisterMenuCheckScreen( viewModel = viewModel, - onBackPressed = { navController.navigateUp() } + onBackPressed = { navController.navigateUp() }, + goToStoreMainScreen = { + navController.navigate(MYSTORESCREEN){ + this.popUpTo(MODIFYMENUSCREEN){ + inclusive = true + } + } + } ) } } diff --git a/business/src/main/java/in/koreatech/business/feature/storemenu/registermenu/registermenu/RegisterMenuScreen.kt b/business/src/main/java/in/koreatech/business/feature/storemenu/registermenu/registermenu/RegisterMenuScreen.kt index 562e946be..9c39f125f 100644 --- a/business/src/main/java/in/koreatech/business/feature/storemenu/registermenu/registermenu/RegisterMenuScreen.kt +++ b/business/src/main/java/in/koreatech/business/feature/storemenu/registermenu/registermenu/RegisterMenuScreen.kt @@ -278,7 +278,7 @@ fun RegisterMenuScreenImpl( modifier = Modifier .align(Alignment.CenterStart) .padding(start = 16.dp), - onClick = { onBackPressed } + onClick = { onBackPressed() } ) { Image( painter = painterResource(id = R.drawable.ic_white_arrow_back), @@ -592,7 +592,7 @@ fun RegisterMenuScreenImpl( horizontalArrangement = Arrangement.spacedBy(8.dp) ) { Button( - onClick = {}, + onClick = {onBackPressed()}, shape = RectangleShape, colors = ButtonDefaults.buttonColors(Color.White), modifier = Modifier diff --git a/business/src/main/java/in/koreatech/business/feature/storemenu/registermenu/registermenu/RegisterMenuState.kt b/business/src/main/java/in/koreatech/business/feature/storemenu/registermenu/registermenu/RegisterMenuState.kt index d8aed773a..93f275739 100644 --- a/business/src/main/java/in/koreatech/business/feature/storemenu/registermenu/registermenu/RegisterMenuState.kt +++ b/business/src/main/java/in/koreatech/business/feature/storemenu/registermenu/registermenu/RegisterMenuState.kt @@ -6,7 +6,7 @@ import `in`.koreatech.koin.domain.model.owner.menu.StoreMenuOptionPrice data class RegisterMenuState( - val shopId: Int = 163, + val storeId: Int = -1, val menuName: String = "", val menuPrice: String = "", val menuOptionPrice: List = emptyList(), diff --git a/business/src/main/java/in/koreatech/business/feature/storemenu/registermenu/registermenu/RegisterMenuViewModel.kt b/business/src/main/java/in/koreatech/business/feature/storemenu/registermenu/registermenu/RegisterMenuViewModel.kt index 1fad11df3..3f55b67a7 100644 --- a/business/src/main/java/in/koreatech/business/feature/storemenu/registermenu/registermenu/RegisterMenuViewModel.kt +++ b/business/src/main/java/in/koreatech/business/feature/storemenu/registermenu/registermenu/RegisterMenuViewModel.kt @@ -4,6 +4,7 @@ import android.content.Context import android.net.Uri import android.provider.OpenableColumns import android.util.Log +import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel @@ -27,6 +28,7 @@ import javax.inject.Inject @HiltViewModel class RegisterMenuViewModel @Inject constructor( + savedStateHandle: SavedStateHandle, private val getMenuCategoryUseCase : GetMenuCategoryUseCase, private val getMarketPreSignedUrlUseCase: GetMarketPreSignedUrlUseCase, private val uploadFilesUseCase: UploadFileUseCase, @@ -34,19 +36,19 @@ class RegisterMenuViewModel @Inject constructor( ): ViewModel(), ContainerHost { override val container = container(RegisterMenuState()) - + private val storeId: Int = checkNotNull(savedStateHandle["storeId"]) init { - getStoreMenuCategory() + getStoreMenuCategory(storeId) addDefaultImage() } - private fun getStoreMenuCategory(){ + private fun getStoreMenuCategory(storeId: Int){ intent { viewModelScope.launch { - val storeId = 163 //Todo: 임시 변수 이므로 수정 필요 val menuCategory = getMenuCategoryUseCase(storeId) reduce { state.copy( + storeId = storeId, menuCategory = menuCategory ) } @@ -108,7 +110,7 @@ class RegisterMenuViewModel @Inject constructor( intent { viewModelScope.launch{ registerMenuUseCase( - storeId = state.shopId, + storeId = state.storeId, menuCategoryId = state.menuCategoryId, description = state.description, menuImageUrlList = state.imageUrlList, diff --git a/business/src/main/java/in/koreatech/business/navigation/BusinessNavHost.kt b/business/src/main/java/in/koreatech/business/navigation/BusinessNavHost.kt index 4216d6a0e..0a8a3253f 100644 --- a/business/src/main/java/in/koreatech/business/navigation/BusinessNavHost.kt +++ b/business/src/main/java/in/koreatech/business/navigation/BusinessNavHost.kt @@ -106,6 +106,13 @@ fun NavController.toNavigateModifyMenuScreen(menuId: Int) { navigate("${MODIFYMENUSCREEN}/$menuId", bundle) } +fun NavController.toNavigateRegisterMenuScreen(storeId: Int) { + val bundle = Bundle().apply { + putInt("storeId", storeId) + } + navigate(REGISTERMENUSCREEN, bundle) +} + fun NavController.navigate( route: String, args: Bundle, diff --git a/business/src/main/res/values/strings.xml b/business/src/main/res/values/strings.xml index 39373e66a..bb10355e6 100644 --- a/business/src/main/res/values/strings.xml +++ b/business/src/main/res/values/strings.xml @@ -178,5 +178,7 @@ 2. 비밀번호 변경 인증번호를 입력해주세요. 메뉴 관리 + 상점 선택 + 상점 추가 메뉴 추가