Skip to content

Commit c784800

Browse files
committed
feat: 사진 업로드 어려워요 모달 추가
1 parent 2f43050 commit c784800

7 files changed

Lines changed: 269 additions & 10 deletions

File tree

app/src/main/java/com/no5ing/bbibbi/presentation/component/button/CameraCaptureButton.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import com.no5ing.bbibbi.util.LocalMixpanelProvider
1414
fun CameraCaptureButton(
1515
modifier: Modifier = Modifier,
1616
onClick: () -> Unit = {},
17+
onClickDisabled: () -> Unit = {},
1718
isCapturing: Boolean,
1819
ignoreDisabledState: Boolean = false,
1920
) {
@@ -27,6 +28,8 @@ fun CameraCaptureButton(
2728
mixPanel.track("Click_btn_camera")
2829
if (!isCapturing || ignoreDisabledState) {
2930
onClick()
31+
} else {
32+
onClickDisabled()
3033
}
3134
},
3235
alpha = if (isCapturing) 0.3f else 1.0f,

app/src/main/java/com/no5ing/bbibbi/presentation/feature/view/common/GenericPopup.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,11 @@ fun GenericPopup(
3737
cancelText: String,
3838
onTapConfirm: () -> Unit = {},
3939
onTapCancel: () -> Unit = {},
40+
onTapBackground: () -> Unit = onTapCancel,
4041
) {
4142
if (enabledState) {
4243
BasicAlertDialog(
43-
onDismissRequest = onTapCancel,
44+
onDismissRequest = onTapBackground,
4445
modifier = Modifier,
4546
properties = DialogProperties()
4647
) {

app/src/main/java/com/no5ing/bbibbi/presentation/feature/view/main/home/HomePage.kt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ fun HomePage(
5151
onUnsavedPost: (Uri) -> Unit = {},
5252
onTapViewPost: (LocalDate) -> Unit = {},
5353
onTapPick: (MainPageTopBarModel) -> Unit = {},
54+
onTapNight: () -> Unit = {},
5455
) {
5556
val postViewType by postViewTypeState
5657
val mainPageState = mainPageViewModel.uiState.collectAsState()
@@ -82,6 +83,7 @@ fun HomePage(
8283
if (isDayTime) {
8384
mainPageViewModel.invoke(Arguments())
8485
} else {
86+
mainPageViewModel.invoke(Arguments())
8587
mainPageNightViewModel.invoke(Arguments())
8688
}
8789
}
@@ -159,6 +161,11 @@ fun HomePage(
159161
mainPageState.value.data.isMeSurvivalUploadedToday,
160162
pickers = if (mainPageState.value.isReady()) mainPageState.value.data.pickers
161163
else emptyList(),
164+
onTapDisabled = {
165+
if (gapUntilNext() <= 0) {
166+
onTapNight()
167+
}
168+
}
162169
)
163170
} else {
164171
HomePageMissionUploadButton(
@@ -169,6 +176,11 @@ fun HomePage(
169176
isMissionUnlocked = mainPageState.value.isReady() && mainPageState.value.data.isMissionUnlocked,
170177
isMeMissionUploaded = mainPageState.value.isReady()
171178
&& mainPageState.value.data.isMeMissionUploadedToday,
179+
onTapDisabled = {
180+
if (gapUntilNext() <= 0) {
181+
onTapNight()
182+
}
183+
}
172184
)
173185
}
174186

app/src/main/java/com/no5ing/bbibbi/presentation/feature/view/main/home/HomePageUploadButton.kt

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ fun BoxScope.HomePageSurvivalUploadButton(
5555
isAlreadyUploaded: Boolean = false,
5656
pickers: List<MainPagePickerModel> = emptyList(),
5757
onTap: () -> Unit = {},
58+
onTapDisabled: () -> Unit = {},
5859
) {
5960
Box(
6061
modifier = Modifier
@@ -73,18 +74,19 @@ fun BoxScope.HomePageSurvivalUploadButton(
7374
pickers = pickers,
7475
)
7576
} else {
76-
UploadHelperPop(
77-
text =
78-
if (isUploadAbleTime && !isAlreadyUploaded)
79-
stringResource(id = R.string.home_one_image_per_day)
80-
else if (isAlreadyUploaded)
81-
stringResource(id = R.string.home_already_uploaded_today)
82-
else
83-
stringResource(id = R.string.home_not_camera_time)
84-
)
77+
if (isUploadAbleTime) {
78+
UploadHelperPop(
79+
text =
80+
if (!isAlreadyUploaded)
81+
stringResource(id = R.string.home_one_image_per_day)
82+
else
83+
stringResource(id = R.string.home_already_uploaded_today)
84+
)
85+
}
8586
}
8687
CameraCaptureButton(
8788
onClick = onTap,
89+
onClickDisabled = onTapDisabled,
8890
isCapturing = !isUploadAbleTime || isAlreadyUploaded,
8991
)
9092
}
@@ -100,6 +102,7 @@ fun BoxScope.HomePageMissionUploadButton(
100102
isMissionUnlocked: Boolean,
101103
isMeMissionUploaded: Boolean,
102104
onTap: () -> Unit = {},
105+
onTapDisabled: () -> Unit = {},
103106
) {
104107
Box(
105108
modifier = Modifier
@@ -128,6 +131,7 @@ fun BoxScope.HomePageMissionUploadButton(
128131
onClick = onTap,
129132
isCapturing = !(!isMeMissionUploaded && isMissionUnlocked && isMeUploadedToday),
130133
ignoreDisabledState = true,
134+
onClickDisabled = onTapDisabled,
131135
)
132136
}
133137
}

app/src/main/java/com/no5ing/bbibbi/presentation/feature/view_controller/main/HomePageController.kt

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
package com.no5ing.bbibbi.presentation.feature.view_controller.main
22

3+
import android.app.Activity
34
import androidx.compose.runtime.Composable
45
import androidx.compose.runtime.LaunchedEffect
56
import androidx.compose.runtime.collectAsState
67
import androidx.compose.runtime.getValue
78
import androidx.compose.runtime.mutableStateOf
89
import androidx.compose.runtime.remember
910
import androidx.compose.runtime.setValue
11+
import androidx.compose.ui.platform.LocalContext
1012
import androidx.compose.ui.res.painterResource
1113
import androidx.compose.ui.res.stringResource
1214
import androidx.hilt.navigation.compose.hiltViewModel
@@ -35,6 +37,7 @@ import com.no5ing.bbibbi.presentation.feature.view_controller.main.UploadMission
3537
import com.no5ing.bbibbi.presentation.feature.view_model.MainPageViewModel
3638
import com.no5ing.bbibbi.presentation.feature.view_model.members.PickMemberViewModel
3739
import com.no5ing.bbibbi.util.LocalSnackbarHostState
40+
import com.no5ing.bbibbi.util.exit
3841
import com.no5ing.bbibbi.util.gapUntilNext
3942
import com.no5ing.bbibbi.util.localResources
4043

@@ -49,6 +52,7 @@ object HomePageController : NavigationDestination(
4952
var isPickDialogVisible by remember { mutableStateOf(false) }
5053
var isRequireSurvivalDialogVisible by remember { mutableStateOf(false) }
5154
var isTryMissionPictureDialogVisible by remember { mutableStateOf(false) }
55+
var isNightTimeDialogVisible by remember { mutableStateOf(false) }
5256
var tryPickDialogMember by remember { mutableStateOf<MainPageTopBarModel?>(null) }
5357
val pickState = pickMemberViewModel.uiState.collectAsState()
5458
val postViewTypeState = remember { mutableStateOf(PostType.SURVIVAL) }
@@ -121,6 +125,24 @@ object HomePageController : NavigationDestination(
121125
isRequireSurvivalDialogVisible = false
122126
}
123127
)
128+
GenericPopup(
129+
enabledState = isNightTimeDialogVisible,
130+
title = "현재는 사진 업로드가 어려워요",
131+
description = "내일 12시부터 사용이 가능하니,\n조금만 기다려 주세요.",
132+
image = painterResource(id = R.drawable.sleep_bibbi),
133+
confirmText = "홈으로 이동",
134+
cancelText = "앱 종료하기",
135+
onTapConfirm = {
136+
isNightTimeDialogVisible = false
137+
},
138+
onTapCancel = {
139+
isNightTimeDialogVisible = false
140+
navController.context.exit()
141+
},
142+
onTapBackground = {
143+
isNightTimeDialogVisible = false
144+
}
145+
)
124146
GenericPopup(
125147
enabledState = isTryMissionPictureDialogVisible,
126148
title = stringResource(id = R.string.home_mission_key),
@@ -190,6 +212,9 @@ object HomePageController : NavigationDestination(
190212
postViewTypeState = postViewTypeState,
191213
onTapViewPost = { date ->
192214
navController.goCalendarDetailPage(date)
215+
},
216+
onTapNight = {
217+
isNightTimeDialogVisible = true
193218
}
194219
)
195220
}

app/src/main/java/com/no5ing/bbibbi/util/KotlinExtension.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,13 @@ fun Context.forceRestart() {
178178
}
179179
}
180180

181+
fun Context.exit() {
182+
if (this is Activity) {
183+
Timber.d("[Activity] Exiting application...")
184+
this.finishAffinity()
185+
}
186+
}
187+
181188
enum class CustomDialogPosition {
182189
BOTTOM, TOP
183190
}

0 commit comments

Comments
 (0)