Skip to content

Commit 4efe102

Browse files
committed
FIX: 루틴 리스트 화면에서 루틴 작성/수정 화면 연결 및 루틴 DTO에 시작/종료 날자 변수 추가, 루틴 단일 조회 API v2 반영
1 parent 139fc86 commit 4efe102

10 files changed

Lines changed: 57 additions & 21 deletions

File tree

app/src/main/java/com/threegap/bitnagil/MainNavHost.kt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,18 @@ fun MainNavHost(
263263
navigator.navController.popBackStack()
264264
}
265265
},
266+
navigateToAddRoutine = {
267+
navigator.navController.navigate(Route.WriteRoutine())
268+
},
269+
navigateToEditRoutine = { routineId, updateRoutineFromNowDate ->
270+
navigator.navController.navigate(
271+
Route.WriteRoutine(
272+
routineId = routineId,
273+
isRegister = false,
274+
isUpdateRoutineFromNowDate = updateRoutineFromNowDate,
275+
),
276+
)
277+
},
266278
)
267279
}
268280

data/src/main/java/com/threegap/bitnagil/data/routine/model/response/RoutineDto.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,12 @@ data class RoutineDto(
2626
val subRoutineCompleteYn: List<Boolean>,
2727
@SerialName("recommendedRoutineType")
2828
val recommendedRoutineType: String?,
29+
@SerialName("routineDeletedYn")
30+
val routineDeletedYn: Boolean,
31+
@SerialName("routineStartDate")
32+
val routineStartDate: String,
33+
@SerialName("routineEndDate")
34+
val routineEndDate: String,
2935
)
3036

3137
fun RoutineDto.toDomain(): Routine =
@@ -39,4 +45,6 @@ fun RoutineDto.toDomain(): Routine =
3945
subRoutineNames = this.subRoutineNames,
4046
subRoutineCompleteYn = this.subRoutineCompleteYn,
4147
recommendedRoutineType = RecommendedRoutineType.fromString(this.recommendedRoutineType),
48+
startDate = this.routineStartDate,
49+
endDate = this.routineEndDate,
4250
)

data/src/main/java/com/threegap/bitnagil/data/routine/service/RoutineService.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ interface RoutineService {
1818
@Query("endDate") endDate: String,
1919
): BaseResponse<RoutinesResponseDto>
2020

21-
@GET("/api/v1/routines/{routineId}")
21+
@GET("/api/v2/routines/{routineId}")
2222
suspend fun getRoutine(
2323
@Path("routineId") routineId: String,
2424
): BaseResponse<RoutineDto>

