Added custom server URL checks

Added custom server URL checks to avoid app crashes.
This commit is contained in:
luca0N! 2021-03-10 00:15:05 -03:00
parent ec9c2ce07c
commit 8faf300bd0
Signed by: luca0N
GPG Key ID: 2E7B4655CF16D7D6
3 changed files with 35 additions and 8 deletions

View File

@ -48,6 +48,7 @@ import butterknife.BindView;
import butterknife.ButterKnife;
import com.luca0n.joguitos.pluck.R;
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.TriviaQuestionFragment;
import com.luca0n.joguitos.pluck.interfaces.IDownloadTriviaQuestionReceiver;
@ -142,8 +143,9 @@ public class TriviaGameActivity extends BaseActivity
} else {
try {
this.game = new TriviaGame(ApiUtil.jsonToQuestionArray(json));
} catch (NoTriviaResultsException e) {
onNoTriviaResults();
} catch (Exception e) {
//onNoTriviaResults();
onException(e);
return;
}
}
@ -190,8 +192,21 @@ public class TriviaGameActivity extends BaseActivity
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);
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();

View File

@ -31,6 +31,7 @@ import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.JsonSyntaxException;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
@ -46,6 +47,7 @@ import java.util.ArrayList;
import com.luca0n.joguitos.pluck.R;
import com.luca0n.joguitos.pluck.PluckApplication;
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.TriviaQuestion;
import com.luca0n.joguitos.pluck.trivia.TriviaQuestionBoolean;
@ -102,8 +104,15 @@ public class ApiUtil {
return GET(query.toString());
}
public static ArrayList<TriviaQuestion> jsonToQuestionArray(String json) throws NoTriviaResultsException {
JsonObject jsonObject = new JsonParser().parse(json).getAsJsonObject();
public static ArrayList<TriviaQuestion> jsonToQuestionArray(String json)
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) {
throw new NoTriviaResultsException();

View File

@ -83,8 +83,11 @@ Contact us at <joguitos+pluck@luca0n.com>.
<string name="ui_return_to_menu">Return To Menu</string>
<!-- 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_no_trivia_results"><b>No trivia results!</b>\nWas not able to find trivia questions that satisfied all options.</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>\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>
<!-- Setting Strings-->