/*
* Copyright 2015 Hannes Dorfmann.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.hannesdorfmann.mosby3.sample.mail.base.presenter;
import com.hannesdorfmann.mosby3.sample.mail.base.view.AuthView;
import com.hannesdorfmann.mosby3.sample.mail.model.account.NotAuthenticatedException;
import com.hannesdorfmann.mosby3.sample.mail.model.event.LoginSuccessfulEvent;
import com.hannesdorfmann.mosby3.sample.mail.model.event.NotAuthenticatedEvent;
import com.hannesdorfmann.mosby3.sample.mail.model.mail.MailProvider;
import de.greenrobot.event.EventBus;
/**
* @author Hannes Dorfmann
*/
public class BaseRxAuthPresenter<V extends AuthView<M>, M> extends BaseRxLcePresenter<V, M> {
protected EventBus eventBus;
protected MailProvider mailProvider;
public BaseRxAuthPresenter(MailProvider mailProvider, EventBus eventBus) {
this.eventBus = eventBus;
this.mailProvider = mailProvider;
}
@Override protected void onError(Throwable e, boolean pullToRefresh) {
if (e instanceof NotAuthenticatedException) {
eventBus.post(new NotAuthenticatedEvent());
} else {
super.onError(e, pullToRefresh);
}
}
public void onEventMainThread(NotAuthenticatedEvent event) {
if (isViewAttached()) {
getView().showAuthenticationRequired();
}
}
public void onEventMainThread(LoginSuccessfulEvent event) {
if (isViewAttached()) {
getView().loadData(false);
}
}
@Override public void attachView(V view) {
super.attachView(view);
eventBus.register(this);
}
@Override public void detachView(boolean retainInstance) {
super.detachView(retainInstance);
eventBus.unregister(this);
}
}