Skip to content

Commit 76282fc

Browse files
authored
Merge pull request #113 from Stack-Knowledge/feature/111_empty_selete_goods_exception_handling
🔀 :: (#111) Empty Goods Select Disabled
2 parents d0a8ca2 + 3e38ca6 commit 76282fc

File tree

9 files changed

+67
-34
lines changed

9 files changed

+67
-34
lines changed

core/design-system/src/main/java/com/stackknowledge/design_system/component/bottomsheet/StackKnowledgeBottomSheet.kt

+3-2
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import androidx.compose.ui.tooling.preview.Preview
2121
import androidx.compose.ui.unit.dp
2222
import com.stackknowledge.design_system.R
2323
import com.stackknowledge.design_system.component.button.StackKnowledgeButton
24+
import com.stackknowledge.design_system.component.button.enumclass.ButtonState
2425
import com.stackknowledge.design_system.theme.StackKnowledgeAndroidTheme
2526

2627
@OptIn(ExperimentalMaterial3Api::class)
@@ -85,10 +86,10 @@ fun StackKnowledgeBottomSheet(
8586
Spacer(modifier = modifier.height(8.dp))
8687
StackKnowledgeButton(
8788
text = stringResource(id = R.string.purchase),
89+
enable = ButtonState.ACTIVATE,
8890
modifier = modifier
8991
.height(60.dp),
90-
onClick = {},
91-
)
92+
) {}
9293

9394
Spacer(modifier = modifier.height(24.dp))
9495
}

core/design-system/src/main/java/com/stackknowledge/design_system/component/button/StackKnowledgeButton.kt

+18-5
Original file line numberDiff line numberDiff line change
@@ -11,23 +11,36 @@ import androidx.compose.ui.Modifier
1111
import androidx.compose.ui.draw.clip
1212
import androidx.compose.ui.tooling.preview.Preview
1313
import androidx.compose.ui.unit.dp
14+
import com.stackknowledge.design_system.component.button.enumclass.ButtonState
1415
import com.stackknowledge.design_system.theme.StackKnowledgeAndroidTheme
1516

