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