domain/src/main/java/com/threegap/bitnagil/domain/routine/model/Routine.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ data class Routine(
55
val routineName: String,
66
val repeatDay: List<DayOfWeek>,
77
val executionTime: String,
8+
val startDate: String,
9+
val endDate: String,
810
val routineDate: String,
911
val routineCompleteYn: Boolean,
1012
val subRoutineNames: List<String>,

presentation/src/main/java/com/threegap/bitnagil/presentation/routinelist/RoutineListScreen.kt

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,19 +36,20 @@ import java.time.LocalDate
3636
@Composable
3737
fun RoutineListScreenContainer(
3838
navigateToBack: () -> Unit,
39+
navigateToEditRoutine: (String, Boolean) -> Unit,
40+
navigateToAddRoutine: () -> Unit,
3941
viewModel: RoutineListViewModel = hiltViewModel(),
4042
) {
4143
val uiState by viewModel.stateFlow.collectAsStateWithLifecycle()
4244

4345
viewModel.sideEffectFlow.collectAsEffect { sideEffect ->
4446
when (sideEffect) {
4547
is RoutineListSideEffect.NavigateToBack -> navigateToBack()
46-
is RoutineListSideEffect.NavigateToWriteRoutine -> {
47-
// TODO: 네비게이션 연결하기
48-
// navigateToWriteRoutine(
49-
// routineId = sideEffect.routineId,
50-
// applyDate = sideEffect.applyDate,
51-
// )
48+
is RoutineListSideEffect.NavigateToAddRoutine -> {
49+
navigateToAddRoutine()
50+
}
51+
is RoutineListSideEffect.NavigateToEditRoutine -> {
52+
navigateToEditRoutine(sideEffect.routineId, sideEffect.updateRoutineFromNowDate)
5253
}
5354
}
5455
}

presentation/src/main/java/com/threegap/bitnagil/presentation/routinelist/RoutineListViewModel.kt

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -73,10 +73,7 @@ class RoutineListViewModel @Inject constructor(
7373

7474
is RoutineListIntent.OnRegisterRoutineClick -> {
7575
sendSideEffect(
76-
RoutineListSideEffect.NavigateToWriteRoutine(
77-
routineId = null,
78-
applyDate = null,
79-
),
76+
RoutineListSideEffect.NavigateToAddRoutine,
8077
)
8178
null
8279
}
@@ -85,9 +82,9 @@ class RoutineListViewModel @Inject constructor(
8582
val selectedRoutine = state.selectedRoutine
8683
if (selectedRoutine != null) {
8784
sendSideEffect(
88-
RoutineListSideEffect.NavigateToWriteRoutine(
85+
RoutineListSideEffect.NavigateToEditRoutine(
8986
routineId = selectedRoutine.routineId,
90-
applyDate = "TODAY",
87+
updateRoutineFromNowDate = true,
9188
),
9289
)
9390
}
@@ -98,9 +95,9 @@ class RoutineListViewModel @Inject constructor(
9895
val selectedRoutine = state.selectedRoutine
9996
if (selectedRoutine != null) {
10097
sendSideEffect(
101-
RoutineListSideEffect.NavigateToWriteRoutine(
98+
RoutineListSideEffect.NavigateToEditRoutine(
10299
routineId = selectedRoutine.routineId,
103-
applyDate = "TOMORROW",
100+
updateRoutineFromNowDate = false,
104101
),
105102
)
106103
}

presentation/src/main/java/com/threegap/bitnagil/presentation/routinelist/model/RoutineListSideEffect.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,6 @@ import com.threegap.bitnagil.presentation.common.mviviewmodel.MviSideEffect
44

55
sealed interface RoutineListSideEffect : MviSideEffect {
66
data object NavigateToBack : RoutineListSideEffect
7-
data class NavigateToWriteRoutine(val routineId: String?, val applyDate: String?) : RoutineListSideEffect
7+
data object NavigateToAddRoutine : RoutineListSideEffect
8+
data class NavigateToEditRoutine(val routineId: String, val updateRoutineFromNowDate: Boolean) : RoutineListSideEffect
89
}

presentation/src/main/java/com/threegap/bitnagil/presentation/writeroutine/WriteRoutineViewModel.kt

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,17 +81,18 @@ class WriteRoutineViewModel @AssistedInject constructor(
8181
sendIntent(WriteRoutineIntent.GetRoutineLoading)
8282
getRoutineUseCase(routineId).fold(
8383
onSuccess = { routine ->
84-
oldSubRoutines = routine.subRoutines.map { SubRoutine.fromDomainSubRoutine(it) }
8584
sendIntent(
8685
WriteRoutineIntent.SetRoutine(
8786
name = routine.routineName,
8887
repeatDays = routine.repeatDay.map { Day.fromDayOfWeek(it) },
8988
startTime = Time.fromDomainTimeString(routine.executionTime),
9089
subRoutines = listOf(
91-
oldSubRoutines.getOrNull(0)?.name ?: "",
92-
oldSubRoutines.getOrNull(1)?.name ?: "",
93-
oldSubRoutines.getOrNull(2)?.name ?: "",
90+
routine.subRoutineNames.getOrNull(0) ?: "",
91+
routine.subRoutineNames.getOrNull(1) ?: "",
92+
routine.subRoutineNames.getOrNull(2) ?: "",
9493
),
94+
startDate = Date.fromString(routine.startDate),
95+
endDate = Date.fromString(routine.endDate),
9596
),
9697
)
9798
},
@@ -118,6 +119,8 @@ class WriteRoutineViewModel @AssistedInject constructor(
118119
oldSubRoutines.getOrNull(1)?.name ?: "",
119120
oldSubRoutines.getOrNull(2)?.name ?: "",
120121
),
122+
startDate = Date.now(),
123+
endDate = Date.now(),
121124
),
122125
)
123126
},

presentation/src/main/java/com/threegap/bitnagil/presentation/writeroutine/model/Date.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,11 @@ data class Date(
4040

4141
return d2
4242
}
43+
44+
fun fromString(dateString: String): Date {
45+
val (year, month, day) = dateString.split("-").map { it.toInt() }
46+
return Date(year, month, day)
47+
}
4348
}
4449

4550
fun toFormattedString(): String = "%04d.%02d.%02d".format(year, month, day)

presentation/src/main/java/com/threegap/bitnagil/presentation/writeroutine/model/mvi/WriteRoutineIntent.kt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,14 @@ sealed class WriteRoutineIntent : MviIntent {
1515
data class SelectDay(val day: Day) : WriteRoutineIntent()
1616
data class SetStartTime(val time: Time) : WriteRoutineIntent()
1717
data class SetWriteRoutineType(val writeRoutineType: WriteRoutineType) : WriteRoutineIntent()
18-
data class SetRoutine(val name: String, val repeatDays: List<Day>, val startTime: Time, val subRoutines: List<String>) : WriteRoutineIntent()
18+
data class SetRoutine(
19+
val name: String,
20+
val repeatDays: List<Day>,
21+
val startTime: Time,
22+
val subRoutines: List<String>,
23+
val startDate: Date,
24+
val endDate: Date,
25+
) : WriteRoutineIntent()
1926
data object SelectAllTime : WriteRoutineIntent()
2027
data object ShowTimePickerBottomSheet : WriteRoutineIntent()
2128
data object HideTimePickerBottomSheet : WriteRoutineIntent()

0 commit comments

Comments
 (0)