From e03c9c686d7f6f3c304a0531f491cb7062ea5446 Mon Sep 17 00:00:00 2001 From: Franze Jr Date: Tue, 3 Nov 2015 20:14:42 -0300 Subject: [PATCH 1/6] [#33] - Add networkChangeReceiver --- Habitica/AndroidManifest.xml | 6 +++ Habitica/res/values/strings.xml | 1 + .../receivers/NetworkChangeReceiver.java | 38 +++++++++++++++++++ 3 files changed, 45 insertions(+) create mode 100644 Habitica/src/com/habitrpg/android/habitica/receivers/NetworkChangeReceiver.java diff --git a/Habitica/AndroidManifest.xml b/Habitica/AndroidManifest.xml index 9cca6f10b..ef64b9abc 100644 --- a/Habitica/AndroidManifest.xml +++ b/Habitica/AndroidManifest.xml @@ -62,6 +62,12 @@ android:resource="@xml/widget_info" /> + + + + + + Connection Error You are not connected to the internet. + Your internet connection just got back! Add checklist Edit checklist diff --git a/Habitica/src/com/habitrpg/android/habitica/receivers/NetworkChangeReceiver.java b/Habitica/src/com/habitrpg/android/habitica/receivers/NetworkChangeReceiver.java new file mode 100644 index 000000000..003df1e55 --- /dev/null +++ b/Habitica/src/com/habitrpg/android/habitica/receivers/NetworkChangeReceiver.java @@ -0,0 +1,38 @@ +package com.habitrpg.android.habitica.receivers; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.net.ConnectivityManager; +import android.net.NetworkInfo; +import android.widget.Toast; + +import com.habitrpg.android.habitica.R; + + +/** + * Created by franzejr on 03/11/15. + */ +public class NetworkChangeReceiver extends BroadcastReceiver { + + @Override + public void onReceive(Context context, Intent intent) { + if(hasInternetConnection(context)) + { + Toast.makeText(context, R.string.network_up, Toast.LENGTH_LONG).show(); + }else{ + Toast.makeText(context, R.string.network_error_no_network_body, Toast.LENGTH_LONG).show(); + + } + } + + boolean hasInternetConnection(Context context) { + ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); + NetworkInfo networkInfo = connMgr.getActiveNetworkInfo(); + + if (networkInfo != null && networkInfo.isConnected()) { + return true; + } + return false; + } +} From 0d1072d6b43f07929b3383616561558c749be6c2 Mon Sep 17 00:00:00 2001 From: Franze Jr Date: Tue, 3 Nov 2015 20:21:16 -0300 Subject: [PATCH 2/6] [#33] - Update method for Retrofit --- Habitica/src/com/habitrpg/android/habitica/APIHelper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Habitica/src/com/habitrpg/android/habitica/APIHelper.java b/Habitica/src/com/habitrpg/android/habitica/APIHelper.java index 7239f4eaf..4086c938d 100644 --- a/Habitica/src/com/habitrpg/android/habitica/APIHelper.java +++ b/Habitica/src/com/habitrpg/android/habitica/APIHelper.java @@ -188,7 +188,7 @@ public class APIHelper implements ErrorHandler, Profiler { retrofit.mime.TypedInput body = res.getBody(); } - if (cause.isNetworkError()) { + if (cause.getKind().equals(RetrofitError.Kind.NETWORK)) { final Activity activity = (Activity) this.mContext; activity.runOnUiThread(new Runnable() { public void run() { From 4df6a448dd287a6c22bc76ceeb2cc6382443b977 Mon Sep 17 00:00:00 2001 From: Franze Jr Date: Tue, 3 Nov 2015 20:23:40 -0300 Subject: [PATCH 3/6] [#33] - Remove unused variables from handleError method --- .../src/com/habitrpg/android/habitica/APIHelper.java | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/Habitica/src/com/habitrpg/android/habitica/APIHelper.java b/Habitica/src/com/habitrpg/android/habitica/APIHelper.java index 4086c938d..8fe472d5e 100644 --- a/Habitica/src/com/habitrpg/android/habitica/APIHelper.java +++ b/Habitica/src/com/habitrpg/android/habitica/APIHelper.java @@ -182,12 +182,7 @@ public class APIHelper implements ErrorHandler, Profiler { @Override public Throwable handleError(RetrofitError cause) { - retrofit.client.Response res = cause.getResponse(); - - if (res != null) { - retrofit.mime.TypedInput body = res.getBody(); - } - + //It also handles timeouts if (cause.getKind().equals(RetrofitError.Kind.NETWORK)) { final Activity activity = (Activity) this.mContext; activity.runOnUiThread(new Runnable() { @@ -227,7 +222,7 @@ public class APIHelper implements ErrorHandler, Profiler { private class ATaskGetUser extends AsyncTask { private OnHabitsAPIResult callback; private HostConfig config; - + public ATaskGetUser(OnHabitsAPIResult callback, HostConfig config) { this.callback = callback; this.config=config; From 25c9d69d025178ed397fc2a93f6395da32098443 Mon Sep 17 00:00:00 2001 From: Franze Jr Date: Tue, 3 Nov 2015 22:19:11 -0300 Subject: [PATCH 4/6] [#33] - Add validations and small refactoring for handleError method --- Habitica/res/values/strings.xml | 1 + .../habitrpg/android/habitica/APIHelper.java | 44 ++++++++++++------- .../receivers/NetworkChangeReceiver.java | 8 ++-- 3 files changed, 31 insertions(+), 22 deletions(-) diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml index 25504f08c..d81848682 100644 --- a/Habitica/res/values/strings.xml +++ b/Habitica/res/values/strings.xml @@ -113,6 +113,7 @@ Connection Error You are not connected to the internet. + Some problem in our API. Your internet connection just got back! Add checklist diff --git a/Habitica/src/com/habitrpg/android/habitica/APIHelper.java b/Habitica/src/com/habitrpg/android/habitica/APIHelper.java index 8fe472d5e..505140631 100644 --- a/Habitica/src/com/habitrpg/android/habitica/APIHelper.java +++ b/Habitica/src/com/habitrpg/android/habitica/APIHelper.java @@ -181,29 +181,39 @@ public class APIHelper implements ErrorHandler, Profiler { @Override public Throwable handleError(RetrofitError cause) { + final Activity activity = (Activity) this.mContext; - //It also handles timeouts if (cause.getKind().equals(RetrofitError.Kind.NETWORK)) { - 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(); - } - }); - - } + //It also handles timeouts + showConnectionProblemDialog(activity, R.string.network_error_no_network_body); + }else{ + /* + * CONVERSION An exception was thrown while (de)serializing a body. + * HTTP A non-200 HTTP status code was received from the server e.g. 502, 503, etc... + * UNEXPECTED An internal error occurred while attempting to execute a request. + */ + showConnectionProblemDialog(activity,R.string.internal_error_api); + } return cause; } + private void showConnectionProblemDialog(final Activity activity, final int resourceMessageString){ + activity.runOnUiThread(new Runnable() { + public void run() { + new AlertDialog.Builder(activity) + .setTitle(R.string.network_error_title) + .setMessage(resourceMessageString) + .setNeutralButton(android.R.string.ok, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + } + }) + .setIcon(android.R.drawable.ic_dialog_alert) + .show(); + } + }); + } + @Override public Object beforeCall() { return null; diff --git a/Habitica/src/com/habitrpg/android/habitica/receivers/NetworkChangeReceiver.java b/Habitica/src/com/habitrpg/android/habitica/receivers/NetworkChangeReceiver.java index 003df1e55..79109d2ee 100644 --- a/Habitica/src/com/habitrpg/android/habitica/receivers/NetworkChangeReceiver.java +++ b/Habitica/src/com/habitrpg/android/habitica/receivers/NetworkChangeReceiver.java @@ -16,13 +16,11 @@ import com.habitrpg.android.habitica.R; public class NetworkChangeReceiver extends BroadcastReceiver { @Override - public void onReceive(Context context, Intent intent) { - if(hasInternetConnection(context)) - { + public void onReceive(final Context context, Intent intent) { + if (hasInternetConnection(context)) { Toast.makeText(context, R.string.network_up, Toast.LENGTH_LONG).show(); - }else{ + } else { Toast.makeText(context, R.string.network_error_no_network_body, Toast.LENGTH_LONG).show(); - } } From 9df47454886424807cc26fe4a7194495f97c8961 Mon Sep 17 00:00:00 2001 From: Franze Jr Date: Thu, 5 Nov 2015 17:47:05 -0300 Subject: [PATCH 5/6] [#33] - Change error message from server for a more friendly way --- Habitica/res/values/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml index d81848682..839a687c9 100644 --- a/Habitica/res/values/strings.xml +++ b/Habitica/res/values/strings.xml @@ -113,7 +113,7 @@ Connection Error You are not connected to the internet. - Some problem in our API. + There seems to be a problem with the server. Try again later. Your internet connection just got back! Add checklist From 00ae4fe4e088e8c37a277192918a078926969b37 Mon Sep 17 00:00:00 2001 From: Franze Jr Date: Fri, 6 Nov 2015 18:04:48 -0300 Subject: [PATCH 6/6] [#33] - Add new icon for warning --- Habitica/res/drawable-hdpi/ic_warning_black.png | Bin 0 -> 315 bytes Habitica/res/drawable-mdpi/ic_warning_black.png | Bin 0 -> 235 bytes Habitica/res/drawable-xhdpi/ic_warning_black.png | Bin 0 -> 350 bytes Habitica/res/drawable-xxhdpi/ic_warning_black.png | Bin 0 -> 461 bytes .../res/drawable-xxxhdpi/ic_warning_black.png | Bin 0 -> 566 bytes .../com/habitrpg/android/habitica/APIHelper.java | 2 +- 6 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 Habitica/res/drawable-hdpi/ic_warning_black.png create mode 100644 Habitica/res/drawable-mdpi/ic_warning_black.png create mode 100644 Habitica/res/drawable-xhdpi/ic_warning_black.png create mode 100644 Habitica/res/drawable-xxhdpi/ic_warning_black.png create mode 100644 Habitica/res/drawable-xxxhdpi/ic_warning_black.png diff --git a/Habitica/res/drawable-hdpi/ic_warning_black.png b/Habitica/res/drawable-hdpi/ic_warning_black.png new file mode 100644 index 0000000000000000000000000000000000000000..4c3d9a497b648d8ae5ba166b73de93170884e187 GIT binary patch literal 315 zcmV-B0mS}^P)dCojSozkWrIB3-pmupLv4ZA?$7mu#PeTDAO9AsIJeR*=_7ER&4v$0mwwgNzz)D6&^-j2xqcju@JwhZ5>B3jjALv1>g1`vHDC*+NMlq{ILK N002ovPDHLkV1ijleZ~L) literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-mdpi/ic_warning_black.png b/Habitica/res/drawable-mdpi/ic_warning_black.png new file mode 100644 index 0000000000000000000000000000000000000000..e768d1125c906ec449c7eebc97cb422fe089cafe GIT binary patch literal 235 zcmVnS-C|8G7?-sM?u`QUK1l8P=Z lZJSjMGh4ueRCez_`UYY3#6hF@J4OHi002ovPDHLkV1lHBUG4w? literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xhdpi/ic_warning_black.png b/Habitica/res/drawable-xhdpi/ic_warning_black.png new file mode 100644 index 0000000000000000000000000000000000000000..2ea616491ae8d597bd3adb659367adc0ea8cd79b GIT binary patch literal 350 zcmV-k0iphhP)?Ew$5%ih_h(EnXqM2><^7 zUSYyH1Ki>khkwV3_O}_S^U4c#vN1r2KAAXYjSy?j$ifr_CuHE39SZKaAvr7b!zGEi zN5AZlkOuG3z#9#c@qmaOl88$-D3%QuB;gVL;fw^_p#!$4NR4N7z$a={qKA&yr2AvNOYog5q*akK|QNS!$P17haI(H{^kKaP=pNP8%u wT`!KlQAo!qv75M|UKpC8qgcB#e00g5EB(D(gW&i*H07*qoM6N<$f)wYAAOHXW literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xxhdpi/ic_warning_black.png b/Habitica/res/drawable-xxhdpi/ic_warning_black.png new file mode 100644 index 0000000000000000000000000000000000000000..ed36f700acb607d032af989d839cd9df7e58ce14 GIT binary patch literal 461 zcmV;;0W$uHP)J;Un)T!VX>Ow#=+5;Hbo`DxiIAXDH~@KdUjV zV|$N?duN~36H}Dx9@_(o1SRhMvll&;;v3t*tfttur8JGT9O*N104jJ6~XEo}m#H`xKc7}{j{j+Kw z+sLe@n8r4pRaa1GY!ApDB=+%H^#+M?d{$jSfw5hnVnJdan^nKrvE87;uA{T+cNmye zvzf8IMU|Z7XVq_ZY*(nFOaH8f$JQ{bhOuol8jZ#ud&K5_uT_V=00000NkvXXu0mjf D@rTO=C;3PQq;6f;Oe zSz@Q7h0UbP&X*rfyssiA_w(h#mmf~#i}CjVsap8qgg?J;zk8jst=vz`jAMtC_iIVX z{VY{_bn&QDaKF1ax38^Std7aoijs{Nt~@3rSZiZ)6sJm_c6Yg1f*((;x%4OyWaq(( zj87G7D*yiaSn&(Q6v>ORmwPSC?