diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/baseurl/BaseURLViewModel.kt b/app/src/main/java/gq/kirmanak/mealient/ui/baseurl/BaseURLViewModel.kt index e2bd49e..015e659 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/baseurl/BaseURLViewModel.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/baseurl/BaseURLViewModel.kt @@ -8,11 +8,11 @@ import dagger.hilt.android.lifecycle.HiltViewModel import gq.kirmanak.mealient.data.auth.AuthRepo import gq.kirmanak.mealient.data.baseurl.ServerInfoRepo import gq.kirmanak.mealient.data.recipes.RecipeRepo +import gq.kirmanak.mealient.datasource.NetworkError import gq.kirmanak.mealient.logging.Logger import gq.kirmanak.mealient.ui.OperationUiState import kotlinx.coroutines.launch import javax.inject.Inject -import javax.net.ssl.SSLHandshakeException @HiltViewModel class BaseURLViewModel @Inject constructor( @@ -47,11 +47,11 @@ class BaseURLViewModel @Inject constructor( val result: Result = serverInfoRepo.tryBaseURL(url).recoverCatching { logger.e(it) { "checkBaseURL: trying to recover, had prefix = $hasPrefix" } - if (hasPrefix.not() && it.cause is SSLHandshakeException) { + if (hasPrefix || it is NetworkError.NotMealie) { + throw it + } else { val unencryptedUrl = url.replace("https", "http") serverInfoRepo.tryBaseURL(unencryptedUrl).getOrThrow() - } else { - throw it } } diff --git a/app/src/test/java/gq/kirmanak/mealient/ui/baseurl/BaseURLViewModelTest.kt b/app/src/test/java/gq/kirmanak/mealient/ui/baseurl/BaseURLViewModelTest.kt index 3250c6f..59b10ea 100644 --- a/app/src/test/java/gq/kirmanak/mealient/ui/baseurl/BaseURLViewModelTest.kt +++ b/app/src/test/java/gq/kirmanak/mealient/ui/baseurl/BaseURLViewModelTest.kt @@ -17,7 +17,6 @@ import kotlinx.coroutines.test.* import org.junit.Before import org.junit.Test import java.io.IOException -import java.net.UnknownHostException import javax.net.ssl.SSLHandshakeException @OptIn(ExperimentalCoroutinesApi::class) @@ -126,7 +125,7 @@ class BaseURLViewModelTest : BaseUnitTest() { @Test fun `when saving base url with no prefix and https throws non ssl expect no http`() = runTest { coEvery { serverInfoRepo.getUrl() } returns null - val err = NetworkError.MalformedUrl(UnknownHostException()) + val err = NetworkError.NotMealie(IOException()) coEvery { serverInfoRepo.tryBaseURL("https://test") } returns Result.failure(err) subject.saveBaseUrl("test") coVerify(inverse = true) { serverInfoRepo.tryBaseURL("http://test") }