/
Jojer
/
RepTrack
Обзор
Документация
Войти
/
Jojer
/
RepTrack
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
app/src/main/java/com/example/reptrack/di/WorkoutModule.kt
175 строк
8 KB
Maxim Odintsov
delete
07 июн 2026, 18:38
07 июн 2026, 18:38
d480c21
Код
Авторство
О чём код?
package com.example.reptrack.di import com.arkivanov.mvikotlin.core.store.StoreFactory import com.example.reptrack.data.workout.repositories.ExerciseRepositoryImpl import com.example.reptrack.data.workout.repositories.RoomBasedWorkoutTemplateRepository import com.example.reptrack.data.workout.repositories.WorkoutExerciseRepositoryImpl import com.example.reptrack.data.workout.mock.FakeWorkoutExerciseRepository import com.example.reptrack.data.workout.mock.FakeWorkoutSessionRepository import com.example.reptrack.data.workout.repositories.WorkoutSessionRepositoryImpl import com.example.reptrack.domain.workout.repositories.ExerciseRepository import com.example.reptrack.domain.workout.repositories.WorkoutExerciseRepository import com.example.reptrack.domain.workout.repositories.WorkoutSessionRepository import com.example.reptrack.domain.workout.repositories.WorkoutTemplateRepository import com.example.reptrack.domain.workout.usecases.calendar.CalendarUseCase import com.example.reptrack.domain.workout.usecases.exercises.* import com.example.reptrack.domain.workout.usecases.sessions.CompleteWorkoutSessionUseCase import com.example.reptrack.domain.workout.usecases.sessions.CreateWorkoutSessionFromTemplateUseCase import com.example.reptrack.domain.workout.usecases.sessions.CreateWorkoutSessionUseCase import com.example.reptrack.domain.workout.usecases.sessions.ShouldUpdateSessionFromTemplateUseCase import com.example.reptrack.domain.workout.usecases.sessions.UnlinkSessionFromTemplateUseCase import com.example.reptrack.domain.workout.usecases.sessions.UpdateLinkedSessionsUseCase import com.example.reptrack.domain.workout.usecases.sessions.UpdateSessionStatusOnFirstSetUseCase import com.example.reptrack.domain.workout.usecases.sessions.UpdateWorkoutSessionUseCase import com.example.reptrack.domain.workout.usecases.templates.* import com.example.reptrack.domain.workout.usecases.workout_exercises.CreateWorkoutExerciseUseCase import com.example.reptrack.domain.workout.usecases.workout_exercises.DeleteWorkoutExerciseUseCase import com.example.reptrack.domain.workout.usecases.workout_exercises.ObserveBestSetFromLastWorkoutUseCase import com.example.reptrack.domain.workout.usecases.workout_exercises.ObserveLastCompletedWorkoutExerciseUseCase import com.example.reptrack.domain.workout.usecases.workout_exercises.ObserveWorkoutExerciseByIdUseCase import com.example.reptrack.domain.workout.usecases.workout_exercises.ObserveWorkoutExercisesBySessionUseCase import com.example.reptrack.domain.workout.usecases.workout_exercises.UpdateWorkoutExerciseUseCase import com.example.reptrack.presentation.main.stores.MainScreenStore import com.example.reptrack.presentation.main.stores.MainScreenStoreFactory import com.example.reptrack.presentation.template.detail.stores.TemplateDetailStoreFactory import com.example.reptrack.presentation.template.list.stores.TemplateListStoreFactory import com.example.reptrack.presentation.workout_exercise.detail.stores.WorkoutExerciseDetailStoreFactory import org.koin.dsl.module val workoutModule = module { single<ExerciseRepository> { ExerciseRepositoryImpl( exerciseDao = get(), errorHandler = get() ) } single<FakeWorkoutExerciseRepository> { FakeWorkoutExerciseRepository() } single<WorkoutExerciseRepository> { WorkoutExerciseRepositoryImpl( workoutDao = get(), exerciseDao = get(), errorHandler = get() ) } single<WorkoutSessionRepository> { WorkoutSessionRepositoryImpl( workoutDao = get(), authRepository = get(), errorHandler = get() ) } single<WorkoutTemplateRepository> { RoomBasedWorkoutTemplateRepository( database = get(), errorHandler = get() ) } factory { ObserveAllExercisesUseCase(get()) } factory { ObserveExerciseByIdUseCase(get(), get()) } factory { CreateExerciseUseCase(get(), get()) } factory { UpdateExerciseUseCase(get(), get()) } factory { DeleteExerciseUseCase(get(), get()) } factory { ObserveWorkoutExerciseByIdUseCase(get(), get()) } factory { CreateWorkoutExerciseUseCase(get(), get()) } factory { UpdateWorkoutExerciseUseCase(get(), get()) } factory { DeleteWorkoutExerciseUseCase(get(), get()) } factory { ObserveWorkoutExercisesBySessionUseCase(get(), get()) } factory { ObserveBestSetFromLastWorkoutUseCase(get(), get()) } factory { ObserveLastCompletedWorkoutExerciseUseCase(get(), get()) } factory { CalendarUseCase(get(), get()) } // Session use cases factory { CreateWorkoutSessionUseCase(get()) } factory { CreateWorkoutSessionFromTemplateUseCase(get(), get(), get(), get()) } factory { UpdateWorkoutSessionUseCase(get()) } factory { CompleteWorkoutSessionUseCase(get()) } factory { UnlinkSessionFromTemplateUseCase(get()) } factory { UpdateLinkedSessionsUseCase(get(), get(), get()) } factory { ShouldUpdateSessionFromTemplateUseCase() } factory { UpdateSessionStatusOnFirstSetUseCase(get(), get()) } // Template use cases factory { ObserveAllWorkoutTemplatesUseCase(get(), get()) } factory { ObserveWorkoutTemplateByIdUseCase(get(), get()) } factory { CreateWorkoutTemplateUseCase(get(), get()) } factory { UpdateWorkoutTemplateUseCase(get(), get(), get()) } factory { DeleteWorkoutTemplateUseCase(get(), get()) } factory { ObserveWorkoutCalendarUseCase(get(), get()) } single<MainScreenStore> { MainScreenStoreFactory( storeFactory = get<StoreFactory>(), calendarUseCase = get(), observeExerciseByIdUseCase = get(), observeBestSetFromLastWorkoutUseCase = get(), observeWorkoutExerciseByIdUseCase = get(), createSessionFromTemplateUseCase = get(), shouldUpdateSessionFromTemplateUseCase = get(), deleteWorkoutExerciseUseCase = get(), completeWorkoutSessionUseCase = get(), unlinkSessionFromTemplateUseCase = get(), updateWorkoutSessionUseCase = get(), authRepository = get() ).create() } factory<MainScreenStoreFactory> { MainScreenStoreFactory( storeFactory = get<StoreFactory>(), calendarUseCase = get(), observeExerciseByIdUseCase = get(), observeBestSetFromLastWorkoutUseCase = get(), observeWorkoutExerciseByIdUseCase = get(), createSessionFromTemplateUseCase = get(), shouldUpdateSessionFromTemplateUseCase = get(), deleteWorkoutExerciseUseCase = get(), completeWorkoutSessionUseCase = get(), unlinkSessionFromTemplateUseCase = get(), updateWorkoutSessionUseCase = get(), authRepository = get() ) } factory { WorkoutExerciseDetailStoreFactory( storeFactory = get(), observeWorkoutExerciseByIdUseCase = get(), observeExerciseByIdUseCase = get(), updateWorkoutExerciseUseCase = get(), updateSessionStatusOnFirstSetUseCase = get(), workoutDao = get() ) } // Template stores factory { TemplateListStoreFactory( storeFactory = get(), observeAllTemplatesUseCase = get(), deleteTemplateUseCase = get() ) } factory { TemplateDetailStoreFactory( storeFactory = get(), createTemplateUseCase = get(), updateTemplateUseCase = get(), observeTemplateByIdUseCase = get(), observeAllExercisesUseCase = get(), errorHandler = get(), deleteTemplateUseCase = get() ) } }