Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 9 additions & 3 deletions core/alarm/src/main/java/com/yapp/alarm/services/AlarmService.kt
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ import androidx.core.net.toUri
import com.yapp.alarm.AlarmConstants
import com.yapp.alarm.AndroidAlarmScheduler
import com.yapp.alarm.pendingIntent.interaction.createAlarmAlertPendingIntent
import com.yapp.alarm.pendingIntent.interaction.createAlarmDismissPendingIntent
import com.yapp.alarm.pendingIntent.interaction.createAlarmSnoozePendingIntent
import com.yapp.alarm.pendingIntent.interaction.createNavigateToMissionPendingIntent
import com.yapp.domain.model.Alarm
Expand Down Expand Up @@ -135,7 +134,7 @@ class AlarmService : Service() {
val alarmAlertPendingIntent =
createAlarmAlertPendingIntent(applicationContext, alarm)

val alarmDismissPendingIntent = if (shouldNavigateToMission) {
/*val alarmDismissPendingIntent = if (shouldNavigateToMission) {
createNavigateToMissionPendingIntent(
applicationContext = applicationContext,
notificationId = alarm.id,
Expand All @@ -147,7 +146,14 @@ class AlarmService : Service() {
applicationContext = applicationContext,
pendingIntentId = alarm.id,
)
}
}*/

val alarmDismissPendingIntent = createNavigateToMissionPendingIntent(
applicationContext = applicationContext,
notificationId = alarm.id,
missionType = alarm.missionType.value,
missionCount = alarm.missionCount,
)

val snoozePendingIntent = if (alarm.isSnoozeEnabled && alarm.snoozeCount != 0) {
createAlarmSnoozePendingIntent(applicationContext, alarm)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import com.yapp.common.navigation.route.FortuneBaseRoute
import com.yapp.common.navigation.route.FortuneDestination
import com.yapp.common.navigation.route.HomeBaseRoute
import com.yapp.common.navigation.route.HomeDestination
import com.yapp.common.navigation.route.MissionRoute
import com.yapp.common.navigation.route.OnboardingBaseRoute
import com.yapp.common.navigation.route.OnboardingDestination
import com.yapp.common.navigation.route.SettingBaseRoute
Expand Down Expand Up @@ -57,6 +58,21 @@ class OrbitNavigator(
navController.navigate(AlarmInteractionDestination.AlarmSnoozeTimer(alarm), navOptions)
}

fun navigateToMissionPreview(
missionType: Int,
missionCount: Int,
navOptions: NavOptions? = null,
) {
navController.navigate(
MissionRoute(
missionType = "$missionType",
missionCount = "$missionCount",
missionMode = "PREVIEW",
),
navOptions,
)
}

fun navigateToFortune(navOptions: NavOptions? = null) {
navController.navigate(FortuneBaseRoute, navOptions)
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,15 @@
package com.yapp.common.navigation.route

import com.yapp.domain.MissionMode
import kotlinx.serialization.Serializable

@Serializable
data object MissionRoute
data class MissionRoute(
val missionType: String,
val missionCount: String,
val missionMode: String = MissionMode.REAL.name,
) {
companion object {
const val route = "mission"
}
}
13 changes: 13 additions & 0 deletions domain/src/main/java/com/yapp/domain/MissionMode.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.yapp.domain

enum class MissionMode {
REAL,
PREVIEW,
;

companion object {
fun fromRaw(raw: String?): MissionMode {
return raw?.let { entries.find { it.name == raw } } ?: REAL
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ sealed class AlarmAddEditContract {
data object ToggleHolidaySkipOption : Action()
data object ToggleSnoozeOption : Action()
data class SaveMission(val type: MissionType, val count: Int) : Action()
data class NavigateToMissionPreview(val missionType: MissionType, val missionCount: Int) : Action()
data class SetSnoozeInterval(val index: Int) : Action()
data class SetSnoozeRepeatCount(val index: Int) : Action()
data object ToggleVibrationOption : Action()
Expand All @@ -103,6 +104,11 @@ sealed class AlarmAddEditContract {
sealed class SideEffect : com.yapp.ui.base.SideEffect {
data object NavigateBack : SideEffect()

data class NavigateToMissionPreview(
val missionType: MissionType,
val missionCount: Int,
) : SideEffect()

data class SaveAlarm(val id: Long) : SideEffect()

data class UpdateAlarm(val id: Long) : SideEffect()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,12 @@ private suspend fun handleSideEffect(
is AlarmAddEditContract.SideEffect.NavigateBack -> {
navigator.navigateBack()
}
is AlarmAddEditContract.SideEffect.NavigateToMissionPreview -> {
navigator.navigateToMissionPreview(
missionType = sideEffect.missionType.value,
missionCount = sideEffect.missionCount,
)
}
is AlarmAddEditContract.SideEffect.SaveAlarm -> {
navigator.navController.previousBackStackEntry
?.savedStateHandle
Expand Down Expand Up @@ -241,7 +247,13 @@ fun AlarmAddEditContent(
),
)
},
onPreviewMission = {
onPreviewMission = { missionType, missionCount ->
eventDispatcher(
AlarmAddEditContract.Action.NavigateToMissionPreview(
missionType = missionType,
missionCount = missionCount,
),
)
},
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,7 @@ class AlarmAddEditViewModel @Inject constructor(
is AlarmAddEditContract.Action.ToggleSpecificDaySelection -> toggleSpecificDaySelection(action.day)
is AlarmAddEditContract.Action.ToggleHolidaySkipOption -> toggleHolidaySkipOption()
is AlarmAddEditContract.Action.SaveMission -> saveMission(action.type, action.count)
is AlarmAddEditContract.Action.NavigateToMissionPreview -> navigateToMissionPreview(action.missionType, action.missionCount)
is AlarmAddEditContract.Action.ToggleSnoozeOption -> toggleSnoozeOption()
is AlarmAddEditContract.Action.SetSnoozeInterval -> setSnoozeInterval(action.index)
is AlarmAddEditContract.Action.SetSnoozeRepeatCount -> setSnoozeRepeatCount(action.index)
Expand Down Expand Up @@ -211,6 +212,21 @@ class AlarmAddEditViewModel @Inject constructor(
postSideEffect(AlarmAddEditContract.SideEffect.NavigateBack)
}

private fun navigateToMissionPreview(
missionType: MissionType,
missionCount: Int,
) = intent {
val newTimeState = state.timeState.copy(
initialTime = state.timeState.currentTime,
)
reduce {
state.copy(
timeState = newTimeState,
)
}
postSideEffect(AlarmAddEditContract.SideEffect.NavigateToMissionPreview(missionType, missionCount))
}

private fun saveAlarm() = intent {
val newAlarm = state.toAlarm()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ internal fun AlarmMissionBottomSheet(
isSheetOpen: Boolean,
onDismiss: () -> Unit,
onSaveMission: (MissionType, Int) -> Unit,
onPreviewMission: (MissionType) -> Unit,
onPreviewMission: (MissionType, Int) -> Unit,
) {
var currentStep by remember { mutableStateOf(AlarmMissionSelectBottomSheetType.MISSION_SETTING) }

Expand Down Expand Up @@ -147,7 +147,7 @@ internal fun AlarmMissionBottomSheet(
onDismiss()
},
onPreview = {
onPreviewMission(selectedMissionType)
onPreviewMission(selectedMissionType, selectedMissionCount)
},
)
}
Expand Down Expand Up @@ -475,7 +475,7 @@ private fun MissionDetailContent(
onBack: () -> Unit,
onClose: () -> Unit,
onSave: () -> Unit,
onPreview: (MissionType) -> Unit,
onPreview: () -> Unit,
) {
val (title, lottieRes) = when (missionType) {
MissionType.SHAKE ->
Expand Down Expand Up @@ -569,9 +569,7 @@ private fun MissionDetailContent(
) {
OrbitButton(
label = stringResource(id = feature.home.R.string.mission_detail_content_btn_preview),
onClick = {
onPreview(missionType)
},
onClick = onPreview,
useFillMaxWidth = false,
enabled = true,
containerColor = OrbitTheme.colors.gray_600,
Expand Down Expand Up @@ -657,7 +655,7 @@ private fun AlarmMissionSelectBottomSheetPreview() {
isSheetOpen = true,
onDismiss = {},
onSaveMission = { _, _ -> },
onPreviewMission = {},
onPreviewMission = { _, _ -> },
)
}
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
package com.yapp.mission

import com.yapp.domain.MissionMode
import com.yapp.domain.model.MissionType

sealed class MissionContract {

data class State(
val missionMode: MissionMode = MissionMode.REAL,
val missionType: MissionType = MissionType.TAP,
val isMissionTypeLoading: Boolean = true,
val missionCount: Int = 10,
Expand All @@ -20,6 +22,7 @@ sealed class MissionContract {
) : com.yapp.ui.base.UiState

sealed class Action {
data object NavigateBack : Action()
data object ShakeCard : Action()
data object ClickCard : Action()
data object ShowExitDialog : Action()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,10 @@ fun NavGraphBuilder.missionScreen(
handleSideEffect(it, navigator)
}

MissionRoute(viewModel)
MissionRoute(
navigator = navigator,
viewModel = viewModel,
)
}
}

Expand All @@ -37,7 +40,7 @@ private fun handleSideEffect(
MissionContract.SideEffect.NavigateToFortune -> {
navigator.navigateToFortune(
navOptions = navOptions {
popUpTo(MissionRoute) {
popUpTo(MissionRoute.route) {
inclusive = true
}
},
Expand All @@ -47,7 +50,7 @@ private fun handleSideEffect(
MissionContract.SideEffect.NavigateToHome -> {
navigator.navigateToHome(
navOptions = navOptions {
popUpTo(MissionRoute) {
popUpTo(MissionRoute.route) {
inclusive = true
}
},
Expand Down
Loading