From 5910c3f53209f3e8a5c08a6056a1a980198c4eba Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Sat, 27 Jun 2015 17:29:47 +0200 Subject: [PATCH 1/2] Don't crash when no internet connection is available --- Habitica/res/values/strings.xml | 8 +++--- .../habitrpg/android/habitica/APIHelper.java | 26 ++++++++++++++++--- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml index 0221a8180..4a5141cc2 100644 --- a/Habitica/res/values/strings.xml +++ b/Habitica/res/values/strings.xml @@ -114,11 +114,9 @@ See the changelog MP - + + Connection Error + You are not connected to the internet. \ No newline at end of file diff --git a/Habitica/src/com/habitrpg/android/habitica/APIHelper.java b/Habitica/src/com/habitrpg/android/habitica/APIHelper.java index 32a9d962f..24ae54ee5 100644 --- a/Habitica/src/com/habitrpg/android/habitica/APIHelper.java +++ b/Habitica/src/com/habitrpg/android/habitica/APIHelper.java @@ -1,6 +1,9 @@ package com.habitrpg.android.habitica; +import android.app.Activity; import android.content.Context; +import android.content.DialogInterface; +import android.support.v7.app.AlertDialog; import android.util.Log; import android.view.View; @@ -204,15 +207,30 @@ public class APIHelper implements ErrorHandler, Profiler { @Override public Throwable handleError(RetrofitError cause) { - //String json = new String(((TypedByteArray)cause.getResponse().getBody()).getBytes()); - //Log.v("failure", json.toString()); retrofit.client.Response res = cause.getResponse(); - retrofit.mime.TypedInput body = res.getBody(); + if (res != null) { + retrofit.mime.TypedInput body = res.getBody(); + } + if (cause.isNetworkError()) { + final Activity activity = (Activity) this.mContext; + activity.runOnUiThread(new Runnable() { + public void run() { + new AlertDialog.Builder(activity) + .setTitle(R.string.network_error_title) + .setMessage(R.string.network_error_no_network_body) + .setNeutralButton(android.R.string.ok, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + } + }) + .setIcon(android.R.drawable.ic_dialog_alert) + .show(); + } + }); - //JsonSyntaxException d = (JsonSyntaxException)cause; + } return cause; } From 77380b46c1ab84ef0a402e4cb3e439697ab14176 Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Sat, 27 Jun 2015 19:49:58 +0200 Subject: [PATCH 2/2] Fix handling for when tags object is an array --- .../habitrpgwrapper/lib/api/TypeAdapter/TagsAdapter.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Habitica/src/com/magicmicky/habitrpgwrapper/lib/api/TypeAdapter/TagsAdapter.java b/Habitica/src/com/magicmicky/habitrpgwrapper/lib/api/TypeAdapter/TagsAdapter.java index 326ca02ae..fa9e95e13 100644 --- a/Habitica/src/com/magicmicky/habitrpgwrapper/lib/api/TypeAdapter/TagsAdapter.java +++ b/Habitica/src/com/magicmicky/habitrpgwrapper/lib/api/TypeAdapter/TagsAdapter.java @@ -50,6 +50,15 @@ public class TagsAdapter extends TypeAdapter{ case END_OBJECT: in.endObject(); isClosed=true; + break; + case BEGIN_ARRAY: + in.beginArray(); + break; + + case END_ARRAY: + in.endArray(); + isClosed = true; + break; default: } } while(!isClosed);