Skip to content

Commit

Permalink
Fix several http exceptions + user friendly messages
Browse files Browse the repository at this point in the history
  • Loading branch information
KurozeroPB committed Oct 17, 2018
1 parent 99ec0b7 commit acdbebb
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 69 deletions.
4 changes: 2 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ android {
applicationId 'xyz.kurozero.nekosmoe'
minSdkVersion 23
targetSdkVersion 27
versionCode 18
versionName '0.12.0'
versionCode 19
versionName '0.12.1'
testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner'
}
sourceSets {
Expand Down
114 changes: 48 additions & 66 deletions app/src/main/kotlin/xyz/kurozero/nekosmoe/NekoMain.kt
Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,8 @@ import java.io.IOException

// https://nekos.moe/api/v1
// http://localhost:8080/api/v1
const val version = "0.12.0"
const val baseUrl = "https://nekos.moe/api/v1"
const val version = "0.12.1"
const val userAgent = "NekosApp/v$version (https://github.com/KurozeroPB/nekos-app)"

val File.extension: String
Expand Down Expand Up @@ -425,22 +425,17 @@ class NekoMain : AppCompatActivity(), ConnectivityReceiver.ConnectivityReceiverL
when (result) {
is Result.Failure -> {
if (error != null) {
when (error.response.statusCode) {
429 -> {
showSnackbar(nekoImages, this@NekoMain, "Too many requests, please wait a few seconds", Snackbar.LENGTH_LONG)
}
else -> {
val nekoException = NekoException.Deserializer().deserialize(error.errorData)
val msg = nekoException?.message ?: error.message ?: "Something went wrong"
showSnackbar(nekoImages, this@NekoMain, msg, Snackbar.LENGTH_LONG)
val nekoException = NekoException.Deserializer().deserialize(error.response)
val msg = nekoException.message ?: error.message ?: "Something went wrong"
showSnackbar(nekoImages, this@NekoMain, msg, Snackbar.LENGTH_LONG)

if (isLoggedin)
Sentry.getContext().user = UserBuilder().setUsername(user?.username ?: "Unkown user").setId(user?.id ?: "0").build()
Sentry.getContext().recordBreadcrumb(BreadcrumbBuilder().setMessage("Failed getting the logged in user's data").build())
Sentry.getContext().addTag("fuel-http-request", "true")
Sentry.capture(error)
Sentry.clearContext()
}
if (nekoException.message.isNullOrEmpty()) {
if (isLoggedin)
Sentry.getContext().user = UserBuilder().setUsername(user?.username ?: "Unkown user").setId(user?.id ?: "0").build()
Sentry.getContext().recordBreadcrumb(BreadcrumbBuilder().setMessage("Failed getting the logged in user's data").build())
Sentry.getContext().addTag("fuel-http-request", "true")
Sentry.capture(error)
Sentry.clearContext()
}
}
}
Expand Down Expand Up @@ -547,24 +542,20 @@ class NekoMain : AppCompatActivity(), ConnectivityReceiver.ConnectivityReceiverL
when (result) {
is Result.Failure -> {
if (error != null) {
when (error.response.statusCode) {
429 -> {
showSnackbar(nekoImages, this@NekoMain, "Too many requests, please wait a few seconds", Snackbar.LENGTH_LONG)
}
else -> {
val nekoException = NekoException.Deserializer().deserialize(error.errorData)
val msg = nekoException?.message ?: error.message ?: "Something went wrong"
showSnackbar(nekoImages, this@NekoMain, msg, Snackbar.LENGTH_LONG)
if (isLoggedin)
Sentry.getContext().user = UserBuilder().setUsername(user?.username ?: "Unkown user").setId(user?.id ?: "0").build()
Sentry.getContext().recordBreadcrumb(BreadcrumbBuilder().setMessage("Failed searching for images").build())
Sentry.getContext().addExtra("request-body", reqbody)
Sentry.getContext().addExtra("isNew", isNew)
Sentry.getContext().addExtra("page", page)
Sentry.getContext().addTag("fuel-http-request", "true")
Sentry.capture(error)
Sentry.clearContext()
}
val nekoException = NekoException.Deserializer().deserialize(error.response)
val msg = nekoException.message ?: error.message ?: "Something went wrong"
showSnackbar(nekoImages, this@NekoMain, msg, Snackbar.LENGTH_LONG)

if (nekoException.message.isNullOrEmpty()) {
if (isLoggedin)
Sentry.getContext().user = UserBuilder().setUsername(user?.username ?: "Unkown user").setId(user?.id ?: "0").build()
Sentry.getContext().recordBreadcrumb(BreadcrumbBuilder().setMessage("Failed searching for images").build())
Sentry.getContext().addExtra("request-body", reqbody)
Sentry.getContext().addExtra("isNew", isNew)
Sentry.getContext().addExtra("page", page)
Sentry.getContext().addTag("fuel-http-request", "true")
Sentry.capture(error)
Sentry.clearContext()
}
}
}
Expand Down Expand Up @@ -888,22 +879,17 @@ class NekoMain : AppCompatActivity(), ConnectivityReceiver.ConnectivityReceiverL
is Result.Failure -> {
val (_, error) = result
if (error != null) {
when (error.response.statusCode) {
429 -> {
showSnackbar(nekoImages, this, "Too many requests, please wait a few seconds", Snackbar.LENGTH_LONG)
}
else -> {
val nekoException = NekoException.Deserializer().deserialize(error.errorData)
val msg = nekoException?.message ?: error.message ?: "Something went wrong"
showSnackbar(nekoImages, this, msg, Snackbar.LENGTH_LONG)
if (isLoggedin)
Sentry.getContext().user = UserBuilder().setUsername(user?.username ?: "Unkown user").setId(user?.id ?: "0").build()
Sentry.getContext().recordBreadcrumb(BreadcrumbBuilder().setMessage("Failed to register new user").build())
Sentry.getContext().addExtra("request-body", reqbody)
Sentry.getContext().addTag("fuel-http-request", "true")
Sentry.capture(error)
Sentry.clearContext()
}
val nekoException = NekoException.Deserializer().deserialize(error.response)
val msg = nekoException.message ?: error.message ?: "Something went wrong"
showSnackbar(nekoImages, this, msg, Snackbar.LENGTH_LONG)
if (nekoException.message.isNullOrEmpty()) {
if (isLoggedin)
Sentry.getContext().user = UserBuilder().setUsername(user?.username ?: "Unkown user").setId(user?.id ?: "0").build()
Sentry.getContext().recordBreadcrumb(BreadcrumbBuilder().setMessage("Failed to register new user").build())
Sentry.getContext().addExtra("request-body", reqbody)
Sentry.getContext().addTag("fuel-http-request", "true")
Sentry.capture(error)
Sentry.clearContext()
}
}
}
Expand Down Expand Up @@ -940,22 +926,18 @@ class NekoMain : AppCompatActivity(), ConnectivityReceiver.ConnectivityReceiverL
is Result.Failure -> {
if (error != null) {
updateUI(false)
when (error.response.statusCode) {
429 -> {
showSnackbar(nekoImages, this@NekoMain, "Too many requests, please wait a few seconds", Snackbar.LENGTH_LONG)
}
else -> {
val nekoException = NekoException.Deserializer().deserialize(error.errorData)
val msg = nekoException?.message ?: error.message ?: "Something went wrong"
showSnackbar(nekoImages, this@NekoMain, msg, Snackbar.LENGTH_LONG)
if (isLoggedin)
Sentry.getContext().user = UserBuilder().setUsername(user?.username ?: "Unkown user").setId(user?.id ?: "0").build()
Sentry.getContext().recordBreadcrumb(BreadcrumbBuilder().setMessage("Failed to auth user").build())
Sentry.getContext().addExtra("request-body", reqbody)
Sentry.getContext().addTag("fuel-http-request", "true")
Sentry.capture(error)
Sentry.clearContext()
}
val nekoException = NekoException.Deserializer().deserialize(error.response)
val msg = nekoException.message ?: error.message ?: "Something went wrong"
showSnackbar(nekoImages, this@NekoMain, msg, Snackbar.LENGTH_LONG)

if (nekoException.message.isNullOrEmpty()) {
if (isLoggedin)
Sentry.getContext().user = UserBuilder().setUsername(user?.username ?: "Unkown user").setId(user?.id ?: "0").build()
Sentry.getContext().recordBreadcrumb(BreadcrumbBuilder().setMessage("Failed to auth user").build())
Sentry.getContext().addExtra("request-body", reqbody)
Sentry.getContext().addTag("fuel-http-request", "true")
Sentry.capture(error)
Sentry.clearContext()
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ buildscript {
}

dependencies {
classpath 'com.android.tools.build:gradle:3.2.0'
classpath 'com.android.tools.build:gradle:3.2.1'
//noinspection DifferentKotlinGradleVersion
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_gradle_version" // Anything after 1.2.61 gives me a "Failed to notify project evaluation listener."
classpath "org.jetbrains.kotlinx:kotlinx-gradle-serialization-plugin:$serialization_version"
Expand Down

0 comments on commit acdbebb

Please sign in to comment.