1617
@Composable
1718
fun StackKnowledgeButton(
1819
modifier: Modifier = Modifier,
1920
text: String,
21+
enable: ButtonState,
2022
onClick: () -> Unit,
2123
) {
2224
StackKnowledgeAndroidTheme { colors, typography ->
25+
val color = when (enable) {
26+
ButtonState.ACTIVATE -> {
27+
colors.P1
28+
}
29+
30+
ButtonState.DISABLED -> {
31+
colors.G1
32+
}
33+
}
2334
Button(
24-
onClick = { onClick() },
35+
onClick = {
36+
if (enable.buttonState) onClick()
37+
},
2538
modifier = modifier
2639
.fillMaxWidth()
2740
.clip(shape = RoundedCornerShape(10.dp))
28-
.background(color = colors.P1),
41+
.background(color = color),
2942
colors = ButtonDefaults.buttonColors(
30-
containerColor = colors.P1
43+
containerColor = color
3144
)
3245
) {
3346
Text(
@@ -44,6 +57,6 @@ fun StackKnowledgeButton(
4457
fun StackKnowledgeButtonPre() {
4558
StackKnowledgeButton(
4659
text = "제출하기",
47-
onClick = {}
48-
)
60+
enable = ButtonState.ACTIVATE
61+
) {}
4962
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package com.stackknowledge.design_system.component.button.enumclass
2+
3+
enum class ButtonState(val buttonState: Boolean) {
4+
ACTIVATE(true),
5+
DISABLED(false)
6+
}

feature/login/src/main/java/com/stackknowledge/login/RoleCheckScreen.kt

+3
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import androidx.compose.ui.text.style.TextAlign
2020
import androidx.compose.ui.tooling.preview.Preview
2121
import androidx.compose.ui.unit.dp
2222
import com.stackknowledge.design_system.component.button.StackKnowledgeButton
23+
import com.stackknowledge.design_system.component.button.enumclass.ButtonState
2324
import com.stackknowledge.design_system.theme.StackKnowledgeAndroidTheme
2425
import com.stackknowledge.login.background.LoginBackground
2526

@@ -64,6 +65,7 @@ private fun RoleCheckScreen(
6465
) {
6566
StackKnowledgeButton(
6667
text = stringResource(id = R.string.student),
68+
enable = ButtonState.ACTIVATE,
6769
modifier = modifier
6870
.height(60.dp)
6971
.weight(1f),
@@ -74,6 +76,7 @@ private fun RoleCheckScreen(
7476

7577
StackKnowledgeButton(
7678
text = stringResource(id = R.string.teacher),
79+
enable = ButtonState.ACTIVATE,
7780
modifier = modifier
7881
.height(60.dp)
7982
.weight(1f),

feature/mission/src/main/java/com/stackkowledge/mission/component/InputAnswer.kt

+2
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import androidx.compose.ui.unit.dp
1616
import com.stackknowledge.design_system.theme.StackKnowledgeAndroidTheme
1717
import com.stackknowledge.design_system.R
1818
import com.stackknowledge.design_system.component.button.StackKnowledgeButton
19+
import com.stackknowledge.design_system.component.button.enumclass.ButtonState
1920
import com.stackknowledge.design_system.component.textfield.StackKnowledgeTextField
2021

2122
@Composable
@@ -52,6 +53,7 @@ fun InputAnswer(
5253

5354
StackKnowledgeButton(
5455
text = stringResource(id = R.string.submit),
56+
enable = ButtonState.ACTIVATE,
5557
modifier = modifier
5658
.height(60.dp),
5759
onClick = openDialog

feature/mission/src/main/java/com/stackkowledge/mission/component/InputMission.kt

+4-11
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,14 @@ import androidx.compose.foundation.layout.padding
88
import androidx.compose.material3.Surface
99
import androidx.compose.material3.Text
1010
import androidx.compose.runtime.Composable
11-
import androidx.compose.runtime.getValue
12-
import androidx.compose.runtime.mutableStateOf
13-
import androidx.compose.runtime.remember
14-
import androidx.compose.runtime.setValue
1511
import androidx.compose.ui.Modifier
1612
import androidx.compose.ui.res.stringResource
17-
import androidx.compose.ui.tooling.preview.Preview
1813
import androidx.compose.ui.unit.dp
19-
import androidx.hilt.navigation.compose.hiltViewModel
2014
import com.stackknowledge.design_system.theme.StackKnowledgeAndroidTheme
2115
import com.stackknowledge.design_system.R
2216
import com.stackknowledge.design_system.component.button.StackKnowledgeButton
17+
import com.stackknowledge.design_system.component.button.enumclass.ButtonState
2318
import com.stackknowledge.design_system.component.textfield.StackKnowledgeTextField
24-
import com.stackkowledge.mission.viewmodel.MissionViewModel
25-
import remote.request.mission.CreateMissionRequestModel
2619

2720
@Composable
2821
fun InputMission(
@@ -57,10 +50,10 @@ fun InputMission(
5750

5851
StackKnowledgeButton(
5952
text = stringResource(id = R.string.submit),
53+
enable = ButtonState.ACTIVATE,
6054
modifier = modifier
61-
.height(60.dp),
62-
onClick = { onClick() }
63-
)
55+
.height(60.dp)
56+
) { onClick() }
6457

6558
Spacer(modifier.height(28.dp))
6659
}

feature/score-mission/src/main/java/com/stackknowledge/score_mission/component/GradingRadioButton.kt

+2-3
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import androidx.compose.foundation.layout.Arrangement
88
import androidx.compose.foundation.layout.Column
99
import androidx.compose.foundation.layout.Row
1010
import androidx.compose.foundation.layout.Spacer
11-
import androidx.compose.foundation.layout.fillMaxSize
1211
import androidx.compose.foundation.layout.fillMaxWidth
1312
import androidx.compose.foundation.layout.height
1413
import androidx.compose.foundation.layout.padding
@@ -20,14 +19,13 @@ import androidx.compose.runtime.mutableStateOf
2019
import androidx.compose.runtime.remember
2120
import androidx.compose.ui.Alignment
2221
import androidx.compose.ui.Modifier
23-
import androidx.compose.ui.graphics.Color
2422
import androidx.compose.ui.graphics.drawscope.Stroke
2523
import androidx.compose.ui.res.stringResource
26-
import androidx.compose.ui.tooling.preview.Preview
2724
import androidx.compose.ui.unit.dp
2825
import com.stackknowledge.design_system.theme.StackKnowledgeAndroidTheme
2926
import com.stackknowledge.design_system.R
3027
import com.stackknowledge.design_system.component.button.StackKnowledgeButton
28+
import com.stackknowledge.design_system.component.button.enumclass.ButtonState
3129

3230
@Composable
3331
fun GradingRadioButton(
@@ -113,6 +111,7 @@ fun GradingRadioButton(
113111

114112
StackKnowledgeButton(
115113
text = stringResource(id = R.string.submit),
114+
enable = ButtonState.ACTIVATE,
116115
modifier = modifier
117116
.height(60.dp),
118117
onClick = openDialog

feature/shop/src/main/java/com/stackknowledge/shop/component/GoodsList.kt

+23-8
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.stackknowledge.shop.component
22

3+
import android.util.Log
34
import androidx.compose.foundation.background
45
import androidx.compose.foundation.layout.Box
56
import androidx.compose.foundation.layout.Column
@@ -13,15 +14,18 @@ import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
1314
import androidx.compose.foundation.lazy.grid.items
1415
import androidx.compose.material3.Text
1516
import androidx.compose.runtime.Composable
17+
import androidx.compose.runtime.LaunchedEffect
1618
import androidx.compose.runtime.mutableStateOf
1719
import androidx.compose.runtime.remember
1820
import androidx.compose.ui.Alignment
1921
import androidx.compose.ui.Modifier
22+
import androidx.compose.ui.platform.LocalContext
2023
import androidx.compose.ui.res.stringResource
2124
import androidx.compose.ui.tooling.preview.Preview
2225
import androidx.compose.ui.unit.dp
2326
import com.stackknowledge.design_system.R
2427
import com.stackknowledge.design_system.component.button.StackKnowledgeButton
28+
import com.stackknowledge.design_system.component.button.enumclass.ButtonState
2529
import com.stackknowledge.design_system.theme.StackKnowledgeAndroidTheme
2630
import com.stackknowledge.shop.data.SelectedItemData
2731
import com.stackknowledge.shop.viewmodel.uistate.GetItemUiState
@@ -37,6 +41,7 @@ fun GoodsList(
3741
) {
3842
val selectedDisplayItemList = remember { mutableListOf<GetItemResponseModel>() }
3943
val isBottomSheetVisible = remember { mutableStateOf(false) }
44+
val isButtonState = remember { mutableStateOf(ButtonState.DISABLED) }
4045

4146
StackKnowledgeAndroidTheme { colors, typography ->
4247
Column(
@@ -71,11 +76,21 @@ fun GoodsList(
7176
itemData = item,
7277
onItemCheckButtonClick = { selectedItem ->
7378
selectedDisplayItemList.add(selectedItem)
79+
isButtonState.value = if (selectedDisplayItemList.isEmpty()) {
80+
ButtonState.DISABLED
81+
} else {
82+
ButtonState.ACTIVATE
83+
}
7484
},
7585
onItemUnCheckButtonClick = { unselectedItem ->
7686
selectedDisplayItemList.removeIf { selectedItemListElement ->
7787
selectedItemListElement.id == unselectedItem.id
7888
}
89+
isButtonState.value = if (selectedDisplayItemList.isEmpty()) {
90+
ButtonState.DISABLED
91+
} else {
92+
ButtonState.ACTIVATE
93+
}
7994
}
8095
)
8196
}
@@ -106,24 +121,24 @@ fun GoodsList(
106121
}
107122
}
108123

109-
Spacer(modifier = modifier.height(32.dp))
124+
Spacer(modifier = modifier.height(80.dp))
110125

111126
Box(
112127
modifier = modifier
113128
.padding(horizontal = 16.dp),
114129
) {
115130
StackKnowledgeButton(
116-
text = stringResource(id = R.string.select),
131+
text = stringResource(id = R.string.purchase),
117132
modifier = modifier
118133
.height(60.dp),
119-
onClick = {
120-
onSelectButtonClick(selectedDisplayItemList)
121-
isBottomSheetVisible.value = true
122-
}
123-
)
134+
enable = isButtonState.value
135+
) {
136+
onSelectButtonClick(selectedDisplayItemList)
137+
isBottomSheetVisible.value = true
138+
}
124139
}
125140

126-
Spacer(modifier = modifier.height(100.dp))
141+
Spacer(modifier = modifier.height(28.dp))
127142
}
128143

129144
if (isBottomSheetVisible.value) {

feature/shop/src/main/java/com/stackknowledge/shop/component/OrderBottomSheet.kt

+6-5
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import androidx.compose.ui.tooling.preview.Preview
2525
import androidx.compose.ui.unit.dp
2626
import com.stackknowledge.design_system.R
2727
import com.stackknowledge.design_system.component.button.StackKnowledgeButton
28+
import com.stackknowledge.design_system.component.button.enumclass.ButtonState
2829
import com.stackknowledge.design_system.theme.StackKnowledgeAndroidTheme
2930
import com.stackknowledge.shop.data.SelectedItemData
3031

@@ -109,12 +110,12 @@ fun OrderBottomSheet(
109110

110111
StackKnowledgeButton(
111112
text = stringResource(id = R.string.purchase),
113+
enable = ButtonState.ACTIVATE,
112114
modifier = modifier
113-
.height(60.dp),
114-
onClick = {
115-
onOrderButtonClick()
116-
}
117-
)
115+
.height(60.dp)
116+
) {
117+
onOrderButtonClick()
118+
}
118119

119120
Spacer(modifier = modifier.height(24.dp))
120121
}

0 commit comments

Comments
 (0)