1 package com.moiseum.wolnelektury.view.news;
3 import android.os.Bundle;
5 import com.moiseum.wolnelektury.base.DataObserver;
6 import com.moiseum.wolnelektury.base.DataProvider;
7 import com.moiseum.wolnelektury.base.mvp.FragmentPresenter;
8 import com.moiseum.wolnelektury.connection.RestClient;
9 import com.moiseum.wolnelektury.connection.models.NewsModel;
10 import com.moiseum.wolnelektury.connection.services.NewsService;
12 import java.util.Collections;
13 import java.util.List;
15 import retrofit2.Call;
18 * Created by Piotr Ostrowski on 06.08.2018.
20 class NewsListPresenter extends FragmentPresenter<NewsListView> {
22 private class NewsListDataProvider extends DataProvider<List<NewsModel>, NewsService> {
25 protected Class<NewsService> getServiceClass() {
26 return NewsService.class;
30 public Call<List<NewsModel>> execute(NewsService service) {
31 return service.getNews(lastKeySlug, RestClient.PAGINATION_LIMIT);
35 private class NewsListDataObserver implements DataObserver<List<NewsModel>> {
38 public void onLoadStarted() {
39 getView().setProgressVisible(true);
43 public void onLoadSuccess(List<NewsModel> data) {
44 if (data.size() > 0) {
45 lastKey = data.get(data.size() - 1).getKey();
47 getView().setProgressVisible(false);
48 getView().setData(data);
52 public void onLoadFailed(Exception e) {
53 getView().setProgressVisible(false);
54 getView().setData(Collections.emptyList());
55 getView().showError(e);
59 private NewsListDataProvider dataProvider;
60 private String lastKey = null;
62 NewsListPresenter(NewsListView view) {
64 dataProvider = new NewsListDataProvider();
65 dataProvider.setDataObserver(new NewsListDataObserver());
69 public void onViewCreated(Bundle savedInstanceState) {
70 super.onViewCreated(savedInstanceState);
71 dataProvider.load(null);
74 public void loadMoreNews() {
75 dataProvider.load(lastKey);
78 public void onNewsClicked(NewsModel newsModel) {
79 getView().launchNews(newsModel);