Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Iteration 3 review #132

Merged
merged 114 commits into from
Aug 23, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
114 commits
Select commit Hold shift + click to select a range
0734653
Merge pull request #95 from ElchinGasymov/main
ElchinGasymov Aug 14, 2024
7210eff
Верстка экрана фильтрации
AnShok Aug 14, 2024
e54f19c
Верстка экрана выбора отрасли
AnShok Aug 14, 2024
14b0ad7
Изменения в стиль и fragment_filter.xml Чтобы можно было изменять цве…
AnShok Aug 15, 2024
113e59c
Добавлена верстка выбора страны и решиона
AnShok Aug 15, 2024
fa37dca
Добавлен placeholder такого региона нет
AnShok Aug 15, 2024
32271c5
progress_bar везде progress_bar
AnShok Aug 15, 2024
00bfd05
Доработан граф навигации
AnShok Aug 15, 2024
1770576
Настройка поведения Hint на фрагменте поиска и фрагменте выбора места…
AnShok Aug 15, 2024
65dd9e3
Fix
AnShok Aug 15, 2024
a74d873
Fix 2
AnShok Aug 15, 2024
686b1d2
Fix 2
AnShok Aug 15, 2024
95ed954
Fix 3
AnShok Aug 15, 2024
d9474c9
Устранение замечаний ревью
AnShok Aug 15, 2024
ea6de79
Merge pull request #98 from ElchinGasymov/Career_Hub_filter_fragment
ElchinGasymov Aug 16, 2024
9e18543
Добавил новые suspend-методы классы Request и Response DTO модели и м…
G-dev-ui Aug 16, 2024
9bac323
Поправил нейминг, исправил айдишники, убрал в домейне serialVersionUID
G-dev-ui Aug 17, 2024
e7e8528
fix detect
G-dev-ui Aug 17, 2024
3176678
fix detect(2)
G-dev-ui Aug 17, 2024
22e2e8c
fix areaId
G-dev-ui Aug 17, 2024
8d6dffd
fix detect
G-dev-ui Aug 17, 2024
051c2eb
Изменил в regionrequest и в репозитории
G-dev-ui Aug 17, 2024
e459847
Merge pull request #106 from ElchinGasymov/Career_Hub-add-data-filter
ElchinGasymov Aug 18, 2024
aaa4605
Интеракторы для фильтров и di
ElchinGasymov Aug 18, 2024
9084c72
Перенес все в один интерактор
ElchinGasymov Aug 18, 2024
032a9f5
Добавлен Shared Prefs
AndreyRyabitckiy Aug 18, 2024
bb180bb
Merge branch 'develop' into Career_Hub_Shared_Prefs
AndreyRyabitckiy Aug 18, 2024
f85552c
Merge pull request #108 from ElchinGasymov/careerhub_add_interactor
G-dev-ui Aug 18, 2024
31dfdf5
Add All
AndreyRyabitckiy Aug 18, 2024
8cddd05
DI
AndreyRyabitckiy Aug 18, 2024
fcbb84d
Merge branch 'develop' into Career_Hub_Shared_Prefs
AndreyRyabitckiy Aug 18, 2024
eb52713
Fix1
AndreyRyabitckiy Aug 18, 2024
8a1ba97
Fix2
AndreyRyabitckiy Aug 18, 2024
791a92a
Fix3
AndreyRyabitckiy Aug 18, 2024
9fefdaa
Fix4
AndreyRyabitckiy Aug 18, 2024
b09da05
Fix4.1
AndreyRyabitckiy Aug 18, 2024
c409d71
Fix4.2
AndreyRyabitckiy Aug 18, 2024
38d3ad8
Fix5
AndreyRyabitckiy Aug 18, 2024
555f037
Реализована логика перехода на экран стран, регионов, обработка ошибо…
Logomann Aug 18, 2024
fcbd353
Реализована логика перехода на экран стран, регионов, обработка ошибо…
Logomann Aug 18, 2024
c1496dd
Реализована логика перехода на экран стран, регионов, обработка ошибо…
Logomann Aug 18, 2024
51b8849
fix
Logomann Aug 18, 2024
09d7ec4
fix2
Logomann Aug 18, 2024
e2e4cc2
fix3
Logomann Aug 18, 2024
810af04
fix4
Logomann Aug 18, 2024
14d72dc
fix5
Logomann Aug 18, 2024
6039b9c
Добавлена ViewModel
AndreyRyabitckiy Aug 19, 2024
9e1f2a8
Merge pull request #115 from ElchinGasymov/Career_Hub_epic5_add_filte…
Logomann Aug 19, 2024
5025030
Добавлен поиск по регионам
Logomann Aug 19, 2024
be5c6fc
fix
Logomann Aug 19, 2024
f300b19
Добавлена ViewModel
AndreyRyabitckiy Aug 19, 2024
bba9680
Fix6
AndreyRyabitckiy Aug 19, 2024
1b04232
Fix6.1
AndreyRyabitckiy Aug 19, 2024
c512606
Merge branch 'develop' into career_hub_filter_industry
AndreyRyabitckiy Aug 19, 2024
a45c9b1
Merge pull request #112 from ElchinGasymov/Career_Hub_Shared_Prefs
ElchinGasymov Aug 19, 2024
36dcd98
Merge pull request #119 from ElchinGasymov/Career_Hub_epic5_add_searc…
Logomann Aug 19, 2024
d237d58
Добавлен Adapter
AndreyRyabitckiy Aug 19, 2024
b31341e
Merge branch 'develop' into career_hub_filter_industry
AndreyRyabitckiy Aug 19, 2024
2a70fa2
Реализовано:
Logomann Aug 19, 2024
be31a2b
fix
Logomann Aug 19, 2024
94e464f
fix2
Logomann Aug 19, 2024
b0191a4
fix3
Logomann Aug 19, 2024
b69f943
Fix3
AndreyRyabitckiy Aug 19, 2024
b5b0d0c
Fix4
AndreyRyabitckiy Aug 19, 2024
569d753
Fix4.1
AndreyRyabitckiy Aug 19, 2024
efc9f8e
Fix4.2
AndreyRyabitckiy Aug 19, 2024
971195a
Fix4.3
AndreyRyabitckiy Aug 19, 2024
bded064
Merge pull request #122 from ElchinGasymov/Career_Hub_epic4_modify_va…
Logomann Aug 20, 2024
116919c
Фикс конфликтов
ElchinGasymov Aug 20, 2024
95397e9
Фикс конфликтов
ElchinGasymov Aug 20, 2024
4c83d95
search fix2
Logomann Aug 20, 2024
4cdf0a9
search fix3
Logomann Aug 20, 2024
d339196
search fix4
Logomann Aug 20, 2024
11e1251
Merge pull request #120 from ElchinGasymov/career_hub_filter_industry
ElchinGasymov Aug 20, 2024
8ac73ac
search fixes
Logomann Aug 20, 2024
86e6ea6
search fixes2
Logomann Aug 20, 2024
73ef008
search fixes3
Logomann Aug 20, 2024
1e34286
search fixes4
Logomann Aug 20, 2024
b8bf9c0
Добавлен поиск по отраслям
Logomann Aug 20, 2024
396500e
Добавлен поиск по отраслям
Logomann Aug 20, 2024
8878c3f
Merge pull request #127 from ElchinGasymov/Career_hub_epic4_add_searc…
AndreyRyabitckiy Aug 20, 2024
ca266c4
Merge pull request #125 from ElchinGasymov/Career_hub_epic4_5_search_…
AndreyRyabitckiy Aug 20, 2024
565c393
пофиксина кнопка применения настроек
Logomann Aug 20, 2024
b675dcd
пофиксина кнопка применения настроек
Logomann Aug 20, 2024
f4b77fa
fix
Logomann Aug 20, 2024
dba9a89
fix
Logomann Aug 20, 2024
e6bd1c8
Исправлены баги критериев epic4 и epic5
Logomann Aug 20, 2024
dd7b943
Исправлены баги критериев epic4 и epic5
Logomann Aug 20, 2024
7150041
fix
Logomann Aug 20, 2024
e3b8727
fix
Logomann Aug 20, 2024
dcf469a
fix
Logomann Aug 20, 2024
434cf9b
fix
Logomann Aug 20, 2024
8b12e78
fix
Logomann Aug 20, 2024
e34c656
fix
Logomann Aug 20, 2024
318ee67
Фикс отступа экран выбор старны
ElchinGasymov Aug 21, 2024
fac61b7
Merge pull request #130 from ElchinGasymov/bugfix
ElchinGasymov Aug 21, 2024
51cce9c
Merge pull request #128 from ElchinGasymov/Career_hub_epic4_5_search_…
G-dev-ui Aug 21, 2024
059db7a
fix
Logomann Aug 21, 2024
4ed8797
fix
Logomann Aug 21, 2024
92a0f8d
Merge pull request #131 from ElchinGasymov/Career_Hub_Country_UI_fix
Logomann Aug 21, 2024
973384b
fix detect
G-dev-ui Aug 21, 2024
40c33c8
fix detect(2)
G-dev-ui Aug 21, 2024
8b68df1
fix detect(3)
G-dev-ui Aug 21, 2024
124641d
fix detect(4)
G-dev-ui Aug 21, 2024
f7376cc
detekt fix
Logomann Aug 21, 2024
4434134
detekt fix5
Logomann Aug 21, 2024
01d1162
detekt fix6
Logomann Aug 21, 2024
568f04d
detekt fix7
Logomann Aug 21, 2024
b4a8d00
detekt fix8
Logomann Aug 21, 2024
2b1f787
detekt fix9
Logomann Aug 21, 2024
2cb5294
iteration fix
Logomann Aug 22, 2024
250377f
Merge pull request #135 from ElchinGasymov/iteration_3_review_fix
Logomann Aug 22, 2024
879e033
iteration fix
Logomann Aug 22, 2024
58a9ab1
Merge pull request #137 from ElchinGasymov/iteration_3_review_fix2
Logomann Aug 22, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,20 @@ package ru.practicum.android.diploma.data.dto

