Skip to content

Commit efae7ac

Browse files
committed
Refactor: ToggleStrategy 도메인으로 이동 및 루틴 UseCase 재구성
1 parent ca58d92 commit efae7ac

3 files changed

Lines changed: 58 additions & 1 deletion

File tree

presentation/src/main/java/com/threegap/bitnagil/presentation/screen/home/model/ToggleStrategy.kt renamed to domain/src/main/java/com/threegap/bitnagil/domain/routine/model/ToggleStrategy.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.threegap.bitnagil.presentation.screen.home.model
1+
package com.threegap.bitnagil.domain.routine.model
22

33
sealed interface ToggleStrategy {
44
data object Main : ToggleStrategy
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package com.threegap.bitnagil.domain.routine.usecase
2+
3+
import com.threegap.bitnagil.domain.routine.model.RoutineCompletionInfo
4+
import com.threegap.bitnagil.domain.routine.model.ToggleStrategy
5+
import com.threegap.bitnagil.domain.routine.repository.RoutineRepository
6+
import javax.inject.Inject
7+
8+
class ApplyRoutineToggleUseCase @Inject constructor(
9+
private val routineRepository: RoutineRepository,
10+
private val toggleRoutineUseCase: ToggleRoutineUseCase,
11+
) {
12+
suspend operator fun invoke(
13+
dateKey: String,
14+
routineId: String,
15+
isCompleted: Boolean,
16+
subRoutineCompletionStates: List<Boolean>,
17+
strategy: ToggleStrategy,
18+
) {
19+
val toggledState =
20+
when (strategy) {
21+
is ToggleStrategy.Main -> {
22+
toggleRoutineUseCase.toggleMainRoutine(
23+
isCompleted = isCompleted,
24+
subRoutineStates = subRoutineCompletionStates,
25+
)
26+
}
27+
28+
is ToggleStrategy.Sub -> {
29+
toggleRoutineUseCase.toggleSubRoutine(
30+
index = strategy.index,
31+
subRoutineStates = subRoutineCompletionStates,
32+
) ?: return
33+
}
34+
}
35+
36+
val completionInfo = RoutineCompletionInfo(
37+
routineId = routineId,
38+
routineCompleteYn = toggledState.isCompleted,
39+
subRoutineCompleteYn = toggledState.subRoutinesIsCompleted,
40+
)
41+
42+
routineRepository.applyRoutineToggle(dateKey, routineId, completionInfo)
43+
}
44+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.threegap.bitnagil.domain.routine.usecase
2+
3+
import com.threegap.bitnagil.domain.routine.model.RoutineSchedule
4+
import com.threegap.bitnagil.domain.routine.repository.RoutineRepository
5+
import kotlinx.coroutines.flow.Flow
6+
import javax.inject.Inject
7+
8+
class ObserveWeeklyRoutinesUseCase @Inject constructor(
9+
private val routineRepository: RoutineRepository,
10+
) {
11+
operator fun invoke(startDate: String, endDate: String): Flow<RoutineSchedule> =
12+
routineRepository.observeWeeklyRoutines(startDate, endDate)
13+
}

0 commit comments

Comments
 (0)