// Path: app/src/main/java/com/hitherejoe/androidtvboilerplate/data/DataManager.java
// @Singleton
// public class DataManager {
// 
//     private final AndroidTvBoilerplateService mTvAndroidTvBoilerplateService;
//     private final PreferencesHelper mPreferencesHelper;
// 
//     @Inject
//     public DataManager(PreferencesHelper preferencesHelper,
//                        AndroidTvBoilerplateService androidTvBoilerplateService) {
//         mPreferencesHelper = preferencesHelper;
//         mTvAndroidTvBoilerplateService = androidTvBoilerplateService;
//     }
// 
//     public PreferencesHelper getPreferencesHelper() {
//         return mPreferencesHelper;
//     }
// 
//     public Single<List<Cat>> getCats(List<Cat> cats) {
//         // This just for example, usually here we'd make an API request and not pass a useless
//         // list of cats back that we passed in!
//         return Single.just(cats);
//     }
// 
// }
// 
// Path: app/src/main/java/com/hitherejoe/androidtvboilerplate/data/model/Cat.java
// public class Cat {
//     public String name;
//     public String description;
//     public String imageUrl;
// 
//     public Cat() {
// 
//     }
// 
//     public Cat(String name, String description, String imageUrl) {
//         this.name = name;
//         this.description = description;
//         this.imageUrl = imageUrl;
//     }
// 
// }
// 
// Path: app/src/main/java/com/hitherejoe/androidtvboilerplate/ui/base/BasePresenter.java
// public class BasePresenter<T extends MvpView> implements Presenter<T> {
// 
//     private T mMvpView;
// 
//     @Override
//     public void attachView(T mvpView) {
//         mMvpView = mvpView;
//     }
// 
//     @Override
//     public void detachView() {
//         mMvpView = null;
//     }
// 
//     public boolean isViewAttached() {
//         return mMvpView != null;
//     }
// 
//     public T getMvpView() {
//         return mMvpView;
//     }
// 
//     public void checkViewAttached() {
//         if (!isViewAttached()) throw new MvpViewNotAttachedException();
//     }
// 
//     public static class MvpViewNotAttachedException extends RuntimeException {
//         public MvpViewNotAttachedException() {
//             super("Please call Presenter.attachView(MvpView) before" +
//                     " requesting data to the Presenter");
//         }
//     }
// }


import com.hitherejoe.androidtvboilerplate.data.DataManager;
import com.hitherejoe.androidtvboilerplate.data.model.Cat;
import com.hitherejoe.androidtvboilerplate.ui.base.BasePresenter;
import java.util.List;
import javax.inject.Inject;
import rx.SingleSubscriber;
import rx.Subscription;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
import timber.log.Timber;
package com.hitherejoe.androidtvboilerplate.ui.content;





public class ContentPresenter extends BasePresenter<ContentMvpView> {

    private Subscription mSubscription;
    private final DataManager mDataManager;

    @Inject
// Path: app/src/main/java/com/hitherejoe/androidtvboilerplate/data/DataManager.java
// @Singleton
// public class DataManager {
// 
//     private final AndroidTvBoilerplateService mTvAndroidTvBoilerplateService;
//     private final PreferencesHelper mPreferencesHelper;
// 
//     @Inject
//     public DataManager(PreferencesHelper preferencesHelper,
//                        AndroidTvBoilerplateService androidTvBoilerplateService) {
//         mPreferencesHelper = preferencesHelper;
//         mTvAndroidTvBoilerplateService = androidTvBoilerplateService;
//     }
// 
//     public PreferencesHelper getPreferencesHelper() {
//         return mPreferencesHelper;
//     }
// 
//     public Single<List<Cat>> getCats(List<Cat> cats) {
//         // This just for example, usually here we'd make an API request and not pass a useless
//         // list of cats back that we passed in!
//         return Single.just(cats);
//     }
// 
// }
// 
// Path: app/src/main/java/com/hitherejoe/androidtvboilerplate/data/model/Cat.java
// public class Cat {
//     public String name;
//     public String description;
//     public String imageUrl;
// 
//     public Cat() {
// 
//     }
// 
//     public Cat(String name, String description, String imageUrl) {
//         this.name = name;
//         this.description = description;
//         this.imageUrl = imageUrl;
//     }
// 
// }
// 
// Path: app/src/main/java/com/hitherejoe/androidtvboilerplate/ui/base/BasePresenter.java
// public class BasePresenter<T extends MvpView> implements Presenter<T> {
// 
//     private T mMvpView;
// 
//     @Override
//     public void attachView(T mvpView) {
//         mMvpView = mvpView;
//     }
// 
//     @Override
//     public void detachView() {
//         mMvpView = null;
//     }
// 
//     public boolean isViewAttached() {
//         return mMvpView != null;
//     }
// 
//     public T getMvpView() {
//         return mMvpView;
//     }
// 
//     public void checkViewAttached() {
//         if (!isViewAttached()) throw new MvpViewNotAttachedException();
//     }
// 
//     public static class MvpViewNotAttachedException extends RuntimeException {
//         public MvpViewNotAttachedException() {
//             super("Please call Presenter.attachView(MvpView) before" +
//                     " requesting data to the Presenter");
//         }
//     }
// }


// Path: app/src/main/java/com/hitherejoe/androidtvboilerplate/ui/content/ContentPresenter.java
import com.hitherejoe.androidtvboilerplate.data.DataManager;
import com.hitherejoe.androidtvboilerplate.data.model.Cat;
import com.hitherejoe.androidtvboilerplate.ui.base.BasePresenter;
import java.util.List;
import javax.inject.Inject;
import rx.SingleSubscriber;
import rx.Subscription;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
import timber.log.Timber;

package com.hitherejoe.androidtvboilerplate.ui.content;





public class ContentPresenter extends BasePresenter<ContentMvpView> {

    private Subscription mSubscription;
    private final DataManager mDataManager;

    @Inject
    public ContentPresenter(DataManager dataManager) {