import ru.practicum.android.diploma.data.dto.components.Area
import ru.practicum.android.diploma.data.dto.components.Contacts
import ru.practicum.android.diploma.data.dto.components.CountryDto
import ru.practicum.android.diploma.data.dto.components.Employer
import ru.practicum.android.diploma.data.dto.components.Employment
import ru.practicum.android.diploma.data.dto.components.Experience
import ru.practicum.android.diploma.data.dto.components.KeySkill
import ru.practicum.android.diploma.data.dto.components.LogoUrls
import ru.practicum.android.diploma.data.dto.components.Phone
import ru.practicum.android.diploma.data.dto.components.RegionDto
import ru.practicum.android.diploma.data.dto.components.Salary
import ru.practicum.android.diploma.data.dto.components.Schedule
import ru.practicum.android.diploma.data.dto.components.IndustriesDto
import ru.practicum.android.diploma.domain.models.Country
import ru.practicum.android.diploma.domain.models.Region
import ru.practicum.android.diploma.domain.models.Industries
import ru.practicum.android.diploma.domain.models.VacanciesResponse
import ru.practicum.android.diploma.domain.models.Vacancy
import ru.practicum.android.diploma.domain.models.VacancyDetails
Expand Down Expand Up @@ -75,3 +81,40 @@ fun Contacts.toModel(): ContactsModel {
val phones = phones?.map { it.toModel() }
return ContactsModel(email, name, phones)
}

