package me.jessyan.mvparms.demo.mvp.model; import com.jess.arms.di.scope.ActivityScope; import com.jess.arms.integration.IRepositoryManager; import com.jess.arms.mvp.BaseModel; import java.util.List; import javax.inject.Inject; import io.rx_cache.DynamicKey; import io.rx_cache.EvictDynamicKey; import io.rx_cache.Reply; import me.jessyan.mvparms.demo.mvp.contract.UserContract; import me.jessyan.mvparms.demo.mvp.model.api.cache.CommonCache; import me.jessyan.mvparms.demo.mvp.model.api.service.UserService; import me.jessyan.mvparms.demo.mvp.model.entity.User; import rx.Observable; import rx.functions.Func1; /** * Created by jess on 9/4/16 10:56 * Contact with jess.yan.effort@gmail.com */ @ActivityScope public class UserModel extends BaseModel implements UserContract.Model { public static final int USERS_PER_PAGE = 10; @Inject public UserModel(IRepositoryManager repositoryManager) { super(repositoryManager); } @Override public Observable> getUsers(int lastIdQueried, boolean update) { Observable> users = mRepositoryManager.obtainRetrofitService(UserService.class) .getUsers(lastIdQueried, USERS_PER_PAGE); //使用rxcache缓存,上拉刷新则不读取缓存,加载更多读取缓存 return mRepositoryManager.obtainCacheService(CommonCache.class) .getUsers(users , new DynamicKey(lastIdQueried) , new EvictDynamicKey(update)) .flatMap(new Func1>, Observable>>() { @Override public Observable> call(Reply> listReply) { return Observable.just(listReply.getData()); } }); } }