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 e0ccc5ab3..678071797 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 @@ -51,7 +51,6 @@ fun StartInsertScreen( modifier = modifier .width(40.dp) .height(40.dp) - .clickable { } ) } diff --git a/business/src/main/java/in/koreatech/business/feature/signin/SignInViewModel.kt b/business/src/main/java/in/koreatech/business/feature/signin/SignInViewModel.kt index a54103af1..e888f1e48 100644 --- a/business/src/main/java/in/koreatech/business/feature/signin/SignInViewModel.kt +++ b/business/src/main/java/in/koreatech/business/feature/signin/SignInViewModel.kt @@ -11,6 +11,7 @@ import `in`.koreatech.koin.domain.util.onFailure import `in`.koreatech.koin.domain.util.onSuccess import kotlinx.coroutines.launch import org.orbitmvi.orbit.ContainerHost +import org.orbitmvi.orbit.syntax.simple.blockingIntent import org.orbitmvi.orbit.syntax.simple.intent import org.orbitmvi.orbit.syntax.simple.postSideEffect import org.orbitmvi.orbit.syntax.simple.reduce @@ -26,11 +27,11 @@ class SignInViewModel @Inject constructor( SignInState() ) - fun insertId(id: String) = intent{ + fun insertId(id: String) = blockingIntent{ reduce { state.copy(id = id) } } - fun insertPassword(password: String) = intent{ + fun insertPassword(password: String) = blockingIntent{ reduce { state.copy(password = password) } } fun navigateToSignUp() = intent { diff --git a/business/src/main/java/in/koreatech/business/feature/store/modifyinfo/ModifyInfoScreen.kt b/business/src/main/java/in/koreatech/business/feature/store/modifyinfo/ModifyInfoScreen.kt index a076d1080..d574d4aad 100644 --- a/business/src/main/java/in/koreatech/business/feature/store/modifyinfo/ModifyInfoScreen.kt +++ b/business/src/main/java/in/koreatech/business/feature/store/modifyinfo/ModifyInfoScreen.kt @@ -58,6 +58,7 @@ fun ModifyInfoScreen( viewModel: ModifyInfoViewModel = hiltViewModel(), storeInfoViewModel: MyStoreDetailViewModel = hiltViewModel(), onSettingOperatingClicked: () -> Unit = {}, + onModifyButtonClicked: () -> Unit = {} ) { val state = viewModel.collectAsState().value val storeInfoState = storeInfoViewModel.collectAsState().value @@ -249,7 +250,6 @@ fun ModifyInfoScreen( storeInfoState.storeId, state.storeInfo ) - viewModel.onBackButtonClicked() }, modifier = Modifier .width(130.dp) @@ -279,7 +279,11 @@ fun ModifyInfoScreen( when (it) { ModifyInfoSideEffect.NavigateToBackScreen -> onBackClicked() ModifyInfoSideEffect.NavigateToSettingOperatingTime -> onSettingOperatingClicked() - else -> {} + ModifyInfoSideEffect.NavigateToMyStoreScreen -> { + storeInfoViewModel.modifyStoreInfo(state.storeInfo) + storeInfoViewModel.refreshStoreList() + onModifyButtonClicked() + } } } } diff --git a/business/src/main/java/in/koreatech/business/feature/store/modifyinfo/ModifyInfoSideEffect.kt b/business/src/main/java/in/koreatech/business/feature/store/modifyinfo/ModifyInfoSideEffect.kt index c2fc8a65c..a1d711d1f 100644 --- a/business/src/main/java/in/koreatech/business/feature/store/modifyinfo/ModifyInfoSideEffect.kt +++ b/business/src/main/java/in/koreatech/business/feature/store/modifyinfo/ModifyInfoSideEffect.kt @@ -3,4 +3,5 @@ package `in`.koreatech.business.feature.store.modifyinfo sealed class ModifyInfoSideEffect { data object NavigateToBackScreen : ModifyInfoSideEffect() data object NavigateToSettingOperatingTime : ModifyInfoSideEffect() + data object NavigateToMyStoreScreen : ModifyInfoSideEffect() } diff --git a/business/src/main/java/in/koreatech/business/feature/store/modifyinfo/ModifyInfoViewModel.kt b/business/src/main/java/in/koreatech/business/feature/store/modifyinfo/ModifyInfoViewModel.kt index 4370b15c7..694f67aea 100644 --- a/business/src/main/java/in/koreatech/business/feature/store/modifyinfo/ModifyInfoViewModel.kt +++ b/business/src/main/java/in/koreatech/business/feature/store/modifyinfo/ModifyInfoViewModel.kt @@ -2,6 +2,7 @@ package `in`.koreatech.business.feature.store.modifyinfo import android.graphics.Bitmap import android.net.Uri +import android.util.Log import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.chargemap.compose.numberpicker.FullHours @@ -176,11 +177,15 @@ class ModifyInfoViewModel @Inject constructor( } fun modifyStoreInfo(storeId: Int, storeDetailInfo: StoreDetailInfo) { - viewModelScope.launch { - modifyInfoUseCase.invoke( - storeId, - storeDetailInfo, - ) + intent { + viewModelScope.launch { + modifyInfoUseCase.invoke( + storeId, + storeDetailInfo, + ).apply { + this ?: postSideEffect(ModifyInfoSideEffect.NavigateToMyStoreScreen) + } + } } } diff --git a/business/src/main/java/in/koreatech/business/feature/store/modifyinfo/ModifyOperatingTimeScreen.kt b/business/src/main/java/in/koreatech/business/feature/store/modifyinfo/ModifyOperatingTimeScreen.kt index 74688092c..83f3b0ae0 100644 --- a/business/src/main/java/in/koreatech/business/feature/store/modifyinfo/ModifyOperatingTimeScreen.kt +++ b/business/src/main/java/in/koreatech/business/feature/store/modifyinfo/ModifyOperatingTimeScreen.kt @@ -42,7 +42,6 @@ import org.orbitmvi.orbit.compose.collectSideEffect @Composable fun ModifyOperatingTimeScreen( modifier: Modifier = Modifier, - myStoreDetailViewModel: MyStoreDetailViewModel = hiltViewModel(), viewModel: ModifyInfoViewModel = hiltViewModel(), onBackClicked: () -> Unit = {}, ) { 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 a191f7cc5..f628d7c77 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 @@ -1,16 +1,17 @@ package `in`.koreatech.business.feature.store.navigator +import android.os.Bundle +import android.util.Log import androidx.compose.animation.ExperimentalAnimationApi import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import androidx.hilt.navigation.compose.hiltViewModel import androidx.navigation.NavController +import androidx.navigation.NavGraph import androidx.navigation.NavGraphBuilder import androidx.navigation.NavHostController -import androidx.navigation.compose.NavHost +import androidx.navigation.NavOptions +import androidx.navigation.Navigator import androidx.navigation.compose.composable -import androidx.navigation.compose.rememberNavController import androidx.navigation.navigation import `in`.koreatech.business.feature.store.modifyinfo.ModifyInfoScreen import `in`.koreatech.business.feature.store.modifyinfo.ModifyInfoViewModel @@ -19,6 +20,7 @@ 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.navigate import `in`.koreatech.business.navigation.sharedHiltViewModel import `in`.koreatech.business.navigation.toNavigateModifyMenuScreen import `in`.koreatech.business.navigation.toNavigateRegisterMenuScreen @@ -38,7 +40,9 @@ fun NavGraphBuilder.myStoreScreen( val modifyInfoViewModel: ModifyInfoViewModel = it.sharedHiltViewModel(navController = navController) MyStoreDetailScreen( modifier = Modifier.fillMaxSize(), - navigateToModifyScreen = { navController.navigate(StoreRoute.MODIFY_INFO.name) }, + navigateToModifyScreen = {storeId -> + navController.navigate(StoreRoute.MODIFY_INFO.name) + }, viewModel = myStoreInfoViewModel, modifyInfoViewModel = modifyInfoViewModel, navigateToRegisterStoreScreen = { @@ -58,11 +62,20 @@ fun NavGraphBuilder.myStoreScreen( route = StoreRoute.MODIFY_INFO.name ) { val modifyInfoViewModel: ModifyInfoViewModel = it.sharedHiltViewModel(navController = navController) + val myStoreInfoViewModel: MyStoreDetailViewModel = it.sharedHiltViewModel(navController = navController) ModifyInfoScreen( viewModel = modifyInfoViewModel, + storeInfoViewModel= myStoreInfoViewModel, onSettingOperatingClicked = { navController.navigate(StoreRoute.SETTING_OPERATING_TIME.name) }, - onBackClicked = { navController.popBackStack() } + onBackClicked = { navController.popBackStack() }, + onModifyButtonClicked = { + navController.navigate(StoreRoute.MY_STORE.name){ + popUpTo(StoreRoute.MODIFY_INFO.name){ + inclusive = true + } + } + } ) } @@ -77,4 +90,24 @@ fun NavGraphBuilder.myStoreScreen( ) } } +} + +fun NavController.toNaviGateModifyStoreScreen(storeId: Int){ + val bundle = Bundle().apply { + putInt("storeId", storeId) + } + navigate(StoreRoute.MODIFY_INFO.name, bundle) +} +fun NavController.navigate( + route: String, + args: Bundle, + navOptions: NavOptions? = null, + navigatorExtras: Navigator.Extras? = null +) { + val nodes = graph.findNode(MYSTORESCREEN) as? NavGraph + + val nodeId = nodes?.findNode(route)?.id + if (nodeId != null) { + navigate(nodeId, args, navOptions, navigatorExtras) + } } \ No newline at end of file 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 fde718a5b..9d94b6f5f 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,16 +1,13 @@ 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 import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer 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.width @@ -22,8 +19,6 @@ import androidx.compose.foundation.pager.HorizontalPager import androidx.compose.foundation.pager.PagerState import androidx.compose.foundation.pager.rememberPagerState import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.Button -import androidx.compose.material.ButtonDefaults import androidx.compose.material.Divider import androidx.compose.material.Tab import androidx.compose.material.TabRow @@ -43,13 +38,13 @@ 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 import `in`.koreatech.business.R import `in`.koreatech.business.feature.store.OwnerStoreAppBar import `in`.koreatech.business.feature.store.modifyinfo.ModifyInfoViewModel +import `in`.koreatech.business.feature.store.storedetail.dialog.MyStoreSelectDialog import `in`.koreatech.business.feature.store.storedetail.event.EventScreen import `in`.koreatech.business.feature.store.storedetail.menu.MenuScreen import `in`.koreatech.business.ui.theme.Blue2 @@ -70,7 +65,7 @@ fun MyStoreDetailScreen( modifyInfoViewModel: ModifyInfoViewModel, navigateToLoginScreen: () -> Unit = {}, navigateToUploadEventScreen: () -> Unit = {}, - navigateToModifyScreen: () -> Unit = {}, + navigateToModifyScreen: (Int) -> Unit = {}, navigateToRegisterStoreScreen: () -> Unit = {}, navigateToManageMenuScreen: () -> Unit = {}, navigateToRegisterMenuScreen: (Int) -> Unit = {}, @@ -83,7 +78,6 @@ fun MyStoreDetailScreen( val context = LocalContext.current LaunchedEffect(state.storeInfo) { - viewModel.initOwnerShopList() modifyInfoViewModel.initStoreInfo(state.storeInfo ?: return@LaunchedEffect) } @@ -91,6 +85,12 @@ fun MyStoreDetailScreen( modifier = Modifier.fillMaxSize(), horizontalAlignment = Alignment.CenterHorizontally, ) { OwnerStoreAppBar(stringResource(R.string.my_shop)) + MyStoreSelectDialog( + dialogVisibility = state.selectDialogVisibility, + storeList = state.storeList, + onClickCancel = viewModel::closeSelectStoreDialog, + selectStore = viewModel::changeMyStoreInfo + ) MyStoreScrollScreen( state = state, listState = listState, @@ -113,8 +113,8 @@ fun MyStoreDetailScreen( } MyStoreDetailSideEffect.NavigateToUploadEventScreen -> navigateToUploadEventScreen() - MyStoreDetailSideEffect.NavigateToModifyScreen -> { - navigateToModifyScreen() + is MyStoreDetailSideEffect.NavigateToModifyScreen -> { + navigateToModifyScreen(it.storeId) } MyStoreDetailSideEffect.NavigateToRegisterStoreScreen -> navigateToRegisterStoreScreen() MyStoreDetailSideEffect.NavigateToManageMenuScreen -> navigateToManageMenuScreen() 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 2b803a449..520d118d4 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 @@ -3,7 +3,7 @@ package `in`.koreatech.business.feature.store.storedetail sealed class MyStoreDetailSideEffect { data object NavigateToUploadEventScreen : MyStoreDetailSideEffect() - data object NavigateToModifyScreen : MyStoreDetailSideEffect() + data class NavigateToModifyScreen(val storeId: Int) : MyStoreDetailSideEffect() data object NavigateToManageMenuScreen : MyStoreDetailSideEffect() data object NavigateToRegisterMenuScreen : MyStoreDetailSideEffect() 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 c1c5c677c..c9daf89a8 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 @@ -4,7 +4,6 @@ import `in`.koreatech.koin.domain.model.owner.StoreDetailInfo import `in`.koreatech.koin.domain.model.store.ShopEvent import `in`.koreatech.koin.domain.model.store.Store import `in`.koreatech.koin.domain.model.store.StoreMenuCategories -import `in`.koreatech.koin.domain.model.store.StoreWithMenu import kotlinx.collections.immutable.ImmutableList data class MyStoreDetailState( @@ -14,6 +13,7 @@ data class MyStoreDetailState( val storeEvent: ImmutableList? = null, val storeMenu: ImmutableList? = null, val dialogVisibility: Boolean = false, + val selectDialogVisibility: Boolean = false, val isEventExpanded: List = List(storeEvent?.size ?: 0) { false }, val isAllEventSelected: Boolean = false, val isSelectedEvent: MutableList = mutableListOf(), 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 6020e14d9..40d367360 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,10 +1,10 @@ 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 +import `in`.koreatech.koin.domain.model.owner.StoreDetailInfo import `in`.koreatech.koin.domain.usecase.business.DeleteOwnerEventsUseCase import `in`.koreatech.koin.domain.usecase.business.GetOwnerShopEventsUseCase import `in`.koreatech.koin.domain.usecase.business.GetOwnerShopInfoUseCase @@ -89,8 +89,7 @@ class MyStoreDetailViewModel @Inject constructor( } } - - fun getOwnerShopInfo(shopId: Int) = intent { + private fun getOwnerShopInfo(shopId: Int) = intent { viewModelScope.launch { getOwnerShopInfoUseCase(shopId).onSuccess { reduce { @@ -106,7 +105,58 @@ class MyStoreDetailViewModel @Inject constructor( } } - fun initOwnerShopList() = intent { + private fun getShopEvents() = intent { + viewModelScope.launch { + getOwnerShopEventsUseCase(state.storeId).also { + reduce { + state.copy( + storeEvent = it.events.toImmutableList(), + isEventExpanded = List(it.events.size) { _ -> false }) + } + } + } + } + + fun changeMyStoreInfo(storeId: Int) = intent{ + viewModelScope.launch { + getOwnerShopInfoUseCase(storeId).onSuccess { + reduce { + state.copy( + storeInfo = it + ) + } + reduce { + state.copy( + storeId = storeId + ) + } + getShopEvents() + getShopMenus() + }.onFailure { + reduce { + state.copy(storeInfo = null) + } + } + } + } + + fun modifyStoreInfo(storeInfo: StoreDetailInfo) = intent { + reduce { + state.copy(storeInfo = storeInfo) + } + } + + fun changeDialogVisibility() = intent { + reduce { + state.copy( + dialogVisibility = if (state.isSelectedEvent.size > 0) { + !state.dialogVisibility + } else false + ) + } + } + + private fun initOwnerShopList() = intent { viewModelScope.launch { getOwnerShopListUseCase().onSuccess { reduce { @@ -133,7 +183,7 @@ class MyStoreDetailViewModel @Inject constructor( } } - fun getShopMenus() = intent { + private fun getShopMenus() = intent { viewModelScope.launch { getOwnerShopMenusUseCase(state.storeId).also { reduce { @@ -143,31 +193,40 @@ class MyStoreDetailViewModel @Inject constructor( } } - fun getShopEvents() = intent { - viewModelScope.launch { - getOwnerShopEventsUseCase(state.storeId).also { - reduce { - state.copy( - storeEvent = it.events.toImmutableList(), - isEventExpanded = List(it.events.size) { _ -> false }) - } - } + fun refreshStoreList() = intent { + viewModelScope.launch { + getOwnerShopListUseCase() + .onSuccess { + reduce { + state.copy( + storeList = it, + ) + } + }.onFailure { + postSideEffect(MyStoreDetailSideEffect.ShowErrorMessage(it.message)) + } } } - fun changeDialogVisibility() = intent { + fun showSelectStoreDialog() = intent{ reduce { state.copy( - dialogVisibility = if (state.isSelectedEvent.size > 0) { - !state.dialogVisibility - } else false + selectDialogVisibility = true + ) + } + } + + fun closeSelectStoreDialog() = intent{ + reduce { + state.copy( + selectDialogVisibility = false ) } } fun navigateToModifyScreen() = intent { if (state.storeId == -1) return@intent - postSideEffect(MyStoreDetailSideEffect.NavigateToModifyScreen) + postSideEffect(MyStoreDetailSideEffect.NavigateToModifyScreen(state.storeId)) } fun onManageMenuClicked() = intent { 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 f0051fa96..ee5ade8d9 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,6 +1,5 @@ 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 @@ -35,7 +34,6 @@ import androidx.compose.ui.text.TextStyle 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 @@ -130,7 +128,9 @@ fun StoreInfoScreen( } Button( - onClick = { }, //TODO 상점이 여러개일 경우 선택하는 기능 만들기 + onClick = { + viewModel.showSelectStoreDialog() + }, modifier = Modifier .padding(horizontal = 16.dp) .border(1.dp, ColorPrimary, RoundedCornerShape(0.dp)) diff --git a/business/src/main/java/in/koreatech/business/feature/store/storedetail/dialog/MyStoreSelectDialog.kt b/business/src/main/java/in/koreatech/business/feature/store/storedetail/dialog/MyStoreSelectDialog.kt new file mode 100644 index 000000000..2906696fa --- /dev/null +++ b/business/src/main/java/in/koreatech/business/feature/store/storedetail/dialog/MyStoreSelectDialog.kt @@ -0,0 +1,140 @@ +package `in`.koreatech.business.feature.store.storedetail.dialog + +import android.util.Log +import androidx.compose.foundation.BorderStroke +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.heightIn +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.wrapContentHeight +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.foundation.lazy.itemsIndexed +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.AlertDialog +import androidx.compose.material.Button +import androidx.compose.material.ButtonDefaults +import androidx.compose.material.Card +import androidx.compose.material.Text +import androidx.compose.material.TextButton +import androidx.compose.runtime.Composable +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +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.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.unit.sp +import androidx.compose.ui.window.Dialog +import androidx.compose.ui.window.DialogProperties +import `in`.koreatech.business.R +import `in`.koreatech.business.ui.theme.ColorActiveButton +import `in`.koreatech.business.ui.theme.ColorDisabledButton +import `in`.koreatech.business.ui.theme.ColorMinor +import `in`.koreatech.koin.domain.model.store.Store + +@Composable +fun MyStoreSelectDialog( + onClickCancel: () -> Unit = {}, + dialogVisibility: Boolean = true, + storeList: List = emptyList(), + selectStore: (Int) -> Unit = {} +) { + if(dialogVisibility){ + Dialog( + onDismissRequest = { onClickCancel() }, + properties = DialogProperties( + dismissOnBackPress = true, + dismissOnClickOutside = true, + ) + ) { + Card( + shape = RoundedCornerShape( + topStart = 20.dp, + topEnd = 20.dp, + bottomStart = 20.dp, + bottomEnd = 20.dp + ), + ) + { + Column( + modifier = Modifier + .width(300.dp) + .wrapContentHeight(), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + + Box( + modifier = Modifier + .padding(top = 16.dp) + .fillMaxWidth() + ) { + Image( + painter = painterResource(R.drawable.ic_x), + contentDescription = "", + modifier = Modifier + .align(Alignment.TopEnd) + .padding(end = 16.dp) + .clickable { + onClickCancel() + } + ) + } + + Text( + text = stringResource(id = R.string.select_store), + textAlign = TextAlign.Center, + color = Color.Black, + fontSize = 18.sp, + fontWeight = FontWeight.Bold + ) + + LazyColumn( + modifier = Modifier + .padding(top = 8.dp, bottom = 8.dp) + .heightIn(max = 200.dp), + horizontalAlignment = Alignment.CenterHorizontally, + ){ + itemsIndexed(storeList){ index, store -> + Text( + modifier = Modifier + .height(30.dp) + .padding(horizontal = 40.dp) + .clickable { + selectStore(store.uid) + onClickCancel() + } + , + text = "${index + 1}. ${store.name}", + fontSize = 15.sp, + textAlign = TextAlign.Start + ) + } + } + } + } + } + } +} + +@Preview +@Composable +private fun PreviewMyStoreSelectDialog() { + MyStoreSelectDialog( + ) +} \ No newline at end of file diff --git a/business/src/main/java/in/koreatech/business/navigation/TmpScreen.kt b/business/src/main/java/in/koreatech/business/navigation/TmpScreen.kt deleted file mode 100644 index 3332a8cbc..000000000 --- a/business/src/main/java/in/koreatech/business/navigation/TmpScreen.kt +++ /dev/null @@ -1,14 +0,0 @@ -package `in`.koreatech.business.navigation - -import androidx.compose.material.Button -import androidx.compose.material.Text -import androidx.compose.runtime.Composable - -@Composable -fun TestScreen( - onSignUpComplete: () -> Unit = {} -) { - Button(onClick = onSignUpComplete ) { - Text("임시 버튼") - } -} \ No newline at end of file