package com.gettingmobile.goodnews.account;
import android.content.DialogInterface;
import com.gettingmobile.android.app.DialogFactory;
import com.gettingmobile.android.app.actions.AbstractAction;
import com.gettingmobile.android.app.actions.ActionContext;
import com.gettingmobile.goodnews.Application;
import com.gettingmobile.goodnews.R;
import com.gettingmobile.google.reader.db.ItemTagChangeDatabaseAdapter;
public class LoginAction extends AbstractAction<Application> {
@Override
public boolean onFired(final ActionContext<? extends Application> context) {
if (ItemTagChangeDatabaseAdapter.hasGlobalChanges(context.getApp().getDbHelper().getDatabase())) {
DialogFactory.buildYesNoDialog(
context.getActivity(), R.string.account_change_title, R.string.account_change_confirmation,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
doLogin(context);
}
}).show();
} else {
doLogin(context);
}
return true;
}
protected void doLogin(final ActionContext<? extends Application> context) {
context.getApp().getAccountHandler().promptAccount(context, new LoginCallback() {
@Override
public void onLoginStarted() {
context.showWaitDialog();
}
@Override
public void onLoginFinished(Throwable error) {
context.dismissWaitDialog();
if (error != null) {
DialogFactory.showErrorDialog(context.getActivity(),
R.string.login_title, context.getActivity().getString(R.string.login_failed));
}
}
});
}
}