aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--main/src/cgeo/geocaching/connector/gc/GCLogin.java21
1 files changed, 16 insertions, 5 deletions
diff --git a/main/src/cgeo/geocaching/connector/gc/GCLogin.java b/main/src/cgeo/geocaching/connector/gc/GCLogin.java
index 5e082b3..0c88cb5 100644
--- a/main/src/cgeo/geocaching/connector/gc/GCLogin.java
+++ b/main/src/cgeo/geocaching/connector/gc/GCLogin.java
@@ -98,7 +98,9 @@ public class GCLogin extends AbstractLogin {
if (getLoginStatus(loginData)) {
Log.i("Already logged in Geocaching.com as " + username + " (" + Settings.getMemberStatus() + ')');
- switchToEnglish(loginData);
+ if (switchToEnglish(loginData) && retry) {
+ return login(false);
+ };
return StatusCode.NO_ERROR; // logged in
}
@@ -132,7 +134,9 @@ public class GCLogin extends AbstractLogin {
if (getLoginStatus(loginData)) {
Log.i("Successfully logged in Geocaching.com as " + username + " (" + Settings.getMemberStatus() + ')');
- switchToEnglish(loginData);
+ if (switchToEnglish(loginData) && retry) {
+ return login(false);
+ }
Settings.setCookieStore(Cookies.dumpCookieStore());
return StatusCode.NO_ERROR; // logged in
@@ -220,7 +224,13 @@ public class GCLogin extends AbstractLogin {
return false;
}
- private void switchToEnglish(String previousPage) {
+ /**
+ * Ensure that the web site is in English.
+ *
+ * @param previousPage the content of the last loaded page
+ * @return <code>true</code> if a switch was necessary and succesfully performed (non-English -> English)
+ */
+ private boolean switchToEnglish(String previousPage) {
if (previousPage != null && previousPage.contains(ENGLISH)) {
Log.i("Geocaching.com language already set to English");
// get find count
@@ -238,10 +248,11 @@ public class GCLogin extends AbstractLogin {
final HttpResponse response = Network.postRequest(LANGUAGE_CHANGE_URI, params, new Parameters("Referer", LANGUAGE_CHANGE_URI));
if (Network.isSuccess(response)) {
Log.i("changed language on geocaching.com to English");
- } else {
- Log.e("Failed to set geocaching.com language to English");
+ return true;
}
+ Log.e("Failed to set geocaching.com language to English");
}
+ return false;
}
public BitmapDrawable downloadAvatarAndGetMemberStatus() {