UserModel.java 1.6 KB
Newer Older
J
jessyan 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
package me.jessyan.mvparms.demo.mvp.model;

import com.jess.arms.mvp.BaseModel;

import java.util.List;

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.CacheManager;
import me.jessyan.mvparms.demo.mvp.model.api.service.ServiceManager;
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
 */
J
jessyan 已提交
21
public class UserModel extends BaseModel<ServiceManager, CacheManager> implements UserContract.Model {
J
jessyan 已提交
22 23 24 25 26 27 28 29 30
    public static final int USERS_PER_PAGE = 10;

    public UserModel(ServiceManager serviceManager, CacheManager cacheManager) {
        super(serviceManager, cacheManager);
    }


    @Override
    public Observable<List<User>> getUsers(int lastIdQueried, boolean update) {
J
jessyan 已提交
31
        Observable<List<User>> users = mServiceManager.getCommonService()
J
jessyan 已提交
32 33
                .getUsers(lastIdQueried, USERS_PER_PAGE);
        //使用rxcache缓存,上拉刷新则不读取缓存,加载更多读取缓存
J
jessyan 已提交
34
        return mCacheManager.getCommonCache()
J
jessyan 已提交
35
                .getUsers(users
J
jessyan 已提交
36 37
                        , new DynamicKey(lastIdQueried)
                        , new EvictDynamicKey(update))
J
jessyan 已提交
38 39 40 41 42 43 44
                .flatMap(new Func1<Reply<List<User>>, Observable<List<User>>>() {
                    @Override
                    public Observable<List<User>> call(Reply<List<User>> listReply) {
                        return Observable.just(listReply.getData());
                    }
                });
    }
J
jessyan 已提交
45

J
jessyan 已提交
46
}