Add composite subscriptions
This commit is contained in:
parent
e386257d34
commit
90b0948968
@ -57,15 +57,13 @@ dependencies {
|
|||||||
compile "com.android.support:design:$SUPPORT_LIBRARY_VERSION"
|
compile "com.android.support:design:$SUPPORT_LIBRARY_VERSION"
|
||||||
compile "com.android.support:recyclerview-v7:$SUPPORT_LIBRARY_VERSION"
|
compile "com.android.support:recyclerview-v7:$SUPPORT_LIBRARY_VERSION"
|
||||||
compile "com.android.support:support-annotations:$SUPPORT_LIBRARY_VERSION"
|
compile "com.android.support:support-annotations:$SUPPORT_LIBRARY_VERSION"
|
||||||
compile 'com.squareup.retrofit:adapter-rxjava:2.0.0-beta1'
|
|
||||||
compile 'com.squareup.okhttp:okhttp-urlconnection:2.4.0'
|
compile 'com.squareup.okhttp:okhttp-urlconnection:2.4.0'
|
||||||
compile 'com.squareup.okhttp:okhttp:2.4.0'
|
compile 'com.squareup.okhttp:okhttp:2.4.0'
|
||||||
|
compile 'io.reactivex:rxandroid:1.0.1'
|
||||||
compile "com.pushtorefresh.storio:sqlite:$STORIO_VERSION"
|
compile "com.pushtorefresh.storio:sqlite:$STORIO_VERSION"
|
||||||
compile "com.pushtorefresh.storio:sqlite-annotations:$STORIO_VERSION"
|
compile "com.pushtorefresh.storio:sqlite-annotations:$STORIO_VERSION"
|
||||||
compile 'de.greenrobot:eventbus:2.4.0'
|
compile 'de.greenrobot:eventbus:2.4.0'
|
||||||
compile 'com.github.bumptech.glide:glide:3.6.1'
|
compile 'com.github.bumptech.glide:glide:3.6.1'
|
||||||
compile 'de.hdodenhof:circleimageview:1.3.0'
|
|
||||||
compile 'io.reactivex:rxandroid:1.0.1'
|
|
||||||
compile 'com.jakewharton:butterknife:7.0.1'
|
compile 'com.jakewharton:butterknife:7.0.1'
|
||||||
compile 'com.jakewharton.timber:timber:3.1.0'
|
compile 'com.jakewharton.timber:timber:3.1.0'
|
||||||
compile 'uk.co.ribot:easyadapter:1.5.0@aar'
|
compile 'uk.co.ribot:easyadapter:1.5.0@aar'
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package eu.kanade.mangafeed.presenter;
|
package eu.kanade.mangafeed.presenter;
|
||||||
|
|
||||||
import de.greenrobot.event.EventBus;
|
import de.greenrobot.event.EventBus;
|
||||||
|
import rx.subscriptions.CompositeSubscription;
|
||||||
|
|
||||||
public class BasePresenter {
|
public class BasePresenter {
|
||||||
|
|
||||||
@ -15,4 +16,11 @@ public class BasePresenter {
|
|||||||
public void unregisterForEvents() {
|
public void unregisterForEvents() {
|
||||||
EventBus.getDefault().unregister(this);
|
EventBus.getDefault().unregister(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected CompositeSubscription subscriptions = new CompositeSubscription();
|
||||||
|
|
||||||
|
public void destroySubscriptions() {
|
||||||
|
subscriptions.unsubscribe();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,6 @@ import eu.kanade.mangafeed.data.models.Manga;
|
|||||||
import eu.kanade.mangafeed.ui.activity.MangaDetailActivity;
|
import eu.kanade.mangafeed.ui.activity.MangaDetailActivity;
|
||||||
import eu.kanade.mangafeed.ui.adapter.LibraryAdapter;
|
import eu.kanade.mangafeed.ui.adapter.LibraryAdapter;
|
||||||
import eu.kanade.mangafeed.view.LibraryView;
|
import eu.kanade.mangafeed.view.LibraryView;
|
||||||
import rx.Subscription;
|
|
||||||
|
|
||||||
import static rx.android.schedulers.AndroidSchedulers.mainThread;
|
import static rx.android.schedulers.AndroidSchedulers.mainThread;
|
||||||
|
|
||||||
@ -23,7 +22,6 @@ public class LibraryPresenter extends BasePresenter {
|
|||||||
@Inject PreferencesHelper prefs;
|
@Inject PreferencesHelper prefs;
|
||||||
|
|
||||||
LibraryAdapter<Manga> adapter;
|
LibraryAdapter<Manga> adapter;
|
||||||
private Subscription mangaListSubscription;
|
|
||||||
|
|
||||||
public LibraryPresenter(LibraryView view) {
|
public LibraryPresenter(LibraryView view) {
|
||||||
this.view = view;
|
this.view = view;
|
||||||
@ -47,22 +45,18 @@ public class LibraryPresenter extends BasePresenter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void initializeMangas() {
|
public void initializeMangas() {
|
||||||
mangaListSubscription = db.manga.getWithUnread()
|
adapter = new LibraryAdapter<>(view.getActivity());
|
||||||
.observeOn(mainThread())
|
|
||||||
.subscribe(mangas -> {
|
|
||||||
adapter = new LibraryAdapter<>(view.getActivity(), mangas);
|
|
||||||
view.setAdapter(adapter);
|
view.setAdapter(adapter);
|
||||||
});
|
view.setMangaClickListener();
|
||||||
|
|
||||||
|
subscriptions.add(db.manga.getWithUnread()
|
||||||
|
.observeOn(mainThread())
|
||||||
|
.subscribe(adapter::setNewItems)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onQueryTextChange(String query) {
|
public void onQueryTextChange(String query) {
|
||||||
adapter.getFilter().filter(query);
|
adapter.getFilter().filter(query);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void destroySubscriptions() {
|
|
||||||
if (mangaListSubscription != null) {
|
|
||||||
mangaListSubscription.unsubscribe();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ import android.content.Context;
|
|||||||
import android.widget.Filter;
|
import android.widget.Filter;
|
||||||
import android.widget.Filterable;
|
import android.widget.Filterable;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import eu.kanade.mangafeed.data.models.Manga;
|
import eu.kanade.mangafeed.data.models.Manga;
|
||||||
@ -15,12 +16,16 @@ public class LibraryAdapter<T> extends EasyAdapter<T> implements Filterable {
|
|||||||
List<Manga> mangas;
|
List<Manga> mangas;
|
||||||
Filter filter;
|
Filter filter;
|
||||||
|
|
||||||
public LibraryAdapter(Context context, List<T> listItems) {
|
public LibraryAdapter(Context context) {
|
||||||
super(context, MangaLibraryHolder.class, listItems);
|
super(context, MangaLibraryHolder.class);
|
||||||
mangas = (List<Manga>)getItems();
|
|
||||||
filter = new CatalogueFilter();
|
filter = new CatalogueFilter();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setNewItems(List<T> list) {
|
||||||
|
super.setItems(list);
|
||||||
|
mangas = (List<Manga>)list;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Filter getFilter() {
|
public Filter getFilter() {
|
||||||
return filter;
|
return filter;
|
||||||
|
@ -48,21 +48,14 @@ public class LibraryFragment extends BaseFragment implements LibraryView {
|
|||||||
activity.setToolbarTitle(getString(R.string.library_title));
|
activity.setToolbarTitle(getString(R.string.library_title));
|
||||||
ButterKnife.bind(this, view);
|
ButterKnife.bind(this, view);
|
||||||
|
|
||||||
return view;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onActivityCreated(Bundle savedInstanceState) {
|
|
||||||
super.onActivityCreated(savedInstanceState);
|
|
||||||
|
|
||||||
setMangaClickListener();
|
|
||||||
presenter.initializeMangas();
|
presenter.initializeMangas();
|
||||||
|
|
||||||
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDestroy() {
|
public void onDestroy() {
|
||||||
super.onDestroy();
|
super.onDestroy();
|
||||||
|
|
||||||
presenter.destroySubscriptions();
|
presenter.destroySubscriptions();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -88,12 +81,6 @@ public class LibraryFragment extends BaseFragment implements LibraryView {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setMangaClickListener() {
|
|
||||||
grid.setOnItemClickListener(
|
|
||||||
(parent, view, position, id) ->
|
|
||||||
presenter.onMangaClick(position)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
// LibraryView
|
// LibraryView
|
||||||
|
|
||||||
@ -101,4 +88,11 @@ public class LibraryFragment extends BaseFragment implements LibraryView {
|
|||||||
grid.setAdapter(adapter);
|
grid.setAdapter(adapter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setMangaClickListener() {
|
||||||
|
grid.setOnItemClickListener(
|
||||||
|
(parent, view, position, id) ->
|
||||||
|
presenter.onMangaClick(position)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -4,19 +4,8 @@ import android.content.Context;
|
|||||||
import android.net.ConnectivityManager;
|
import android.net.ConnectivityManager;
|
||||||
import android.net.NetworkInfo;
|
import android.net.NetworkInfo;
|
||||||
|
|
||||||
import retrofit.HttpException;
|
|
||||||
|
|
||||||
public class NetworkUtil {
|
public class NetworkUtil {
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns true if the Throwable is an instance of RetrofitError with an
|
|
||||||
* http status code equals to the given one.
|
|
||||||
*/
|
|
||||||
public static boolean isHttpStatusCode(Throwable throwable, int statusCode) {
|
|
||||||
return throwable instanceof HttpException
|
|
||||||
&& ((HttpException) throwable).code() == statusCode;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean isNetworkConnected(Context context) {
|
public static boolean isNetworkConnected(Context context) {
|
||||||
ConnectivityManager cm =
|
ConnectivityManager cm =
|
||||||
(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
|
(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
|
||||||
|
@ -5,4 +5,5 @@ import uk.co.ribot.easyadapter.EasyAdapter;
|
|||||||
public interface LibraryView extends BaseView {
|
public interface LibraryView extends BaseView {
|
||||||
|
|
||||||
void setAdapter(EasyAdapter mangas);
|
void setAdapter(EasyAdapter mangas);
|
||||||
|
void setMangaClickListener();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user