package com.quran.labs.androidquran.presenter.translation; import android.support.annotation.NonNull; import com.quran.labs.androidquran.common.QuranAyahInfo; import com.quran.labs.androidquran.data.VerseRange; import com.quran.labs.androidquran.database.TranslationsDBAdapter; import com.quran.labs.androidquran.model.translation.TranslationModel; import com.quran.labs.androidquran.util.QuranSettings; import java.util.List; import javax.inject.Inject; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.observers.DisposableSingleObserver; public class InlineTranslationPresenter extends BaseTranslationPresenter<InlineTranslationPresenter.TranslationScreen> { private final QuranSettings quranSettings; @Inject InlineTranslationPresenter(TranslationModel translationModel, TranslationsDBAdapter dbAdapter, QuranSettings quranSettings) { super(translationModel, dbAdapter); this.quranSettings = quranSettings; } public void refresh(VerseRange verseRange) { if (disposable != null) { disposable.dispose(); } disposable = getVerses(false, getTranslations(quranSettings), verseRange) .observeOn(AndroidSchedulers.mainThread()) .subscribeWith(new DisposableSingleObserver<ResultHolder>() { @Override public void onSuccess(ResultHolder result) { if (translationScreen != null) { translationScreen.setVerses(result.translations, result.ayahInformation); } } @Override public void onError(Throwable e) { } }); } public interface TranslationScreen { void setVerses(@NonNull String[] translations, @NonNull List<QuranAyahInfo> verses); } }