diff --git a/mastodon/src/main/java/org/joinmastodon/android/api/MastodonErrorResponse.java b/mastodon/src/main/java/org/joinmastodon/android/api/MastodonErrorResponse.java index 9dfbfdc8..70b21d6d 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/api/MastodonErrorResponse.java +++ b/mastodon/src/main/java/org/joinmastodon/android/api/MastodonErrorResponse.java @@ -5,31 +5,50 @@ import android.view.View; import android.widget.TextView; import android.widget.Toast; +import com.google.gson.JsonIOException; +import com.google.gson.JsonSyntaxException; + import org.joinmastodon.android.R; +import java.net.SocketTimeoutException; +import java.net.UnknownHostException; + import me.grishka.appkit.api.ErrorResponse; public class MastodonErrorResponse extends ErrorResponse{ public final String error; public final int httpStatus; public final Throwable underlyingException; + public final int messageResource; public MastodonErrorResponse(String error, int httpStatus, Throwable exception){ this.error=error; this.httpStatus=httpStatus; this.underlyingException=exception; + + if(exception instanceof UnknownHostException){ + this.messageResource=R.string.could_not_reach_server; + }else if(exception instanceof SocketTimeoutException){ + this.messageResource=R.string.connection_timed_out; + }else if(exception instanceof JsonSyntaxException || exception instanceof JsonIOException || httpStatus>=500){ + this.messageResource=R.string.server_error; + }else if(httpStatus == 404){ + this.messageResource=R.string.not_found; + }else{ + this.messageResource=R.string.unknown_error; + } } @Override public void bindErrorView(View view){ TextView text=view.findViewById(R.id.error_text); - text.setText(error); + text.setText(view.getContext().getString(messageResource, error)); } @Override public void showToast(Context context){ if(context==null) return; - Toast.makeText(context, error, Toast.LENGTH_SHORT).show(); + Toast.makeText(context, context.getString(messageResource, error), Toast.LENGTH_SHORT).show(); } } diff --git a/mastodon/src/main/res/values/strings.xml b/mastodon/src/main/res/values/strings.xml index 069e370f..b36247e1 100644 --- a/mastodon/src/main/res/values/strings.xml +++ b/mastodon/src/main/res/values/strings.xml @@ -755,4 +755,9 @@ View favorites Undo boost Undo favorite + Could not reach the server. Make sure you\'re connected to the internet and try again. + Connection timed out. Make sure you\'re connected to the internet and try again. + There may be a problem with your instance or your internet. Make sure you have access to the internet and try again. + Not found. It probably doesn\'t exist anymore. + Unknown error: %s \ No newline at end of file