package org.loofer.weread.mvp.contract;


import org.loofer.framework.mvp.BaseView;
import org.loofer.framework.mvp.IModel;
import org.loofer.weread.mvp.model.entity.BaseJson;
import org.loofer.weread.mvp.model.entity.Detail;

import rx.Observable;
/**
 * 通过Template生成对应页面的MVP和Dagger代码,请注意输入框中输入的名字必须相同
 * 由于每个项目包结构都不一定相同,所以每生成一个文件需要自己导入import包名,可以在设置中设置自动导入包名
 * 请在对应包下按以下顺序生成对应代码,Contract->Model->Presenter->Activity->Module->Component
 * 因为生成Activity时,Module和Component还没生成,但是Activity中有它们的引用,所以会报错,但是不用理会
 * 继续将Module和Component生成完后,编译一下项目再回到Activity,按提示修改一个方法名即可
 * 如果想生成Fragment的相关文件,则将上面构建顺序中的Activity换为Fragment,并将Component中inject方法的参数改为此Fragment
 */


/**
 *============================================================
 * 版权： xx有限公司 版权所有（c）2017
 *
 * 作者：Loofer
 * 版本：1.0
 * 创建日期 ：2017/1/7 22:18.
 * 描述：
 *
 * 注:如果您修改了本类请填写以下内容作为记录，如非本人操作劳烦通知，谢谢！！！
 * Modified Date Modify Content:
 *
 *==========================================================
 */

public interface DetailContract {
    //对于经常使用的关于UI的方法可以定义到BaseView中,如显示隐藏进度条,和显示文字消息
    interface View extends BaseView {

        void showOnFailure();

        void updateListUI(Detail data);
    }

    //Model层定义接口,外部只需关心model返回的数据,无需关心内部细节,及是否使用缓存
    interface Model extends IModel {
        Observable<BaseJson<Detail>> getDetail(String api, String type, String itemId, int showSdv);
    }
}