diff --git a/app/src/main/java/ru/yeahub/Application.kt b/app/src/main/java/ru/yeahub/Application.kt index 8d2a0b8d..99059246 100644 --- a/app/src/main/java/ru/yeahub/Application.kt +++ b/app/src/main/java/ru/yeahub/Application.kt @@ -8,6 +8,7 @@ import ru.yeahub.example_details.impl.detailsFeatureModule import ru.yeahub.example_home.impl.data.di.questionsMainFeatureModule import ru.yeahub.example_profile.impl.profileFeatureModule import ru.yeahub.interview_trainer.impl.createQuiz.di.createQuizModule +import ru.yeahub.interview_trainer.impl.interviewQuiz.di.interviewQuizModule import ru.yeahub.interview_trainer.impl.interviewQuizResult.di.interviewQuizResultModule import ru.yeahub.navigation_impl.navigationPathModule import ru.yeahub.network_impl.networkModule @@ -57,6 +58,7 @@ class Application : Application() { collectionsAndQuestionsFeatureModule, specializationFeatureModule, createQuizModule, + interviewQuizModule, interviewQuizResultModule ) } diff --git a/core/network-api/src/main/java/ru/yeahub/network_api/models/GetNewMockQuizResponse.kt b/core/network-api/src/main/java/ru/yeahub/network_api/models/GetNewMockQuizResponse.kt index 6584f201..2d283972 100644 --- a/core/network-api/src/main/java/ru/yeahub/network_api/models/GetNewMockQuizResponse.kt +++ b/core/network-api/src/main/java/ru/yeahub/network_api/models/GetNewMockQuizResponse.kt @@ -5,6 +5,6 @@ data class GetNewMockQuizResponse( val startDate: String, val fullCount: Int, val skills: List, - val response: List, + val response: QuizAnswersWrapperDto, val questions: List ) \ No newline at end of file diff --git a/core/network-api/src/main/java/ru/yeahub/network_api/models/QuestionAnswerDto.kt b/core/network-api/src/main/java/ru/yeahub/network_api/models/QuestionAnswerDto.kt index ac8ed579..89c1f01b 100644 --- a/core/network-api/src/main/java/ru/yeahub/network_api/models/QuestionAnswerDto.kt +++ b/core/network-api/src/main/java/ru/yeahub/network_api/models/QuestionAnswerDto.kt @@ -1,7 +1,7 @@ package ru.yeahub.network_api.models data class QuestionAnswerDto( - val questionId: Int, + val questionId: Long, val questionTitle: String, val answer: String ) diff --git a/core/network-api/src/main/java/ru/yeahub/network_api/models/QuizAnswersWrapperDto.kt b/core/network-api/src/main/java/ru/yeahub/network_api/models/QuizAnswersWrapperDto.kt new file mode 100644 index 00000000..c234fadc --- /dev/null +++ b/core/network-api/src/main/java/ru/yeahub/network_api/models/QuizAnswersWrapperDto.kt @@ -0,0 +1,5 @@ +package ru.yeahub.network_api.models + +data class QuizAnswersWrapperDto( + val answers: List +) diff --git a/core/network-impl/src/main/java/ru/yeahub/network_impl/RetrofitApiService.kt b/core/network-impl/src/main/java/ru/yeahub/network_impl/RetrofitApiService.kt index dbfcc56c..28542684 100644 --- a/core/network-impl/src/main/java/ru/yeahub/network_impl/RetrofitApiService.kt +++ b/core/network-impl/src/main/java/ru/yeahub/network_impl/RetrofitApiService.kt @@ -63,7 +63,7 @@ interface RetrofitApiService : ApiService { @Query("isFree") isFree: Boolean ): GetCollectionsResponse - @GET("/interview-preparation/quizzes/mock/new") + @GET("interview-preparation/quizzes/mock/new") override suspend fun getQuizMockQuestions( @Query("skills") skills: List?, @Query("complexity") complexity: List?, diff --git a/feature/interview-trainer/impl/src/main/java/ru/yeahub/interview_trainer/impl/interviewQuiz/di/InterviewQuizModule.kt b/feature/interview-trainer/impl/src/main/java/ru/yeahub/interview_trainer/impl/interviewQuiz/di/InterviewQuizModule.kt new file mode 100644 index 00000000..021795d4 --- /dev/null +++ b/feature/interview-trainer/impl/src/main/java/ru/yeahub/interview_trainer/impl/interviewQuiz/di/InterviewQuizModule.kt @@ -0,0 +1,36 @@ +package ru.yeahub.interview_trainer.impl.interviewQuiz.di + +import org.koin.androidx.viewmodel.dsl.viewModel +import org.koin.dsl.module +import ru.yeahub.interview_trainer.impl.interviewQuiz.data.InterviewQuizDataToDomainMapper +import ru.yeahub.interview_trainer.impl.interviewQuiz.data.InterviewQuizRepositoryImpl +import ru.yeahub.interview_trainer.impl.interviewQuiz.domain.GetQuestionsListUseCase +import ru.yeahub.interview_trainer.impl.interviewQuiz.domain.GetQuestionsListUseCaseImpl +import ru.yeahub.interview_trainer.impl.interviewQuiz.domain.InterviewQuizRepositoryApi +import ru.yeahub.interview_trainer.impl.interviewQuiz.presentation.InterviewQuizScreenMapper +import ru.yeahub.interview_trainer.impl.interviewQuiz.presentation.InterviewQuizViewModel + +val interviewQuizModule = module { + // Мапперы + single { InterviewQuizDataToDomainMapper() } + single { InterviewQuizScreenMapper() } + + // Репозиторий + single { + InterviewQuizRepositoryImpl(networkProvider = get(), mapper = get()) + } + + // Юзкейс + single { + GetQuestionsListUseCaseImpl(repository = get()) + } + + // Вьюмодель экрана + viewModel { params -> + InterviewQuizViewModel( + savedStateHandle = params.get(), + screenMapper = get(), + getQuestionsListUseCase = get() + ) + } +} \ No newline at end of file diff --git a/feature/interview-trainer/impl/src/main/java/ru/yeahub/interview_trainer/impl/interviewQuiz/presentation/InterviewQuizViewModel.kt b/feature/interview-trainer/impl/src/main/java/ru/yeahub/interview_trainer/impl/interviewQuiz/presentation/InterviewQuizViewModel.kt index af88a583..9001e668 100644 --- a/feature/interview-trainer/impl/src/main/java/ru/yeahub/interview_trainer/impl/interviewQuiz/presentation/InterviewQuizViewModel.kt +++ b/feature/interview-trainer/impl/src/main/java/ru/yeahub/interview_trainer/impl/interviewQuiz/presentation/InterviewQuizViewModel.kt @@ -56,7 +56,7 @@ open class InterviewQuizViewModel( selectedAnswer = userInput.selectedAnswer ) }.catch { e -> - screenMapper.getScreenState(e) + emit(screenMapper.getScreenState(e)) }.stateIn( scope = viewModelScopeSafe, started = SharingStarted.WhileSubscribed(TIME_TO_CLEAN_UP_RESOURCES), diff --git a/feature/interview-trainer/impl/src/main/java/ru/yeahub/interview_trainer/impl/interviewQuiz/ui/InterviewQuizScreen.kt b/feature/interview-trainer/impl/src/main/java/ru/yeahub/interview_trainer/impl/interviewQuiz/ui/InterviewQuizScreen.kt index bde28292..dd1eac61 100644 --- a/feature/interview-trainer/impl/src/main/java/ru/yeahub/interview_trainer/impl/interviewQuiz/ui/InterviewQuizScreen.kt +++ b/feature/interview-trainer/impl/src/main/java/ru/yeahub/interview_trainer/impl/interviewQuiz/ui/InterviewQuizScreen.kt @@ -366,7 +366,7 @@ private fun QuestionCard( } } else { SecondaryButton( - onClick = {}, + onClick = onResultClick, modifier = Modifier .width(170.dp) .height(48.dp) diff --git a/feature/interview-trainer/impl/src/test/java/test/InterviewQuizDataToDomainMapperTest.kt b/feature/interview-trainer/impl/src/test/java/test/InterviewQuizDataToDomainMapperTest.kt index af02ea37..e75012bf 100644 --- a/feature/interview-trainer/impl/src/test/java/test/InterviewQuizDataToDomainMapperTest.kt +++ b/feature/interview-trainer/impl/src/test/java/test/InterviewQuizDataToDomainMapperTest.kt @@ -9,6 +9,7 @@ import ru.yeahub.interview_trainer.impl.interviewQuiz.domain.DomainQuestionsList import ru.yeahub.network_api.models.GetNewMockQuizResponse import ru.yeahub.network_api.models.GetQuestionResponse import ru.yeahub.network_api.models.NestedUserReferenceDto +import ru.yeahub.network_api.models.QuizAnswersWrapperDto import ru.yeahub.test.TestArgumentsProvider class InterviewQuizDataToDomainMapperTest { @@ -87,7 +88,7 @@ class InterviewQuizDataToDomainMapperTest { startDate = "01.01.2026", fullCount = 2, skills = emptyList(), - response = emptyList(), + response = QuizAnswersWrapperDto(emptyList()), questions = listOf(defaultQuestionResponse, defaultQuestionResponseWithLongAnswer), )