package com.gettingmobile.goodnews.account; import android.app.Dialog; import com.gettingmobile.android.app.actions.ActionContext; import com.gettingmobile.goodnews.Application; import com.gettingmobile.goodnews.settings.Settings; public abstract class AbstractAccountHandler implements AccountHandler { protected final Application app; protected Dialog promptDialog = null; public AbstractAccountHandler(Application app) { this.app = app; } protected String getString(int resId) { return app.getString(resId); } protected Application getApp() { return app; } protected Settings getSettings() { return app.getSettings(); } protected void invalidateCache() { getSettings().resetMinUnreadTimestamp(); getApp().getDbHelper().clean(); } @Override public boolean isPromptShowing() { return promptDialog != null && promptDialog.isShowing(); } @Override public void promptAccount(ActionContext actionContext, LoginCallback callback) { } protected void onAuthenticationFinished(final LoginCallback loginCallback, Throwable error, final String authToken) { if (error == null) { getApp().authenticate(authToken); fireOnLoginSucceeded(loginCallback); } else { fireOnLoginFailed(loginCallback, error); } } /* * callback handling */ protected void fireOnLoginStarted(LoginCallback loginCallback) { if (loginCallback != null) { loginCallback.onLoginStarted(); } } protected void fireOnLoginFailed(LoginCallback loginCallback, Throwable error) { if (loginCallback != null) { if (error == null) { error = new Exception("Unknown login error"); } loginCallback.onLoginFinished(error); } } protected void fireOnLoginSucceeded(LoginCallback loginCallback) { if (loginCallback != null) { loginCallback.onLoginFinished(null); } } }