diff --git a/README.txt b/README.txt index 6215197..a403016 100644 --- a/README.txt +++ b/README.txt @@ -10,3 +10,9 @@ MoscowHackatonTemplate — экраны приложения - История резюме (ResumeHistoryScreen): список версий, раскрытие изменений, выбор двух версий для сравнения, переход на экран diff. Статус: Готов. - Сравнение версий (ResumeDiffScreen): визуальное сравнение выбранных версий резюме (зарплата, навыки, опыт, образование) с подсветкой изменений. Статус: Готов. - Профиль (ProfileScreen): редактирование данных пользователя (имя, фамилия, телефон), сохранение и выход из аккаунта. Статус: Готов. + +Валидация и обработка ошибок +- Поля форм валидируются на уровне use case (например, ValidateFieldsUseCase) с возвратом словаря ошибок, который отображается под соответствующими полями. +- Перед отправкой запросов состояние переводится в UIState.Loading; при успешном ответе UIState.Success вызывает переход/снекбар. +- Ошибки ввода, сетевые и неожиданные ошибки обрабатываются через collectAsStateWithCallbacks: показывается текст ошибки и snackbar с сообщением «Ошибка: ...». +- Дополнительно на регистрации и логине кнопки блокируются индикатором загрузки, чтобы избежать повторных отправок. diff --git a/app-debug.apk b/app-debug.apk new file mode 100644 index 0000000..a3d7b88 Binary files /dev/null and b/app-debug.apk differ diff --git a/app/src/main/java/com/prodhack/moscow2025/data/dto/ResumeDtos.kt b/app/src/main/java/com/prodhack/moscow2025/data/dto/ResumeDtos.kt index d408cfd..14fac63 100644 --- a/app/src/main/java/com/prodhack/moscow2025/data/dto/ResumeDtos.kt +++ b/app/src/main/java/com/prodhack/moscow2025/data/dto/ResumeDtos.kt @@ -17,8 +17,6 @@ enum class ExperienceTypeDTO { @SerialName("noExperience") NoExperience, - @SerialName("lessThan1") - LessThan1, @SerialName("between1And3") Between1And3, @@ -31,7 +29,6 @@ enum class ExperienceTypeDTO { fun mapToDomain(): ExperienceType = when (this) { NoExperience -> ExperienceType.NoExperience - LessThan1 -> ExperienceType.LessThan1 Between1And3 -> ExperienceType.Between1And3 Between3And6 -> ExperienceType.Between3And6 MoreThan6 -> ExperienceType.MoreThan6 @@ -40,7 +37,6 @@ enum class ExperienceTypeDTO { fun ExperienceType.mapToData(): ExperienceTypeDTO = when (this) { ExperienceType.NoExperience -> ExperienceTypeDTO.NoExperience - ExperienceType.LessThan1 -> ExperienceTypeDTO.LessThan1 ExperienceType.Between1And3 -> ExperienceTypeDTO.Between1And3 ExperienceType.Between3And6 -> ExperienceTypeDTO.Between3And6 ExperienceType.MoreThan6 -> ExperienceTypeDTO.MoreThan6 diff --git a/app/src/main/java/com/prodhack/moscow2025/domain/models/ResumeModel.kt b/app/src/main/java/com/prodhack/moscow2025/domain/models/ResumeModel.kt index 8173f64..1ca7ce9 100644 --- a/app/src/main/java/com/prodhack/moscow2025/domain/models/ResumeModel.kt +++ b/app/src/main/java/com/prodhack/moscow2025/domain/models/ResumeModel.kt @@ -56,7 +56,6 @@ data class Project( enum class ExperienceType { NoExperience, - LessThan1, Between1And3, Between3And6, MoreThan6 diff --git a/app/src/main/java/com/prodhack/moscow2025/domain/usecase/resumes/CalculateResumeDiffUseCase.kt b/app/src/main/java/com/prodhack/moscow2025/domain/usecase/resumes/CalculateResumeDiffUseCase.kt index a534f98..d5a5cd7 100644 --- a/app/src/main/java/com/prodhack/moscow2025/domain/usecase/resumes/CalculateResumeDiffUseCase.kt +++ b/app/src/main/java/com/prodhack/moscow2025/domain/usecase/resumes/CalculateResumeDiffUseCase.kt @@ -163,7 +163,6 @@ class CalculateResumeDiffUseCase { private fun ExperienceType.toReadable(): String = when (this) { ExperienceType.NoExperience -> "Нет опыта" - ExperienceType.LessThan1 -> "Меньше года" ExperienceType.Between1And3 -> "1-3 года" ExperienceType.Between3And6 -> "3-6 лет" ExperienceType.MoreThan6 -> "Более 6 лет" diff --git a/app/src/main/java/com/prodhack/moscow2025/presentation/utils/dataUtils.kt b/app/src/main/java/com/prodhack/moscow2025/presentation/utils/dataUtils.kt index ee5c1cf..0d0071b 100644 --- a/app/src/main/java/com/prodhack/moscow2025/presentation/utils/dataUtils.kt +++ b/app/src/main/java/com/prodhack/moscow2025/presentation/utils/dataUtils.kt @@ -6,7 +6,6 @@ import kotlin.math.roundToInt fun ExperienceType.toReadableText(): String = when (this) { ExperienceType.NoExperience -> "Нет опыта" - ExperienceType.LessThan1 -> "Меньше года" ExperienceType.Between1And3 -> "1-3 года" ExperienceType.Between3And6 -> "3-6 лет" ExperienceType.MoreThan6 -> "Более 6 лет"