package org.bookdash.android.presentation.downloads;
import org.bookdash.android.data.book.BookService;
import org.bookdash.android.data.book.DownloadService;
import org.bookdash.android.data.tracking.Analytics;
import org.bookdash.android.domain.model.firebase.FireBookDetails;
import org.bookdash.android.presentation.base.BasePresenter;
import java.util.List;
import rx.Scheduler;
import rx.Subscriber;
class DownloadsPresenter extends BasePresenter<DownloadsContract.View> implements DownloadsContract.Presenter {
private final BookService bookService;
private final Scheduler ioScheduler, mainScheduler, computationScheduler;
private final DownloadService downloadService;
private final Analytics analytics;
DownloadsPresenter(BookService bookService, DownloadService downloadService, Analytics analytics, Scheduler io,
Scheduler main, Scheduler compScheduler) {
this.bookService = bookService;
this.ioScheduler = io;
this.mainScheduler = main;
this.computationScheduler = compScheduler;
this.downloadService = downloadService;
this.analytics = analytics;
}
public void loadListDownloads() {
getView().showLoading(true);
addSubscription(bookService.getDownloadedBooks().subscribeOn(ioScheduler).observeOn(mainScheduler)
.subscribe(new Subscriber<List<FireBookDetails>>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
getView().showErrorScreen(true, e.getMessage(), true);
getView().showLoading(false);
}
@Override
public void onNext(List<FireBookDetails> books) {
getView().showLoading(false);
if (books.isEmpty() || books.size() == 0) {
getView().showNoBooksDownloadedMessage();
return;
}
getView().showDownloadedBooks(books);
}
}));
}
@Override
public void deleteDownload(final FireBookDetails bookDetail) {
getView().showLoading(true);
addSubscription(
downloadService.deleteDownload(bookDetail).subscribeOn(computationScheduler).observeOn(mainScheduler)
.subscribe(new Subscriber<Boolean>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
analytics.trackDeleteBookFailed(bookDetail, e.getMessage());
getView().showLoading(false);
getView().showSnackBarError(e.getMessage());
}
@Override
public void onNext(Boolean aBoolean) {
analytics.trackDeleteBook(bookDetail);
loadListDownloads();
}
}));
}
}