package com.simplecity.amp_library.ui.presenters;
import android.support.annotation.CallSuper;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import rx.Subscription;
import rx.subscriptions.CompositeSubscription;
public class Presenter<V> {
@NonNull
private final CompositeSubscription subscriptions = new CompositeSubscription();
protected void addSubcscription(@NonNull Subscription subscription) {
subscriptions.add(subscription);
}
@Nullable
private V view;
@Nullable
protected V getView() {
return view;
}
@CallSuper
public void bindView(@NonNull V view) {
final V previousView = this.view;
if (previousView != null) {
throw new IllegalStateException("Previous view is not unbound! previousView = " + previousView);
}
this.view = view;
}
@CallSuper
public void unbindView(@NonNull V view) {
final V previousView = this.view;
if (previousView == view) {
this.view = null;
} else {
throw new IllegalStateException("Unexpected view! previousView = " + previousView + ", view to unbind = " + view);
}
// Unsubscribe all subscriptions that need to be unsubscribed in this lifecycle state.
subscriptions.clear();
}
}