// Path: app/src/main/java/com/projects/elad/hacklist/presentation/presenters/HomePresenter.java
// public class HomePresenter extends BasePresenter<HomeMvpView> {
// 
//     @Inject DataManager dataManager;
//     private HashMap<Integer, Subscription> subscriptions;
//     @Inject Context context;
// 
//     public HomePresenter() {
//         subscriptions = new HashMap<>();
//     }
// 
// 
//     @Override
//     public void attachView(HomeMvpView mvpView) {
//         super.attachView(mvpView);
//         ((HacklistApplication)(((FragmentHome)getMvpView()).getActivity().getApplication())).getComponent().inject(this);
// 
//     }
// 
//     @Override
//     public void detachView() {
//         super.detachView();
//         unSubscribeAll();
//     }
// 
//     void unSubscribeAll() {
//         for (Subscription sub : subscriptions.values()) {
//             RxUtil.unsubscribe(sub);
//         }
//         subscriptions.clear();
//     }
// 
//     public void loadHackEvent() {
//         checkViewAttached();
//         unSubscribeAll();
// 
//         int month = dataManager.getDate().getCurrMonthInt();
//         String year = dataManager.getDate().getCurrentYear();
//         while (month < 12) {
//             subscriptions.put(month,
//                     dataManager.getHacklistService().getMonthObject(year, Utils.getStringForMonthInt(month))
//                             .observeOn(AndroidSchedulers.mainThread())
//                             .subscribeOn(Schedulers.newThread())
//                             .map(v -> v.entrySet().iterator().next().getValue())
//                             .subscribe(new Subscriber<List<HackEvent>>() {
//                                 @Override
//                                 public void onCompleted() {
//                                 }
// 
//                                 @Override
//                                 public void onError(Throwable e) {
// 
//                                 }
// 
//                                 @Override
//                                 public void onNext(List<HackEvent> events) {
//                                     getMvpView().showHackEvents(Mappers.mapHackEventsToListItems(events,context));
//                                 }
//                             }));
// 
//             month++;
//         }
// 
//     }
// 
// 
//     public void saveListItem(ListItem item) {
//         dataManager.saveBookmark(Mappers.mapHomeListItemToBookmarkDbEntity(item));
//     }
// 
//     public boolean isBookmarkSaved(String title) {
//         return dataManager.isSaved(title);
//     }
// 
// 
//     public void deleteBookmark(String title) {
//         dataManager.deleteBookmark(title);
//     }
// }


import com.projects.elad.hacklist.injection.scopes.PerFragment;
import com.projects.elad.hacklist.presentation.presenters.HomePresenter;
import dagger.Module;
import dagger.Provides;
package com.projects.elad.hacklist.injection.modules;



/**
 * Created by EladKeyshawn on 01/03/2017.
 */
@Module
public class HomeFragmentModule {


    @Provides
    @PerFragment
// Path: app/src/main/java/com/projects/elad/hacklist/presentation/presenters/HomePresenter.java
// public class HomePresenter extends BasePresenter<HomeMvpView> {
// 
//     @Inject DataManager dataManager;
//     private HashMap<Integer, Subscription> subscriptions;
//     @Inject Context context;
// 
//     public HomePresenter() {
//         subscriptions = new HashMap<>();
//     }
// 
// 
//     @Override
//     public void attachView(HomeMvpView mvpView) {
//         super.attachView(mvpView);
//         ((HacklistApplication)(((FragmentHome)getMvpView()).getActivity().getApplication())).getComponent().inject(this);
// 
//     }
// 
//     @Override
//     public void detachView() {
//         super.detachView();
//         unSubscribeAll();
//     }
// 
//     void unSubscribeAll() {
//         for (Subscription sub : subscriptions.values()) {
//             RxUtil.unsubscribe(sub);
//         }
//         subscriptions.clear();
//     }
// 
//     public void loadHackEvent() {
//         checkViewAttached();
//         unSubscribeAll();
// 
//         int month = dataManager.getDate().getCurrMonthInt();
//         String year = dataManager.getDate().getCurrentYear();
//         while (month < 12) {
//             subscriptions.put(month,
//                     dataManager.getHacklistService().getMonthObject(year, Utils.getStringForMonthInt(month))
//                             .observeOn(AndroidSchedulers.mainThread())
//                             .subscribeOn(Schedulers.newThread())
//                             .map(v -> v.entrySet().iterator().next().getValue())
//                             .subscribe(new Subscriber<List<HackEvent>>() {
//                                 @Override
//                                 public void onCompleted() {
//                                 }
// 
//                                 @Override
//                                 public void onError(Throwable e) {
// 
//                                 }
// 
//                                 @Override
//                                 public void onNext(List<HackEvent> events) {
//                                     getMvpView().showHackEvents(Mappers.mapHackEventsToListItems(events,context));
//                                 }
//                             }));
// 
//             month++;
//         }
// 
//     }
// 
// 
//     public void saveListItem(ListItem item) {
//         dataManager.saveBookmark(Mappers.mapHomeListItemToBookmarkDbEntity(item));
//     }
// 
//     public boolean isBookmarkSaved(String title) {
//         return dataManager.isSaved(title);
//     }
// 
// 
//     public void deleteBookmark(String title) {
//         dataManager.deleteBookmark(title);
//     }
// }


// Path: app/src/main/java/com/projects/elad/hacklist/injection/modules/HomeFragmentModule.java
import com.projects.elad.hacklist.injection.scopes.PerFragment;
import com.projects.elad.hacklist.presentation.presenters.HomePresenter;
import dagger.Module;
import dagger.Provides;

package com.projects.elad.hacklist.injection.modules;



/**
 * Created by EladKeyshawn on 01/03/2017.
 */
@Module
public class HomeFragmentModule {


    @Provides
    @PerFragment
    public HomePresenter providePresenter() {