You've already forked RekomenciMobile
fix: auth
This commit is contained in:
@@ -62,7 +62,7 @@ class ApiKtorClient(authorizationDataStore: AuthorizationDataStore) {
|
|||||||
loadTokens {
|
loadTokens {
|
||||||
return@loadTokens authorizationDataStore.token.first()
|
return@loadTokens authorizationDataStore.token.first()
|
||||||
.toBearerTokens().also {
|
.toBearerTokens().also {
|
||||||
Log.d("csmlc", it.accessToken)
|
Log.d("ApiKtorClient", it.accessToken)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
refreshTokens {
|
refreshTokens {
|
||||||
@@ -76,6 +76,27 @@ class ApiKtorClient(authorizationDataStore: AuthorizationDataStore) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val authClient = HttpClient(OkHttp) {
|
||||||
|
install(Logging) {
|
||||||
|
logger = Logger.ANDROID
|
||||||
|
level = LogLevel.ALL
|
||||||
|
}
|
||||||
|
install(HttpRequestRetry) {
|
||||||
|
retryOnServerErrors(maxRetries = 3)
|
||||||
|
exponentialDelay()
|
||||||
|
}
|
||||||
|
install(ContentNegotiation) {
|
||||||
|
json(Json {
|
||||||
|
prettyPrint = true
|
||||||
|
isLenient = true
|
||||||
|
ignoreUnknownKeys = true
|
||||||
|
})
|
||||||
|
}
|
||||||
|
defaultRequest {
|
||||||
|
url(Constants.BASE_API_URL)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun String.toBearerTokens(): BearerTokens {
|
private fun String.toBearerTokens(): BearerTokens {
|
||||||
return BearerTokens(this, null)
|
return BearerTokens(this, null)
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -25,7 +25,7 @@ class AuthRepositoryImpl(
|
|||||||
private val authorizationDataStore: AuthorizationDataStore
|
private val authorizationDataStore: AuthorizationDataStore
|
||||||
) : AuthRepository, BaseRepository() {
|
) : AuthRepository, BaseRepository() {
|
||||||
|
|
||||||
override val defaultKtorClient = ktorClient.client
|
override val defaultKtorClient = ktorClient.authClient
|
||||||
|
|
||||||
override fun fetchLoginState(): Flow<Boolean> =
|
override fun fetchLoginState(): Flow<Boolean> =
|
||||||
authorizationDataStore.token.map { it.isNotBlank() }
|
authorizationDataStore.token.map { it.isNotBlank() }
|
||||||
|
|||||||
+14
-6
@@ -1,7 +1,7 @@
|
|||||||
package com.prodhack.moscow2025.domain.usecase.resumes
|
package com.prodhack.moscow2025.domain.usecase.resumes
|
||||||
|
|
||||||
|
import com.prodhack.moscow2025.domain.models.ExperienceType
|
||||||
import com.prodhack.moscow2025.domain.models.ResumeModel
|
import com.prodhack.moscow2025.domain.models.ResumeModel
|
||||||
import com.prodhack.moscow2025.presentation.utils.toReadableText
|
|
||||||
|
|
||||||
data class ResumeDiff(
|
data class ResumeDiff(
|
||||||
val changedFields: List<String>,
|
val changedFields: List<String>,
|
||||||
@@ -55,7 +55,7 @@ class CalculateResumeDiffUseCase {
|
|||||||
}
|
}
|
||||||
val removed = previous.skills.toSet() - current.skills.toSet()
|
val removed = previous.skills.toSet() - current.skills.toSet()
|
||||||
|
|
||||||
if (added.isNotEmpty()) {
|
if (removed.isNotEmpty()) {
|
||||||
changes.add(
|
changes.add(
|
||||||
ChangeModel(
|
ChangeModel(
|
||||||
title = "Удалены навыки",
|
title = "Удалены навыки",
|
||||||
@@ -79,7 +79,7 @@ class CalculateResumeDiffUseCase {
|
|||||||
changes.add(
|
changes.add(
|
||||||
ChangeModel(
|
ChangeModel(
|
||||||
"Опыт",
|
"Опыт",
|
||||||
"${previous.experienceType.toReadableText()} ->\n${current.experienceType.toReadableText()}"
|
"${previous.experienceType.toReadable()} ->\n${current.experienceType.toReadable()}"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -98,7 +98,7 @@ class CalculateResumeDiffUseCase {
|
|||||||
}
|
}
|
||||||
val removed = previous.experience.toSet() - current.experience.toSet()
|
val removed = previous.experience.toSet() - current.experience.toSet()
|
||||||
|
|
||||||
if (added.isNotEmpty()) {
|
if (removed.isNotEmpty()) {
|
||||||
changes.add(
|
changes.add(
|
||||||
ChangeModel(
|
ChangeModel(
|
||||||
"Удален опыт",
|
"Удален опыт",
|
||||||
@@ -121,7 +121,7 @@ class CalculateResumeDiffUseCase {
|
|||||||
}
|
}
|
||||||
val removed = previous.education.toSet() - current.education.toSet()
|
val removed = previous.education.toSet() - current.education.toSet()
|
||||||
|
|
||||||
if (added.isNotEmpty()) {
|
if (removed.isNotEmpty()) {
|
||||||
changes.add(
|
changes.add(
|
||||||
ChangeModel(
|
ChangeModel(
|
||||||
"Удалено образование",
|
"Удалено образование",
|
||||||
@@ -144,7 +144,7 @@ class CalculateResumeDiffUseCase {
|
|||||||
}
|
}
|
||||||
val removed = previous.projects.toSet() - current.projects.toSet()
|
val removed = previous.projects.toSet() - current.projects.toSet()
|
||||||
|
|
||||||
if (added.isNotEmpty()) {
|
if (removed.isNotEmpty()) {
|
||||||
changes.add(
|
changes.add(
|
||||||
ChangeModel(
|
ChangeModel(
|
||||||
"Удален проект",
|
"Удален проект",
|
||||||
@@ -160,3 +160,11 @@ class CalculateResumeDiffUseCase {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun ExperienceType.toReadable(): String = when (this) {
|
||||||
|
ExperienceType.NoExperience -> "Нет опыта"
|
||||||
|
ExperienceType.LessThan1 -> "Меньше года"
|
||||||
|
ExperienceType.Between1And3 -> "1-3 года"
|
||||||
|
ExperienceType.Between3And6 -> "3-6 лет"
|
||||||
|
ExperienceType.MoreThan6 -> "Более 6 лет"
|
||||||
|
}
|
||||||
|
|||||||
+1
-1
@@ -98,7 +98,7 @@ fun ErrorCollectorScope.ResumeHistoryScreen(
|
|||||||
) {
|
) {
|
||||||
items(items.itemCount) { index ->
|
items(items.itemCount) { index ->
|
||||||
val version = items[index] ?: return@items
|
val version = items[index] ?: return@items
|
||||||
val previous = if (index + 1 < items.itemCount) items[index + 1] else null
|
val previous = if ((index + 1) < items.itemCount) items[index + 1] else null
|
||||||
val expanded = expandedState[index] ?: false
|
val expanded = expandedState[index] ?: false
|
||||||
HistoryCard(
|
HistoryCard(
|
||||||
current = version,
|
current = version,
|
||||||
|
|||||||
Reference in New Issue
Block a user