Added custom server URL checks
Added custom server URL checks to avoid app crashes.
This commit is contained in:
parent
ec9c2ce07c
commit
8faf300bd0
|
@ -48,6 +48,7 @@ import butterknife.BindView;
|
||||||
import butterknife.ButterKnife;
|
import butterknife.ButterKnife;
|
||||||
import com.luca0n.joguitos.pluck.R;
|
import com.luca0n.joguitos.pluck.R;
|
||||||
import com.luca0n.joguitos.pluck.exceptions.NoTriviaResultsException;
|
import com.luca0n.joguitos.pluck.exceptions.NoTriviaResultsException;
|
||||||
|
import com.luca0n.joguitos.pluck.exceptions.InvalidServerResponseException;
|
||||||
import com.luca0n.joguitos.pluck.fragments.TriviaGameErrorFragment;
|
import com.luca0n.joguitos.pluck.fragments.TriviaGameErrorFragment;
|
||||||
import com.luca0n.joguitos.pluck.fragments.TriviaQuestionFragment;
|
import com.luca0n.joguitos.pluck.fragments.TriviaQuestionFragment;
|
||||||
import com.luca0n.joguitos.pluck.interfaces.IDownloadTriviaQuestionReceiver;
|
import com.luca0n.joguitos.pluck.interfaces.IDownloadTriviaQuestionReceiver;
|
||||||
|
@ -142,8 +143,9 @@ public class TriviaGameActivity extends BaseActivity
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
this.game = new TriviaGame(ApiUtil.jsonToQuestionArray(json));
|
this.game = new TriviaGame(ApiUtil.jsonToQuestionArray(json));
|
||||||
} catch (NoTriviaResultsException e) {
|
} catch (Exception e) {
|
||||||
onNoTriviaResults();
|
//onNoTriviaResults();
|
||||||
|
onException(e);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -190,8 +192,21 @@ public class TriviaGameActivity extends BaseActivity
|
||||||
ft.commit();
|
ft.commit();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onNoTriviaResults() {
|
/**
|
||||||
String msg = getResources().getString(R.string.error_no_trivia_results);
|
* Handles caught exceptions and gives feedback to alert errors to the player.
|
||||||
|
* @param e The caught exception.
|
||||||
|
*/
|
||||||
|
private void onException(Exception e) {
|
||||||
|
// Hide the progress bar.
|
||||||
|
progressBar.setVisibility(View.GONE);
|
||||||
|
String msg;
|
||||||
|
if (e instanceof NoTriviaResultsException)
|
||||||
|
msg = getResources().getString(R.string.error_no_trivia_results);
|
||||||
|
else if (e instanceof InvalidServerResponseException)
|
||||||
|
msg = getResources().getString(R.string.error_server_response_invalid);
|
||||||
|
else
|
||||||
|
msg = getResources().getString(R.string.error_unknown);
|
||||||
|
|
||||||
Fragment errorFragment = TriviaGameErrorFragment.newInstance(msg);
|
Fragment errorFragment = TriviaGameErrorFragment.newInstance(msg);
|
||||||
|
|
||||||
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
|
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
|
||||||
|
|
|
@ -31,6 +31,7 @@ import com.google.gson.JsonArray;
|
||||||
import com.google.gson.JsonElement;
|
import com.google.gson.JsonElement;
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
import com.google.gson.JsonParser;
|
import com.google.gson.JsonParser;
|
||||||
|
import com.google.gson.JsonSyntaxException;
|
||||||
|
|
||||||
import java.io.BufferedInputStream;
|
import java.io.BufferedInputStream;
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
|
@ -46,6 +47,7 @@ import java.util.ArrayList;
|
||||||
import com.luca0n.joguitos.pluck.R;
|
import com.luca0n.joguitos.pluck.R;
|
||||||
import com.luca0n.joguitos.pluck.PluckApplication;
|
import com.luca0n.joguitos.pluck.PluckApplication;
|
||||||
import com.luca0n.joguitos.pluck.exceptions.NoTriviaResultsException;
|
import com.luca0n.joguitos.pluck.exceptions.NoTriviaResultsException;
|
||||||
|
import com.luca0n.joguitos.pluck.exceptions.InvalidServerResponseException;
|
||||||
import com.luca0n.joguitos.pluck.trivia.TriviaQuery;
|
import com.luca0n.joguitos.pluck.trivia.TriviaQuery;
|
||||||
import com.luca0n.joguitos.pluck.trivia.TriviaQuestion;
|
import com.luca0n.joguitos.pluck.trivia.TriviaQuestion;
|
||||||
import com.luca0n.joguitos.pluck.trivia.TriviaQuestionBoolean;
|
import com.luca0n.joguitos.pluck.trivia.TriviaQuestionBoolean;
|
||||||
|
@ -102,8 +104,15 @@ public class ApiUtil {
|
||||||
return GET(query.toString());
|
return GET(query.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ArrayList<TriviaQuestion> jsonToQuestionArray(String json) throws NoTriviaResultsException {
|
public static ArrayList<TriviaQuestion> jsonToQuestionArray(String json)
|
||||||
JsonObject jsonObject = new JsonParser().parse(json).getAsJsonObject();
|
throws NoTriviaResultsException, InvalidServerResponseException {
|
||||||
|
JsonObject jsonObject;
|
||||||
|
try{
|
||||||
|
jsonObject = new JsonParser().parse(json).getAsJsonObject();
|
||||||
|
} catch (JsonSyntaxException e){
|
||||||
|
// Unknown server response.
|
||||||
|
throw new InvalidServerResponseException();
|
||||||
|
}
|
||||||
|
|
||||||
if (jsonObject.get("response_code").getAsInt() == 1) {
|
if (jsonObject.get("response_code").getAsInt() == 1) {
|
||||||
throw new NoTriviaResultsException();
|
throw new NoTriviaResultsException();
|
||||||
|
|
|
@ -83,8 +83,11 @@ Contact us at <joguitos+pluck@luca0n.com>.
|
||||||
<string name="ui_return_to_menu">Return To Menu</string>
|
<string name="ui_return_to_menu">Return To Menu</string>
|
||||||
|
|
||||||
<!-- Error Strings -->
|
<!-- Error Strings -->
|
||||||
<string name="error_network"><b>Network error!</b>\nCould not connect to a network.\n\nIf Tor is enabled in the game settings, check if Orbot is running and then try again.</string>
|
<string name="error_network"><b>Network error!</b>\n\nCould not connect to a network. Check if your custom server URL is correct. If Tor is enabled in the game settings, check if Orbot is running and then try again.</string>
|
||||||
<string name="error_no_trivia_results"><b>No trivia results!</b>\nWas not able to find trivia questions that satisfied all options.</string>
|
<string name="error_no_trivia_results"><b>No trivia results!</b>\n\nWas not able to find trivia questions that satisfied all options.</string>
|
||||||
|
<string name="error_server_response_invalid"><b>Server response error!</b>\n\nCould not parse the server response. The server response may be in a unsupported version. If you are using a custom server, make sure the server URL points to a valid address and then try again.</string>
|
||||||
|
<string name="error_unknown"><b>An unknown error occurred!</b></string>
|
||||||
|
|
||||||
<string name="title_activity_settings">Settings</string>
|
<string name="title_activity_settings">Settings</string>
|
||||||
|
|
||||||
<!-- Setting Strings-->
|
<!-- Setting Strings-->
|
||||||
|
|
Loading…
Reference in New Issue