diff --git a/data/src/main/java/com/threegap/bitnagil/data/writeroutine/model/request/RegisterRoutineRequest.kt b/data/src/main/java/com/threegap/bitnagil/data/writeroutine/model/request/RegisterRoutineRequest.kt index feba22e1..5364cacc 100644 --- a/data/src/main/java/com/threegap/bitnagil/data/writeroutine/model/request/RegisterRoutineRequest.kt +++ b/data/src/main/java/com/threegap/bitnagil/data/writeroutine/model/request/RegisterRoutineRequest.kt @@ -17,4 +17,6 @@ data class RegisterRoutineRequest( val executionTime: String, @SerialName("subRoutineName") val subRoutineName: List, + @SerialName("recommendedRoutineType") + val recommendedRoutineType: String?, ) diff --git a/data/src/main/java/com/threegap/bitnagil/data/writeroutine/repositoryImpl/WriteRoutineRepositoryImpl.kt b/data/src/main/java/com/threegap/bitnagil/data/writeroutine/repositoryImpl/WriteRoutineRepositoryImpl.kt index 7fd9cc74..715cbabd 100644 --- a/data/src/main/java/com/threegap/bitnagil/data/writeroutine/repositoryImpl/WriteRoutineRepositoryImpl.kt +++ b/data/src/main/java/com/threegap/bitnagil/data/writeroutine/repositoryImpl/WriteRoutineRepositoryImpl.kt @@ -24,6 +24,7 @@ class WriteRoutineRepositoryImpl @Inject constructor( startDate: Date, endDate: Date, subRoutines: List, + recommendedRoutineType: String?, ): Result { val request = RegisterRoutineRequest( routineName = name, @@ -32,6 +33,7 @@ class WriteRoutineRepositoryImpl @Inject constructor( routineStartDate = startDate.toFormattedString(), routineEndDate = endDate.toFormattedString(), subRoutineName = subRoutines, + recommendedRoutineType = recommendedRoutineType, ) return writeRoutineDataSource.registerRoutine(request).also { if (it.isSuccess) { diff --git a/domain/src/main/java/com/threegap/bitnagil/domain/writeroutine/repository/WriteRoutineRepository.kt b/domain/src/main/java/com/threegap/bitnagil/domain/writeroutine/repository/WriteRoutineRepository.kt index 7b5ec078..e1af7e39 100644 --- a/domain/src/main/java/com/threegap/bitnagil/domain/writeroutine/repository/WriteRoutineRepository.kt +++ b/domain/src/main/java/com/threegap/bitnagil/domain/writeroutine/repository/WriteRoutineRepository.kt @@ -15,6 +15,7 @@ interface WriteRoutineRepository { startDate: Date, endDate: Date, subRoutines: List, + recommendedRoutineType: String?, ): Result suspend fun editRoutine( diff --git a/domain/src/main/java/com/threegap/bitnagil/domain/writeroutine/usecase/RegisterRoutineUseCase.kt b/domain/src/main/java/com/threegap/bitnagil/domain/writeroutine/usecase/RegisterRoutineUseCase.kt index 2b6369e2..ceb63fa8 100644 --- a/domain/src/main/java/com/threegap/bitnagil/domain/writeroutine/usecase/RegisterRoutineUseCase.kt +++ b/domain/src/main/java/com/threegap/bitnagil/domain/writeroutine/usecase/RegisterRoutineUseCase.kt @@ -16,6 +16,7 @@ class RegisterRoutineUseCase @Inject constructor( startDate: Date, endDate: Date, subRoutines: List, + recommendedRoutineType: String?, ): Result { return writeRoutineRepository.registerRoutine( name = name, @@ -24,6 +25,7 @@ class RegisterRoutineUseCase @Inject constructor( startDate = startDate, endDate = endDate, subRoutines = subRoutines, + recommendedRoutineType = recommendedRoutineType, ) } } diff --git a/presentation/src/main/java/com/threegap/bitnagil/presentation/writeroutine/WriteRoutineViewModel.kt b/presentation/src/main/java/com/threegap/bitnagil/presentation/writeroutine/WriteRoutineViewModel.kt index 910dd6f8..3c02c836 100644 --- a/presentation/src/main/java/com/threegap/bitnagil/presentation/writeroutine/WriteRoutineViewModel.kt +++ b/presentation/src/main/java/com/threegap/bitnagil/presentation/writeroutine/WriteRoutineViewModel.kt @@ -93,6 +93,7 @@ class WriteRoutineViewModel @AssistedInject constructor( ), startDate = Date.fromString(routine.startDate), endDate = Date.fromString(routine.endDate), + recommendedRoutineType = null, ), ) }, @@ -121,6 +122,7 @@ class WriteRoutineViewModel @AssistedInject constructor( ), startDate = Date.now(), endDate = Date.now(), + recommendedRoutineType = routine.recommendedRoutineType.categoryName, ), ) }, @@ -134,7 +136,7 @@ class WriteRoutineViewModel @AssistedInject constructor( override suspend fun SimpleSyntax.reduceState( intent: WriteRoutineIntent, state: WriteRoutineState, - ): WriteRoutineState { + ): WriteRoutineState? { when (intent) { WriteRoutineIntent.SelectAllTime -> { return state.copy( @@ -221,9 +223,7 @@ class WriteRoutineViewModel @AssistedInject constructor( WriteRoutineIntent.RegisterRoutineSuccess -> { sendSideEffect(WriteRoutineSideEffect.MoveToPreviousScreen) - return state.copy( - loading = false, - ) + return null } WriteRoutineIntent.RegisterRoutineLoading -> { return state.copy( @@ -254,6 +254,7 @@ class WriteRoutineViewModel @AssistedInject constructor( endDate = intent.endDate, subRoutineNames = intent.subRoutines, loading = false, + recommendedRoutineType = intent.recommendedRoutineType, ) } @@ -449,6 +450,8 @@ class WriteRoutineViewModel @AssistedInject constructor( viewModelScope.launch { val currentState = stateFlow.value + if (currentState.loading) return@launch + val startTime = currentState.startTime ?: return@launch val repeatDay = when (currentState.repeatType) { @@ -483,6 +486,7 @@ class WriteRoutineViewModel @AssistedInject constructor( startDate = if (noRepeatRoutine) Date.now().toDomainDate() else currentState.startDate.toDomainDate(), endDate = if (noRepeatRoutine) Date.now().toDomainDate() else currentState.endDate.toDomainDate(), subRoutines = subRoutines, + recommendedRoutineType = currentState.recommendedRoutineType, ) if (registerRoutineResult.isSuccess) { diff --git a/presentation/src/main/java/com/threegap/bitnagil/presentation/writeroutine/model/mvi/WriteRoutineIntent.kt b/presentation/src/main/java/com/threegap/bitnagil/presentation/writeroutine/model/mvi/WriteRoutineIntent.kt index 90bc0789..f3ec406a 100644 --- a/presentation/src/main/java/com/threegap/bitnagil/presentation/writeroutine/model/mvi/WriteRoutineIntent.kt +++ b/presentation/src/main/java/com/threegap/bitnagil/presentation/writeroutine/model/mvi/WriteRoutineIntent.kt @@ -22,6 +22,7 @@ sealed class WriteRoutineIntent : MviIntent { val subRoutines: List, val startDate: Date, val endDate: Date, + val recommendedRoutineType: String?, ) : WriteRoutineIntent() data object SelectAllTime : WriteRoutineIntent() data object ShowTimePickerBottomSheet : WriteRoutineIntent() diff --git a/presentation/src/main/java/com/threegap/bitnagil/presentation/writeroutine/model/mvi/WriteRoutineState.kt b/presentation/src/main/java/com/threegap/bitnagil/presentation/writeroutine/model/mvi/WriteRoutineState.kt index fb9d9f1a..9078f28b 100644 --- a/presentation/src/main/java/com/threegap/bitnagil/presentation/writeroutine/model/mvi/WriteRoutineState.kt +++ b/presentation/src/main/java/com/threegap/bitnagil/presentation/writeroutine/model/mvi/WriteRoutineState.kt @@ -29,6 +29,7 @@ data class WriteRoutineState( val repeatDaysUiExpanded: Boolean, val periodUiExpanded: Boolean, val startTimeUiExpanded: Boolean, + val recommendedRoutineType: String?, ) : MviState { companion object { val Init = WriteRoutineState( @@ -79,6 +80,7 @@ data class WriteRoutineState( startTimeUiExpanded = false, startDate = Date.now(), endDate = Date.now(), + recommendedRoutineType = null, ) }