Fix transition when base URL is actually incorrect (#196)
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package gq.kirmanak.mealient.data.baseurl
|
||||
|
||||
import gq.kirmanak.mealient.datasource.models.VersionResponse
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
|
||||
interface ServerInfoRepo {
|
||||
@@ -8,7 +9,7 @@ interface ServerInfoRepo {
|
||||
|
||||
suspend fun getUrl(): String?
|
||||
|
||||
suspend fun tryBaseURL(baseURL: String): Result<Unit>
|
||||
suspend fun tryBaseURL(baseURL: String): Result<VersionResponse>
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package gq.kirmanak.mealient.data.baseurl
|
||||
|
||||
import gq.kirmanak.mealient.datasource.ServerUrlProvider
|
||||
import gq.kirmanak.mealient.datasource.models.VersionResponse
|
||||
import gq.kirmanak.mealient.logging.Logger
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import javax.inject.Inject
|
||||
@@ -20,18 +21,11 @@ class ServerInfoRepoImpl @Inject constructor(
|
||||
return result
|
||||
}
|
||||
|
||||
override suspend fun tryBaseURL(baseURL: String): Result<Unit> {
|
||||
val oldBaseUrl = serverInfoStorage.getBaseURL()
|
||||
serverInfoStorage.storeBaseURL(baseURL)
|
||||
|
||||
try {
|
||||
versionDataSource.requestVersion()
|
||||
} catch (e: Throwable) {
|
||||
serverInfoStorage.storeBaseURL(oldBaseUrl)
|
||||
return Result.failure(e)
|
||||
override suspend fun tryBaseURL(baseURL: String): Result<VersionResponse> {
|
||||
return versionDataSource.runCatching {
|
||||
requestVersion(baseURL)
|
||||
}.onSuccess {
|
||||
serverInfoStorage.storeBaseURL(baseURL)
|
||||
}
|
||||
|
||||
return Result.success(Unit)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -4,5 +4,5 @@ import gq.kirmanak.mealient.datasource.models.VersionResponse
|
||||
|
||||
interface VersionDataSource {
|
||||
|
||||
suspend fun requestVersion(): VersionResponse
|
||||
suspend fun requestVersion(baseURL: String): VersionResponse
|
||||
}
|
||||
@@ -8,7 +8,7 @@ class VersionDataSourceImpl @Inject constructor(
|
||||
private val dataSource: MealieDataSource,
|
||||
) : VersionDataSource {
|
||||
|
||||
override suspend fun requestVersion(): VersionResponse {
|
||||
return dataSource.getVersionInfo()
|
||||
override suspend fun requestVersion(baseURL: String): VersionResponse {
|
||||
return dataSource.getVersionInfo(baseURL)
|
||||
}
|
||||
}
|
||||
@@ -77,7 +77,7 @@ internal class BaseURLViewModel @Inject constructor(
|
||||
return
|
||||
}
|
||||
|
||||
val result: Result<Unit> = serverInfoRepo.tryBaseURL(url).recoverCatching {
|
||||
val result = serverInfoRepo.tryBaseURL(url).recoverCatching {
|
||||
logger.e(it) { "checkBaseURL: trying to recover, had prefix = $hasPrefix" }
|
||||
val certificateError = it.findCauseAsInstanceOf<CertificateCombinedException>()
|
||||
if (certificateError != null) {
|
||||
|
||||
Reference in New Issue
Block a user