fun CountryDto.toModel(): Country {
return Country(
id = this.id,
name = this.name
)
}

fun RegionDto.toModel(): Region {
return Region(
id = this.id,
name = this.name,
parentId = this.parentId
)
}

fun List<IndustriesDto>.toSectorList(): List<Industries> {
return this.map {
Industries(
id = it.id,
name = it.name,
isChecked = false
)
}
}

fun List<CountryDto>.toCountryList(): List<Country> {
return this.map { it.toModel() }
}

fun List<RegionDto>.toRegionList(): List<Region> {
return this.map { it.toModel() }
}

fun List<CountryDto>.toAllRegions(): List<Region> {
return this.flatMap { it.areas.map { regionDto -> regionDto.toModel() } }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
package ru.practicum.android.diploma.data.dto

data object CountriesRequest
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package ru.practicum.android.diploma.data.dto

import ru.practicum.android.diploma.data.dto.components.CountryDto

data class CountriesResponse(
val countries: List<CountryDto>
) : Response()
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
package ru.practicum.android.diploma.data.dto

data object IndustriesRequest
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package ru.practicum.android.diploma.data.dto

import ru.practicum.android.diploma.data.dto.components.IndustriesDto

data class IndustriesResponse(
val sectors: List<IndustriesDto>
) : Response()
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package ru.practicum.android.diploma.data.dto

data class RegionsRequest(
val id: String
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package ru.practicum.android.diploma.data.dto

import ru.practicum.android.diploma.data.dto.components.RegionDto

data class RegionsResponse(
val regions: List<RegionDto>
) : Response()
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package ru.practicum.android.diploma.data.dto

import ru.practicum.android.diploma.data.dto.components.CountryDto
import ru.practicum.android.diploma.data.dto.components.IndustriesDto
import ru.practicum.android.diploma.data.dto.components.RegionDto
import java.io.Serializable

data class SaveFiltersSharedPrefsDto(
val industries: IndustriesDto?,
val country: CountryDto?,
val region: RegionDto?,
val currency: Int?,
val noCurrency: Boolean?
) : Serializable {
companion object {
private const val serialVersionUID = 1L
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package ru.practicum.android.diploma.data.dto.components

data class CountryDto(
val id: String,
val name: String,
val areas: List<RegionDto>
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package ru.practicum.android.diploma.data.dto.components

data class IndustriesDto(
val id: String,
val name: String
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package ru.practicum.android.diploma.data.dto.components

import com.google.gson.annotations.SerializedName

data class RegionDto(
val id: String,
val name: String,
@SerializedName("parent_id") val parentId: Int?
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package ru.practicum.android.diploma.data.dto.components

data class RegionListDto(
val areas: List<RegionDto>? = null
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
package ru.practicum.android.diploma.data.impl

import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flow
import ru.practicum.android.diploma.data.dto.CountriesRequest
import ru.practicum.android.diploma.data.dto.CountriesResponse
import ru.practicum.android.diploma.data.dto.IndustriesRequest
import ru.practicum.android.diploma.data.dto.IndustriesResponse
import ru.practicum.android.diploma.data.dto.RESULT_CODE_BAD_REQUEST
import ru.practicum.android.diploma.data.dto.RESULT_CODE_NO_INTERNET
import ru.practicum.android.diploma.data.dto.RegionsRequest
import ru.practicum.android.diploma.data.dto.RegionsResponse
import ru.practicum.android.diploma.data.dto.Response
import ru.practicum.android.diploma.data.dto.toAllRegions
import ru.practicum.android.diploma.data.dto.toCountryList
import ru.practicum.android.diploma.data.dto.toRegionList
import ru.practicum.android.diploma.data.dto.toSectorList
import ru.practicum.android.diploma.data.network.NetworkClient
import ru.practicum.android.diploma.domain.api.FilterRepository
import ru.practicum.android.diploma.domain.models.Country
import ru.practicum.android.diploma.domain.models.Industries
import ru.practicum.android.diploma.domain.models.Region
import ru.practicum.android.diploma.util.ResponseData

class FilterRepositoryImpl(
private val networkClient: NetworkClient
) : FilterRepository {

override fun getCountries(): Flow<ResponseData<List<Country>>> = flow {
when (val response = networkClient.doRequest(CountriesRequest)) {
is CountriesResponse -> {
val countriesList = response.countries.toCountryList()
emit(ResponseData.Data(countriesList))
}

else -> emit(responseToError(response))
}
}

override fun getRegions(id: String): Flow<ResponseData<List<Region>>> = flow {
when (val response = networkClient.doRequest(RegionsRequest(id))) {
is RegionsResponse -> {
val regionsList = response.regions.toRegionList()
emit(ResponseData.Data(regionsList))
}

else -> emit(responseToError(response))
}
}

override fun getAllRegions(): Flow<ResponseData<List<Region>>> = flow {
when (val response = networkClient.doRequest(CountriesRequest)) {
is CountriesResponse -> {
val regionsList = response.countries.toAllRegions()
emit(ResponseData.Data(regionsList))
}

else -> emit(responseToError(response))
}
}

override fun getIndustries(): Flow<ResponseData<List<Industries>>> = flow {
when (val response = networkClient.doRequest(IndustriesRequest)) {
is IndustriesResponse -> {
val sectorsList = response.sectors.toSectorList()
emit(ResponseData.Data(sectorsList))
}

else -> emit(responseToError(response))
}
}

private fun <T> responseToError(response: Response): ResponseData<T> =
ResponseData.Error(
when (response.resultCode) {
RESULT_CODE_NO_INTERNET -> ResponseData.ResponseError.NO_INTERNET
RESULT_CODE_BAD_REQUEST -> ResponseData.ResponseError.CLIENT_ERROR
else -> ResponseData.ResponseError.SERVER_ERROR
}
)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package ru.practicum.android.diploma.data.impl

import android.content.SharedPreferences
import com.google.gson.Gson
import ru.practicum.android.diploma.domain.SharedPrefsRepository
import ru.practicum.android.diploma.domain.models.SaveFiltersSharedPrefs

class SharedPrefsRepositoryImpl(
private val sharedPreferences: SharedPreferences,
private val gson: Gson
) : SharedPrefsRepository {
override suspend fun readSharedPrefs(): SaveFiltersSharedPrefs? {
val json = sharedPreferences.getString(HISTORY, null) ?: return null
/*SaveFiltersSharedPrefs(

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Закоментированный код лучше сразу удалять. Хранить закоментированный код в проекте - плохая практика, в случае чего этот код можно восстановить с помощью истории гита

Industries("", "", false),
Country("", ""),
Region("", "", null),
"",
false
)*/
return gson.fromJson(json, SaveFiltersSharedPrefs::class.java)
}

override suspend fun writeSharedPrefs(filters: SaveFiltersSharedPrefs) {
/* val oldShared = readSharedPrefs()
val newShared = oldShared.copy(
industries = filters.industries ?: oldShared.industries,
country = filters.country ?: oldShared.country,
region = filters.region ?: oldShared.region,
currency = filters.currency ?: oldShared.currency,
noCurrency = filters.noCurrency
)*/
sharedPreferences.edit().putString(HISTORY, gson.toJson(filters)).apply()
}

override suspend fun clearSharedPrefs() {
sharedPreferences.edit().remove(HISTORY).apply()
}

companion object {
private const val HISTORY = "history"
}
}
Original file line number Diff line number Diff line change
@@ -1,15 +1,28 @@
package ru.practicum.android.diploma.data.network

import retrofit2.Response
import retrofit2.http.GET
import retrofit2.http.Path
import retrofit2.http.QueryMap
import ru.practicum.android.diploma.data.dto.SearchResponse
import ru.practicum.android.diploma.data.dto.VacancyResponse
import ru.practicum.android.diploma.data.dto.components.CountryDto
import ru.practicum.android.diploma.data.dto.components.IndustriesDto
import ru.practicum.android.diploma.data.dto.components.RegionListDto

interface HHApiService {
@GET("vacancies/{vacancy_id}")
suspend fun getVacancy(@Path("vacancy_id") id: String): VacancyResponse

@GET("vacancies")
suspend fun searchVacancies(@QueryMap options: Map<String, String>): SearchResponse

@GET("areas")
suspend fun getCountries(): Response<List<CountryDto>>

@GET("areas/{area_id}")
suspend fun getRegions(@Path("area_id") areaId: String): Response<RegionListDto>

@GET("industries")
suspend fun getIndustries(): Response<List<IndustriesDto>>
}
Loading
Loading