Merge pull request #833 from NorbiPeti/master
Display more user-friendly error messages
This commit is contained in:
commit
29ab502d2e
@ -5,31 +5,62 @@ import android.view.View;
|
|||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import com.google.gson.JsonIOException;
|
||||||
|
import com.google.gson.JsonSyntaxException;
|
||||||
|
|
||||||
import org.joinmastodon.android.R;
|
import org.joinmastodon.android.R;
|
||||||
|
|
||||||
|
import java.net.SocketTimeoutException;
|
||||||
|
import java.net.UnknownHostException;
|
||||||
|
|
||||||
import me.grishka.appkit.api.ErrorResponse;
|
import me.grishka.appkit.api.ErrorResponse;
|
||||||
|
|
||||||
public class MastodonErrorResponse extends ErrorResponse{
|
public class MastodonErrorResponse extends ErrorResponse{
|
||||||
public final String error;
|
public final String error;
|
||||||
public final int httpStatus;
|
public final int httpStatus;
|
||||||
public final Throwable underlyingException;
|
public final Throwable underlyingException;
|
||||||
|
public final int messageResource;
|
||||||
|
|
||||||
public MastodonErrorResponse(String error, int httpStatus, Throwable exception){
|
public MastodonErrorResponse(String error, int httpStatus, Throwable exception){
|
||||||
this.error=error;
|
this.error=error;
|
||||||
this.httpStatus=httpStatus;
|
this.httpStatus=httpStatus;
|
||||||
this.underlyingException=exception;
|
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=0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void bindErrorView(View view){
|
public void bindErrorView(View view){
|
||||||
TextView text=view.findViewById(R.id.error_text);
|
TextView text=view.findViewById(R.id.error_text);
|
||||||
text.setText(error);
|
String message;
|
||||||
|
if(messageResource>0){
|
||||||
|
message=view.getContext().getString(messageResource, error);
|
||||||
|
}else{
|
||||||
|
message=error;
|
||||||
|
}
|
||||||
|
text.setText(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void showToast(Context context){
|
public void showToast(Context context){
|
||||||
if(context==null)
|
if(context==null)
|
||||||
return;
|
return;
|
||||||
Toast.makeText(context, error, Toast.LENGTH_SHORT).show();
|
String message;
|
||||||
|
if(messageResource>0){
|
||||||
|
message=context.getString(messageResource, error);
|
||||||
|
}else{
|
||||||
|
message=error;
|
||||||
|
}
|
||||||
|
Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -755,4 +755,8 @@
|
|||||||
<string name="view_favorites">View favorites</string>
|
<string name="view_favorites">View favorites</string>
|
||||||
<string name="undo_reblog">Undo boost</string>
|
<string name="undo_reblog">Undo boost</string>
|
||||||
<string name="undo_favorite">Undo favorite</string>
|
<string name="undo_favorite">Undo favorite</string>
|
||||||
|
<string name="could_not_reach_server">Couldn’t reach the server. Check your connection and try again?</string>
|
||||||
|
<string name="connection_timed_out">The request timed out. Check your connection and try again?</string>
|
||||||
|
<string name="server_error">Something went wrong talking with your server. It’s probably not your fault. Try again?</string>
|
||||||
|
<string name="not_found">It could’ve been deleted, or maybe it never existed at all.</string>
|
||||||
</resources>
|
</resources>
|
Loading…
x
Reference in New Issue
Block a user