diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/paging/LobstersPagingSource.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/paging/LobstersPagingSource.kt index 1d6464dd..673b8569 100644 --- a/android/src/main/kotlin/dev/msfjarvis/claw/android/paging/LobstersPagingSource.kt +++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/paging/LobstersPagingSource.kt @@ -13,7 +13,7 @@ import com.slack.eithernet.ApiResult.Success import dagger.assisted.Assisted import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject -import dev.msfjarvis.claw.android.ui.toError +import dev.msfjarvis.claw.api.toError import dev.msfjarvis.claw.core.injection.IODispatcher import dev.msfjarvis.claw.model.LobstersPost import dev.msfjarvis.claw.model.UIPost diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/paging/SearchPagingSource.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/paging/SearchPagingSource.kt index 5e275f3a..00feeefa 100644 --- a/android/src/main/kotlin/dev/msfjarvis/claw/android/paging/SearchPagingSource.kt +++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/paging/SearchPagingSource.kt @@ -14,8 +14,8 @@ import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject import dev.msfjarvis.claw.android.paging.LobstersPagingSource.Companion.PAGE_SIZE import dev.msfjarvis.claw.android.paging.LobstersPagingSource.Companion.STARTING_PAGE_INDEX -import dev.msfjarvis.claw.android.ui.toError import dev.msfjarvis.claw.api.LobstersSearchApi +import dev.msfjarvis.claw.api.toError import dev.msfjarvis.claw.core.injection.IODispatcher import dev.msfjarvis.claw.model.LobstersPost import dev.msfjarvis.claw.model.UIPost diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/ext.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/ext.kt index 5d5efe61..9258f95f 100644 --- a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/ext.kt +++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/ext.kt @@ -8,14 +8,11 @@ package dev.msfjarvis.claw.android.ui import android.content.Context import android.content.Intent -import com.slack.eithernet.ApiResult import dev.msfjarvis.claw.android.viewmodel.ClawViewModel import dev.msfjarvis.claw.common.posts.PostActions import dev.msfjarvis.claw.common.urllauncher.UrlLauncher import dev.msfjarvis.claw.model.LinkMetadata import dev.msfjarvis.claw.model.UIPost -import java.io.IOException -import java.net.HttpURLConnection fun PostActions( context: Context, @@ -67,17 +64,3 @@ fun PostActions( } } } - -/** - * Convert an [ApiResult.Failure.HttpFailure] to a scoped down error with a more useful user-facing - * message. - */ -@Suppress("NOTHING_TO_INLINE") // We inline this to eliminate the stacktrace frame. -inline fun ApiResult.Failure.HttpFailure.toError(): Throwable = - when (code) { - HttpURLConnection.HTTP_NOT_FOUND -> IOException("Story was removed by moderator") - HttpURLConnection.HTTP_INTERNAL_ERROR, - HttpURLConnection.HTTP_BAD_GATEWAY, - HttpURLConnection.HTTP_UNAVAILABLE -> IOException("It appears lobste.rs is currently down") - else -> IOException("API returned an invalid response") - } diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/viewmodel/ClawViewModel.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/viewmodel/ClawViewModel.kt index d809e577..149a4489 100644 --- a/android/src/main/kotlin/dev/msfjarvis/claw/android/viewmodel/ClawViewModel.kt +++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/viewmodel/ClawViewModel.kt @@ -29,8 +29,8 @@ import dev.msfjarvis.claw.android.paging.LobstersPagingSource import dev.msfjarvis.claw.android.paging.LobstersPagingSource.Companion.PAGE_SIZE import dev.msfjarvis.claw.android.paging.LobstersPagingSource.Companion.STARTING_PAGE_INDEX import dev.msfjarvis.claw.android.paging.SearchPagingSource -import dev.msfjarvis.claw.android.ui.toError import dev.msfjarvis.claw.api.LobstersApi +import dev.msfjarvis.claw.api.toError import dev.msfjarvis.claw.core.injection.IODispatcher import dev.msfjarvis.claw.core.injection.MainDispatcher import dev.msfjarvis.claw.model.Comment diff --git a/api/build.gradle.kts b/api/build.gradle.kts index 41756048..bc545dbb 100644 --- a/api/build.gradle.kts +++ b/api/build.gradle.kts @@ -20,12 +20,12 @@ anvil { generateDaggerFactories.set(true) } dependencies { api(libs.dagger) + api(libs.eithernet) api(libs.javax.inject) api(libs.okhttp.core) api(libs.retrofit) api(projects.model) - implementation(libs.eithernet) implementation(libs.eithernet.integration.retrofit) implementation(libs.jsoup) diff --git a/api/src/main/kotlin/dev/msfjarvis/claw/api/util.kt b/api/src/main/kotlin/dev/msfjarvis/claw/api/util.kt new file mode 100644 index 00000000..469412cd --- /dev/null +++ b/api/src/main/kotlin/dev/msfjarvis/claw/api/util.kt @@ -0,0 +1,21 @@ +/* + * Copyright © Harsh Shandilya. + * Use of this source code is governed by an MIT-style + * license that can be found in the LICENSE file or at + * https://opensource.org/licenses/MIT. + */ +package dev.msfjarvis.claw.api + +import com.slack.eithernet.ApiResult.Failure +import java.io.IOException +import java.net.HttpURLConnection + +@Suppress("NOTHING_TO_INLINE") // We inline this to eliminate the stacktrace frame. +inline fun Failure.HttpFailure.toError(): Throwable = + when (code) { + HttpURLConnection.HTTP_NOT_FOUND -> IOException("Story was removed by moderator") + HttpURLConnection.HTTP_INTERNAL_ERROR, + HttpURLConnection.HTTP_BAD_GATEWAY, + HttpURLConnection.HTTP_UNAVAILABLE -> IOException("It appears lobste.rs is currently down") + else -> IOException("API returned an invalid response") + }