// Path: app/src/main/java/com/ittianyu/pocenter/common/api/RemoteApi.java
// public interface RemoteApi {
//     interface Type {
//         int OTHER = 0;
//         int WEB = 1;
//         int WE_CHAT = 2;
//         int HTML5 = 3;
//         int APP = 4;
//         int INTELLIGENT_HARDWARE = 5;
//         int DESKTOP_APP = 6;
//         int BIG_DATA = 7;
//         int SYSTEM = 8;
//         int SDK_API = 9;
//         int ART = 10;
//     }
//     interface Status {
//         int RECRUITING = 0;
//         int RECRUITED = 1;
//     }
// 
//     /**
//      * select list according to types status and keywords
//      *
//      * @param start    start index
//      * @param count    select count
//      * @param types    support multiple types
//      * @param status
//      * @param keywords title or description keywords
//      * @return
//      */
//     @GET("list")
//     Observable<List<ProjectBean>> getList(@Query("start") int start, @Query("count") int count,
//                                           @Query("type") int[] types, @Query("status") int status,
//                                           @Query("keyword") String[] keywords);
// }
// 
// Path: app/src/main/java/com/ittianyu/pocenter/common/base/BaseApplication.java
// public class BaseApplication extends Application {
//     private static Context context;
//     private static Repertories repertories;
// 
//     // tinker patch config
//     private ApplicationLike tinkerApplicationLike;
// 
//     @Override
//     public void onCreate() {
//         super.onCreate();
// 
//         // tinker patch config
//         tinkerPatchConfig();
// 
//         context = getApplicationContext();
// 
//         initLogger();
// 
//         initLeakCanary();
// 
//         repertories = new Repertories(context.getCacheDir());
//     }
// 
//     private void tinkerPatchConfig() {
//         // 我们可以从这里获得Tinker加载过程的信息
//         if (BuildConfig.TINKER_ENABLE) {
//             tinkerApplicationLike = TinkerPatchApplicationLike.getTinkerPatchApplicationLike();
// 
//             // 初始化TinkerPatch SDK
//             TinkerPatch.init(tinkerApplicationLike)
//                     .reflectPatchLibrary()
//                     .setPatchRollbackOnScreenOff(true)
//                     .setPatchRestartOnSrceenOff(true);
// 
//             // 每隔3个小时去访问后台时候有更新,通过handler实现轮训的效果
//             new FetchPatchHandler().fetchPatchWithInterval(3);
//         }
//     }
// 
//     /**
//      * use LeakCanary to check mey leak
//      */
//     private void initLeakCanary() {
//         if (LeakCanary.isInAnalyzerProcess(this)) {
//             // This process is dedicated to LeakCanary for heap analysis.
//             // You should not init your app in this process.
//             return;
//         }
//         LeakCanary.install(this);
//     }
// 
//     /**
//      * init logger
//      */
//     private void initLogger() {
//         if ((0 != (getApplicationInfo().flags &= ApplicationInfo.FLAG_DEBUGGABLE)))
//             Logger.init(); // for debug, print all log
//         else
//             Logger.init().logLevel(LogLevel.NONE); // for release, remove all log
// //            Logger.init(); // for release, remove all log
//     }
// 
//     public static Context getContext() {
//         return context;
//     }
// 
//     public static Repertories getRepertories() {
//         return repertories;
//     }
// 
// 
//     /**
//      * tinker
//      * @param base
//      */
//     @Override
//     public void attachBaseContext(Context base) {
//         super.attachBaseContext(base);
//         //you must install multiDex whatever tinker is installed!
//         MultiDex.install(base);
//     }
// }
// 
// Path: app/src/main/java/com/ittianyu/pocenter/common/base/BasePresenter.java
// public class BasePresenter<V extends BaseContract.View>
//         extends MvpNullObjectBasePresenter<V>
//         implements BaseContract.Presenter<V>{
//     protected BaseApplication application;
// 
//     @Override
//     public void attachView(V view) {
//         super.attachView(view);
//         application = (BaseApplication) getView().getApp();
//     }
// 
//     @Override
//     public BaseApplication getApp() {
//         return application;
//     }
// }
// 
// Path: app/src/main/java/com/ittianyu/pocenter/common/bean/ProjectBean.java
// public class ProjectBean {
//     public int id;
//     public String projectId;
//     public String title;
//     public String description;
//     public String price;
//     public int type;
//     public String cycle;
//     public int people;
//     public int status;
//     public Timestamp time;
//     public String reference;
//     public String url;
// 
// 
//     @Override
//     public String toString() {
//         return "ProjectBean{" +
//                 "projectId='" + projectId + '\'' +
//                 ", title='" + title + '\'' +
//                 ", description='" + description + '\'' +
//                 ", price='" + price + '\'' +
//                 ", type=" + type +
//                 ", cycle='" + cycle + '\'' +
//                 ", people=" + people +
//                 ", status=" + status +
//                 ", time=" + time +
//                 ", reference='" + reference + '\'' +
//                 ", url='" + url + '\'' +
//                 '}';
//     }
// }


