diff options
author | Samuel Tardieu <sam@rfc1149.net> | 2014-02-20 11:26:50 +0100 |
---|---|---|
committer | Samuel Tardieu <sam@rfc1149.net> | 2014-02-22 12:46:59 +0100 |
commit | ebebe91b77c5473aa58f72f9f45cb49af6c2dcaf (patch) | |
tree | 768cf54720c66c4b60c1ad6538971866affe3854 | |
parent | 638b0546668884d2e0b63e95123f766cc4e96d8a (diff) | |
download | cgeo-ebebe91b77c5473aa58f72f9f45cb49af6c2dcaf.zip cgeo-ebebe91b77c5473aa58f72f9f45cb49af6c2dcaf.tar.gz cgeo-ebebe91b77c5473aa58f72f9f45cb49af6c2dcaf.tar.bz2 |
refactoring: properly type login result
3 files changed, 19 insertions, 21 deletions
diff --git a/main/src/cgeo/geocaching/settings/AbstractCheckCredentialsPreference.java b/main/src/cgeo/geocaching/settings/AbstractCheckCredentialsPreference.java index bcc6942..1efbc96 100644 --- a/main/src/cgeo/geocaching/settings/AbstractCheckCredentialsPreference.java +++ b/main/src/cgeo/geocaching/settings/AbstractCheckCredentialsPreference.java @@ -38,7 +38,7 @@ public abstract class AbstractCheckCredentialsPreference extends AbstractClickab protected abstract ImmutablePair<String, String> getCredentials(); - protected abstract Object login(); + protected abstract ImmutablePair<StatusCode, Drawable> login(); private class LoginCheckClickListener implements OnPreferenceClickListener { final private SettingsActivity activity; @@ -65,22 +65,22 @@ public abstract class AbstractCheckCredentialsPreference extends AbstractClickab loginDialog.setCancelable(false); Cookies.clearCookies(); - AndroidObservable.fromActivity(activity, Observable.defer(new Func0<Observable<?>>() { + AndroidObservable.fromActivity(activity, Observable.defer(new Func0<Observable<ImmutablePair<StatusCode, Drawable>>>() { @Override - public Observable<?> call() { + public Observable<ImmutablePair<StatusCode, Drawable>> call() { return Observable.from(login()); } - }).subscribeOn(Schedulers.io())).subscribe(new Action1<Object>() { + }).subscribeOn(Schedulers.io())).subscribe(new Action1<ImmutablePair<StatusCode, Drawable>>() { @Override - public void call(final Object obj) { + public void call(final ImmutablePair<StatusCode, Drawable> loginInfo) { loginDialog.dismiss(); - if (obj == null || obj instanceof Drawable) { - Dialogs.message(activity, R.string.init_login_popup, R.string.init_login_popup_ok, (Drawable) obj); + if (loginInfo.getLeft() == StatusCode.NO_ERROR) { + Dialogs.message(activity, R.string.init_login_popup, R.string.init_login_popup_ok, loginInfo.getRight()); } else { Dialogs.message(activity, R.string.init_login_popup, res.getString(R.string.init_login_popup_failed_reason) + " " - + ((StatusCode) obj).getErrorString(res) + + loginInfo.getLeft().getErrorString(res) + "."); } activity.initBasicMemberPreferences(); diff --git a/main/src/cgeo/geocaching/settings/CheckECCredentialsPreference.java b/main/src/cgeo/geocaching/settings/CheckECCredentialsPreference.java index 661e111..c1cf740 100644 --- a/main/src/cgeo/geocaching/settings/CheckECCredentialsPreference.java +++ b/main/src/cgeo/geocaching/settings/CheckECCredentialsPreference.java @@ -7,6 +7,7 @@ import cgeo.geocaching.enumerations.StatusCode; import org.apache.commons.lang3.tuple.ImmutablePair; import android.content.Context; +import android.graphics.drawable.Drawable; import android.util.AttributeSet; public class CheckECCredentialsPreference extends AbstractCheckCredentialsPreference { @@ -25,12 +26,7 @@ public class CheckECCredentialsPreference extends AbstractCheckCredentialsPrefer } @Override - protected Object login() { - final StatusCode loginResult = ECLogin.getInstance().login(); - Object payload = loginResult; - if (loginResult == StatusCode.NO_ERROR) { - payload = null; - } - return payload; + protected ImmutablePair<StatusCode, Drawable> login() { + return new ImmutablePair<StatusCode, Drawable>(ECLogin.getInstance().login(), null); } } diff --git a/main/src/cgeo/geocaching/settings/CheckGcCredentialsPreference.java b/main/src/cgeo/geocaching/settings/CheckGcCredentialsPreference.java index f65ba1b..8257fdd 100644 --- a/main/src/cgeo/geocaching/settings/CheckGcCredentialsPreference.java +++ b/main/src/cgeo/geocaching/settings/CheckGcCredentialsPreference.java @@ -6,6 +6,7 @@ import cgeo.geocaching.enumerations.StatusCode; import org.apache.commons.lang3.tuple.ImmutablePair; import android.content.Context; +import android.graphics.drawable.Drawable; import android.util.AttributeSet; public class CheckGcCredentialsPreference extends AbstractCheckCredentialsPreference { @@ -24,13 +25,14 @@ public class CheckGcCredentialsPreference extends AbstractCheckCredentialsPrefer } @Override - protected Object login() { + protected ImmutablePair<StatusCode, Drawable> login() { final StatusCode loginResult = GCLogin.getInstance().login(); - Object payload = loginResult; - if (loginResult == StatusCode.NO_ERROR) { - GCLogin.detectGcCustomDate(); - payload = GCLogin.getInstance().downloadAvatarAndGetMemberStatus(); + switch (loginResult) { + case NO_ERROR: + GCLogin.detectGcCustomDate(); + return new ImmutablePair<StatusCode, Drawable>(StatusCode.NO_ERROR, GCLogin.getInstance().downloadAvatarAndGetMemberStatus()); + default: + return new ImmutablePair<StatusCode, Drawable>(loginResult, null); } - return payload; } } |