X-Git-Url: https://git.mdrn.pl/wl-app.git/blobdiff_plain/48b2fe9f7c2dc3d9aeaaa6dbfb27c7da4f3235ff..269195b3729c1bdc22e9053ee4ebca667ea8549d:/Android/app/src/main/java/com/moiseum/wolnelektury/view/settings/SettingsPresenter.java?ds=sidebyside diff --git a/Android/app/src/main/java/com/moiseum/wolnelektury/view/settings/SettingsPresenter.java b/Android/app/src/main/java/com/moiseum/wolnelektury/view/settings/SettingsPresenter.java new file mode 100644 index 0000000..85b6f13 --- /dev/null +++ b/Android/app/src/main/java/com/moiseum/wolnelektury/view/settings/SettingsPresenter.java @@ -0,0 +1,89 @@ +package com.moiseum.wolnelektury.view.settings; + +import android.os.Bundle; + +import com.moiseum.wolnelektury.base.WLApplication; +import com.moiseum.wolnelektury.base.mvp.FragmentPresenter; +import com.moiseum.wolnelektury.connection.downloads.FileCacheUtils; +import com.moiseum.wolnelektury.connection.models.BookModel; +import com.moiseum.wolnelektury.events.LoggedInEvent; +import com.moiseum.wolnelektury.storage.BookStorage; +import com.moiseum.wolnelektury.utils.SharedPreferencesUtils; + +import org.greenrobot.eventbus.EventBus; +import org.greenrobot.eventbus.Subscribe; +import org.greenrobot.eventbus.ThreadMode; + +import java.util.List; + +import io.reactivex.Completable; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.schedulers.Schedulers; + +class SettingsPresenter extends FragmentPresenter { + + private SharedPreferencesUtils preferences = WLApplication.getInstance().getPreferences(); + private BookStorage storage = WLApplication.getInstance().getBookStorage(); + + SettingsPresenter(SettingsView view) { + super(view); + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + EventBus.getDefault().register(this); + } + + @Override + public void onViewCreated(Bundle savedInstanceState) { + super.onViewCreated(savedInstanceState); + getView().initializeSettings(preferences.getNotifications(), preferences.isUserPremium()); + } + + @Override + public void onDestroy() { + super.onDestroy(); + EventBus.getDefault().unregister(this); + } + + @SuppressWarnings("unused") + @Subscribe(threadMode = ThreadMode.MAIN) + public void onLoggedIn(LoggedInEvent event) { + getView().initializeSettings(preferences.getNotifications(), preferences.isUserPremium()); + } + + public void onNotificationsChanged(boolean checked) { + preferences.setNotifications(checked); + } + + public void onDeleteAllClicked() { + getView().showProgressDialog(true); + addDisposable(deleteAllFiles() + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(() -> { + getView().showProgressDialog(false); + getView().showDeletionCompleted(); + }, error -> { + getView().showProgressDialog(false); + getView().showDeletionFailed(error); + }) + ); + } + + private Completable deleteAllFiles() { + return Completable.fromAction(() -> { + List storedBooks = storage.all(); + for (BookModel book : storedBooks) { + if (book.getEbookFileUrl() != null) { + FileCacheUtils.deleteEbookFile(book.getEbookFileUrl()); + } + if (book.getAudioFileUrls() != null) { + FileCacheUtils.deleteAudiobookFiles(book.getAudioFileUrls()); + } + } + storage.removeAll(); + }); + } +}