import com.ittianyu.pocenter.common.api.RemoteApi;
import com.ittianyu.pocenter.common.base.BaseApplication;
import com.ittianyu.pocenter.common.base.BasePresenter;
import com.ittianyu.pocenter.common.bean.ProjectBean;
import java.util.List;
import io.reactivex.functions.Consumer;
package com.ittianyu.pocenter.features.home;




/**
 * Created by yu on 2017/1/17.
 */

public class HomePresenter extends BasePresenter<HomeContract.View> implements HomeContract.Presenter {
    private static final int COUNT = 20;
    private int[] types;

    public HomePresenter() {
        loadTypes();
    }

    /**
     * load user selected types from config
     */
    private void loadTypes() {
        // load types
// Path: app/src/main/java/com/ittianyu/pocenter/common/api/RemoteApi.java
// public interface RemoteApi {
//     interface Type {
//         int OTHER = 0;
//         int WEB = 1;
//         int WE_CHAT = 2;
//         int HTML5 = 3;
//         int APP = 4;
//         int INTELLIGENT_HARDWARE = 5;
//         int DESKTOP_APP = 6;
//         int BIG_DATA = 7;
//         int SYSTEM = 8;
//         int SDK_API = 9;
//         int ART = 10;
//     }
//     interface Status {
//         int RECRUITING = 0;
//         int RECRUITED = 1;
//     }
// 
//     /**
//      * select list according to types status and keywords
//      *
//      * @param start    start index
//      * @param count    select count
//      * @param types    support multiple types
//      * @param status
//      * @param keywords title or description keywords
//      * @return
//      */
//     @GET("list")
//     Observable<List<ProjectBean>> getList(@Query("start") int start, @Query("count") int count,
//                                           @Query("type") int[] types, @Query("status") int status,
//                                           @Query("keyword") String[] keywords);
// }
// 
// Path: app/src/main/java/com/ittianyu/pocenter/common/base/BaseApplication.java
// public class BaseApplication extends Application {
//     private static Context context;
//     private static Repertories repertories;
// 
//     // tinker patch config
//     private ApplicationLike tinkerApplicationLike;
// 
//     @Override
//     public void onCreate() {
//         super.onCreate();
// 
//         // tinker patch config
//         tinkerPatchConfig();
// 
//         context = getApplicationContext();
// 
//         initLogger();
// 
//         initLeakCanary();
// 
//         repertories = new Repertories(context.getCacheDir());
//     }
// 
//     private void tinkerPatchConfig() {
//         // 我们可以从这里获得Tinker加载过程的信息
//         if (BuildConfig.TINKER_ENABLE) {
//             tinkerApplicationLike = TinkerPatchApplicationLike.getTinkerPatchApplicationLike();
// 
//             // 初始化TinkerPatch SDK
//             TinkerPatch.init(tinkerApplicationLike)
//                     .reflectPatchLibrary()
//                     .setPatchRollbackOnScreenOff(true)
//                     .setPatchRestartOnSrceenOff(true);
// 
//             // 每隔3个小时去访问后台时候有更新,通过handler实现轮训的效果
//             new FetchPatchHandler().fetchPatchWithInterval(3);
//         }
//     }
// 
//     /**
//      * use LeakCanary to check mey leak
//      */
//     private void initLeakCanary() {
//         if (LeakCanary.isInAnalyzerProcess(this)) {
//             // This process is dedicated to LeakCanary for heap analysis.
//             // You should not init your app in this process.
//             return;
//         }
//         LeakCanary.install(this);
//     }
// 
//     /**
//      * init logger
//      */
//     private void initLogger() {
//         if ((0 != (getApplicationInfo().flags &= ApplicationInfo.FLAG_DEBUGGABLE)))
//             Logger.init(); // for debug, print all log
//         else
//             Logger.init().logLevel(LogLevel.NONE); // for release, remove all log
// //            Logger.init(); // for release, remove all log
//     }
// 
//     public static Context getContext() {
//         return context;
//     }
// 
//     public static Repertories getRepertories() {
//         return repertories;
//     }
// 
// 
//     /**
//      * tinker
//      * @param base
//      */
//     @Override
//     public void attachBaseContext(Context base) {
//         super.attachBaseContext(base);
//         //you must install multiDex whatever tinker is installed!
//         MultiDex.install(base);
//     }
// }
// 
// Path: app/src/main/java/com/ittianyu/pocenter/common/base/BasePresenter.java
// public class BasePresenter<V extends BaseContract.View>
//         extends MvpNullObjectBasePresenter<V>
//         implements BaseContract.Presenter<V>{
//     protected BaseApplication application;
// 
//     @Override
//     public void attachView(V view) {
//         super.attachView(view);
//         application = (BaseApplication) getView().getApp();
//     }
// 
//     @Override
//     public BaseApplication getApp() {
//         return application;
//     }
// }
// 
// Path: app/src/main/java/com/ittianyu/pocenter/common/bean/ProjectBean.java
// public class ProjectBean {
//     public int id;
//     public String projectId;
//     public String title;
//     public String description;
//     public String price;
//     public int type;
//     public String cycle;
//     public int people;
//     public int status;
//     public Timestamp time;
//     public String reference;
//     public String url;
// 
// 
//     @Override
//     public String toString() {
//         return "ProjectBean{" +
//                 "projectId='" + projectId + '\'' +
//                 ", title='" + title + '\'' +
//                 ", description='" + description + '\'' +
//                 ", price='" + price + '\'' +
//                 ", type=" + type +
//                 ", cycle='" + cycle + '\'' +
//                 ", people=" + people +
//                 ", status=" + status +
//                 ", time=" + time +
//                 ", reference='" + reference + '\'' +
//                 ", url='" + url + '\'' +
//                 '}';
//     }
// }


// Path: app/src/main/java/com/ittianyu/pocenter/features/home/HomePresenter.java
import com.ittianyu.pocenter.common.api.RemoteApi;
import com.ittianyu.pocenter.common.base.BaseApplication;
import com.ittianyu.pocenter.common.base.BasePresenter;
import com.ittianyu.pocenter.common.bean.ProjectBean;
import java.util.List;
import io.reactivex.functions.Consumer;

package com.ittianyu.pocenter.features.home;




/**
 * Created by yu on 2017/1/17.
 */

public class HomePresenter extends BasePresenter<HomeContract.View> implements HomeContract.Presenter {
    private static final int COUNT = 20;
    private int[] types;

    public HomePresenter() {
        loadTypes();
    }

    /**
     * load user selected types from config
     */
    private void loadTypes() {
        // load types
        types = BaseApplication.getRepertories().getTypes();