UserModel.java 1.8 KB
Newer Older
J
jessyan 已提交
1 2
package me.jessyan.mvparms.demo.mvp.model;

J
jessyan 已提交
3
import com.jess.arms.di.scope.ActivityScope;
J
jessyan 已提交
4
import com.jess.arms.integration.IRepositoryManager;
J
jessyan 已提交
5 6 7 8
import com.jess.arms.mvp.BaseModel;

import java.util.List;

J
jessyan 已提交
9 10
import javax.inject.Inject;

J
jessyan 已提交
11 12 13 14
import io.rx_cache.DynamicKey;
import io.rx_cache.EvictDynamicKey;
import io.rx_cache.Reply;
import me.jessyan.mvparms.demo.mvp.contract.UserContract;
J
jessyan 已提交
15 16
import me.jessyan.mvparms.demo.mvp.model.api.cache.CommonCache;
import me.jessyan.mvparms.demo.mvp.model.api.service.UserService;
J
jessyan 已提交
17 18 19 20 21 22 23 24
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 已提交
25
@ActivityScope
J
jessyan 已提交
26
public class UserModel extends BaseModel implements UserContract.Model {
J
jessyan 已提交
27 28
    public static final int USERS_PER_PAGE = 10;

J
jessyan 已提交
29
    @Inject
J
jessyan 已提交
30 31
    public UserModel(IRepositoryManager repositoryManager) {
        super(repositoryManager);
J
jessyan 已提交
32 33 34 35
    }

    @Override
    public Observable<List<User>> getUsers(int lastIdQueried, boolean update) {
J
jessyan 已提交
36
        Observable<List<User>> users = mRepositoryManager.obtainRetrofitService(UserService.class)
J
jessyan 已提交
37 38
                .getUsers(lastIdQueried, USERS_PER_PAGE);
        //使用rxcache缓存,上拉刷新则不读取缓存,加载更多读取缓存
J
jessyan 已提交
39
        return mRepositoryManager.obtainCacheService(CommonCache.class)
J
jessyan 已提交
40
                .getUsers(users
J
jessyan 已提交
41 42
                        , new DynamicKey(lastIdQueried)
                        , new EvictDynamicKey(update))
J
jessyan 已提交
43 44 45 46 47 48 49
                .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 已提交
50

J
jessyan 已提交
51
}