mirror of
https://github.com/msfjarvis/compose-lobsters
synced 2025-08-14 22:17:03 +05:30
refactor: move HttpFailure.toError to api
module
Also expose EitherNet as an api dependency since it's part of the public API.
This commit is contained in:
parent
1db8067616
commit
daf66a16bc
6 changed files with 25 additions and 21 deletions
|
@ -13,7 +13,7 @@ import com.slack.eithernet.ApiResult.Success
|
||||||
import dagger.assisted.Assisted
|
import dagger.assisted.Assisted
|
||||||
import dagger.assisted.AssistedFactory
|
import dagger.assisted.AssistedFactory
|
||||||
import dagger.assisted.AssistedInject
|
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.core.injection.IODispatcher
|
||||||
import dev.msfjarvis.claw.model.LobstersPost
|
import dev.msfjarvis.claw.model.LobstersPost
|
||||||
import dev.msfjarvis.claw.model.UIPost
|
import dev.msfjarvis.claw.model.UIPost
|
||||||
|
|
|
@ -14,8 +14,8 @@ import dagger.assisted.AssistedFactory
|
||||||
import dagger.assisted.AssistedInject
|
import dagger.assisted.AssistedInject
|
||||||
import dev.msfjarvis.claw.android.paging.LobstersPagingSource.Companion.PAGE_SIZE
|
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.LobstersPagingSource.Companion.STARTING_PAGE_INDEX
|
||||||
import dev.msfjarvis.claw.android.ui.toError
|
|
||||||
import dev.msfjarvis.claw.api.LobstersSearchApi
|
import dev.msfjarvis.claw.api.LobstersSearchApi
|
||||||
|
import dev.msfjarvis.claw.api.toError
|
||||||
import dev.msfjarvis.claw.core.injection.IODispatcher
|
import dev.msfjarvis.claw.core.injection.IODispatcher
|
||||||
import dev.msfjarvis.claw.model.LobstersPost
|
import dev.msfjarvis.claw.model.LobstersPost
|
||||||
import dev.msfjarvis.claw.model.UIPost
|
import dev.msfjarvis.claw.model.UIPost
|
||||||
|
|
|
@ -8,14 +8,11 @@ package dev.msfjarvis.claw.android.ui
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import com.slack.eithernet.ApiResult
|
|
||||||
import dev.msfjarvis.claw.android.viewmodel.ClawViewModel
|
import dev.msfjarvis.claw.android.viewmodel.ClawViewModel
|
||||||
import dev.msfjarvis.claw.common.posts.PostActions
|
import dev.msfjarvis.claw.common.posts.PostActions
|
||||||
import dev.msfjarvis.claw.common.urllauncher.UrlLauncher
|
import dev.msfjarvis.claw.common.urllauncher.UrlLauncher
|
||||||
import dev.msfjarvis.claw.model.LinkMetadata
|
import dev.msfjarvis.claw.model.LinkMetadata
|
||||||
import dev.msfjarvis.claw.model.UIPost
|
import dev.msfjarvis.claw.model.UIPost
|
||||||
import java.io.IOException
|
|
||||||
import java.net.HttpURLConnection
|
|
||||||
|
|
||||||
fun PostActions(
|
fun PostActions(
|
||||||
context: Context,
|
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 <T : Any> ApiResult.Failure.HttpFailure<T>.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")
|
|
||||||
}
|
|
||||||
|
|
|
@ -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.PAGE_SIZE
|
||||||
import dev.msfjarvis.claw.android.paging.LobstersPagingSource.Companion.STARTING_PAGE_INDEX
|
import dev.msfjarvis.claw.android.paging.LobstersPagingSource.Companion.STARTING_PAGE_INDEX
|
||||||
import dev.msfjarvis.claw.android.paging.SearchPagingSource
|
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.LobstersApi
|
||||||
|
import dev.msfjarvis.claw.api.toError
|
||||||
import dev.msfjarvis.claw.core.injection.IODispatcher
|
import dev.msfjarvis.claw.core.injection.IODispatcher
|
||||||
import dev.msfjarvis.claw.core.injection.MainDispatcher
|
import dev.msfjarvis.claw.core.injection.MainDispatcher
|
||||||
import dev.msfjarvis.claw.model.Comment
|
import dev.msfjarvis.claw.model.Comment
|
||||||
|
|
|
@ -20,12 +20,12 @@ anvil { generateDaggerFactories.set(true) }
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
api(libs.dagger)
|
api(libs.dagger)
|
||||||
|
api(libs.eithernet)
|
||||||
api(libs.javax.inject)
|
api(libs.javax.inject)
|
||||||
api(libs.okhttp.core)
|
api(libs.okhttp.core)
|
||||||
api(libs.retrofit)
|
api(libs.retrofit)
|
||||||
api(projects.model)
|
api(projects.model)
|
||||||
|
|
||||||
implementation(libs.eithernet)
|
|
||||||
implementation(libs.eithernet.integration.retrofit)
|
implementation(libs.eithernet.integration.retrofit)
|
||||||
implementation(libs.jsoup)
|
implementation(libs.jsoup)
|
||||||
|
|
||||||
|
|
21
api/src/main/kotlin/dev/msfjarvis/claw/api/util.kt
Normal file
21
api/src/main/kotlin/dev/msfjarvis/claw/api/util.kt
Normal file
|
@ -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 <T : Any> Failure.HttpFailure<T>.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")
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue