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(); - } }