aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/connector/gc/GCLogin.java
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/cgeo/geocaching/connector/gc/GCLogin.java')
-rw-r--r--main/src/cgeo/geocaching/connector/gc/GCLogin.java31
1 files changed, 21 insertions, 10 deletions
diff --git a/main/src/cgeo/geocaching/connector/gc/GCLogin.java b/main/src/cgeo/geocaching/connector/gc/GCLogin.java
index 514cb2c..16de511 100644
--- a/main/src/cgeo/geocaching/connector/gc/GCLogin.java
+++ b/main/src/cgeo/geocaching/connector/gc/GCLogin.java
@@ -32,6 +32,7 @@ import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Locale;
+import java.util.regex.Matcher;
public class GCLogin extends AbstractLogin {
@@ -87,6 +88,7 @@ public class GCLogin extends AbstractLogin {
return login(false);
}
setHomeLocation();
+ refreshMemberStatus();
detectGcCustomDate();
return StatusCode.NO_ERROR; // logged in
}
@@ -124,6 +126,8 @@ public class GCLogin extends AbstractLogin {
}
Log.i("Successfully logged in Geocaching.com as " + username + " (" + Settings.getGCMemberStatus() + ')');
Settings.setCookieStore(Cookies.dumpCookieStore());
+ setHomeLocation();
+ refreshMemberStatus();
detectGcCustomDate();
return StatusCode.NO_ERROR; // logged in
}
@@ -192,10 +196,6 @@ public class GCLogin extends AbstractLogin {
Log.e("getLoginStatus: bad cache count", e);
}
setActualCachesFound(cachesCount);
- Settings.setGCMemberStatus(TextUtils.getMatch(page, GCConstants.PATTERN_MEMBER_STATUS, true, null));
- if (page.contains(GCConstants.MEMBER_STATUS_RENEW)) {
- Settings.setGCMemberStatus(GCConstants.MEMBER_STATUS_PREMIUM);
- }
return true;
}
@@ -242,16 +242,11 @@ public class GCLogin extends AbstractLogin {
return false;
}
- public Observable<Drawable> downloadAvatarAndGetMemberStatus() {
+ public Observable<Drawable> downloadAvatar() {
try {
final String responseData = StringUtils.defaultString(Network.getResponseData(Network.getRequest("http://www.geocaching.com/my/")));
final String profile = TextUtils.replaceWhitespace(responseData);
- Settings.setGCMemberStatus(TextUtils.getMatch(profile, GCConstants.PATTERN_MEMBER_STATUS, true, null));
- if (profile.contains(GCConstants.MEMBER_STATUS_RENEW)) {
- Settings.setGCMemberStatus(GCConstants.MEMBER_STATUS_PREMIUM);
- }
-
setActualCachesFound(Integer.parseInt(removeDotAndComma(TextUtils.getMatch(profile, GCConstants.PATTERN_CACHES_FOUND, true, "-1"))));
final String avatarURL = TextUtils.getMatch(profile, GCConstants.PATTERN_AVATAR_IMAGE_PROFILE_PAGE, false, null);
@@ -287,6 +282,22 @@ public class GCLogin extends AbstractLogin {
});
}
+ private static void refreshMemberStatus() {
+ RxUtils.networkScheduler.createWorker().schedule(new Action0() {
+ @Override
+ public void call() {
+ final String page = StringUtils.defaultString(Network.getResponseData(Network.getRequest("https://www.geocaching.com/account/settings/membership")));
+ final Matcher match = GCConstants.PATTERN_MEMBERSHIP.matcher(page);
+ if (match.find()) {
+ Log.d("Setting member status to " + match.group(1));
+ Settings.setGCMemberStatus(match.group(1));
+ } else {
+ Log.w("Cannot determine member status");
+ }
+ }
+ });
+ }
+
/**
* Detect user date settings on geocaching.com
*/