Browse Source

Ignore a random crash when closing the reader

len 8 years ago
parent
commit
3ce880bc62
1 changed files with 36 additions and 31 deletions
  1. 36 31
      app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt

+ 36 - 31
app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt

@@ -21,6 +21,7 @@ import rx.Observable
 import rx.Subscription
 import rx.android.schedulers.AndroidSchedulers
 import rx.schedulers.Schedulers
+import timber.log.Timber
 import uy.kohesive.injekt.injectLazy
 import java.io.File
 import java.util.*
@@ -349,38 +350,42 @@ class ReaderPresenter : BasePresenter<ReaderActivity>() {
 
         val pages = chapter.pages ?: return
 
-        Observable
-                .fromCallable {
-                    // Chapters with 1 page don't trigger page changes, so mark them as read.
-                    if (pages.size == 1) {
-                        chapter.read = true
-                    }
-
-                    // Cache current page list progress for online chapters to allow a faster reopen
-                    if (!chapter.isDownloaded) {
-                        source.let { if (it is OnlineSource) it.savePageList(chapter, pages) }
-                    }
-
-                    if (chapter.read) {
-                        val removeAfterReadSlots = prefs.removeAfterReadSlots()
-                        when (removeAfterReadSlots) {
-                        // Setting disabled
-                            -1 -> { /**Empty function**/ }
-                        // Remove current read chapter
-                            0 -> deleteChapter(chapter, manga)
-                        // Remove previous chapter specified by user in settings.
-                            else -> getAdjacentChaptersStrategy(chapter, removeAfterReadSlots)
-                                    .first?.let { deleteChapter(it, manga) }
-                        }
-                    }
-
-                    db.updateChapterProgress(chapter).executeAsBlocking()
-
-                    val history = History.create(chapter).apply { last_read = Date().time }
-                    db.updateHistoryLastRead(history).executeAsBlocking()
+        Observable.fromCallable {
+            // Chapters with 1 page don't trigger page changes, so mark them as read.
+            if (pages.size == 1) {
+                chapter.read = true
+            }
+
+            // Cache current page list progress for online chapters to allow a faster reopen
+            if (!chapter.isDownloaded) {
+                source.let { if (it is OnlineSource) it.savePageList(chapter, pages) }
+            }
+
+            if (chapter.read) {
+                val removeAfterReadSlots = prefs.removeAfterReadSlots()
+                when (removeAfterReadSlots) {
+                // Setting disabled
+                    -1 -> { /**Empty function**/ }
+                // Remove current read chapter
+                    0 -> deleteChapter(chapter, manga)
+                // Remove previous chapter specified by user in settings.
+                    else -> getAdjacentChaptersStrategy(chapter, removeAfterReadSlots)
+                            .first?.let { deleteChapter(it, manga) }
                 }
-                .subscribeOn(Schedulers.io())
-                .subscribe()
+            }
+
+            db.updateChapterProgress(chapter).executeAsBlocking()
+
+            try {
+                val history = History.create(chapter).apply { last_read = Date().time }
+                db.updateHistoryLastRead(history).executeAsBlocking()
+            } catch (error: Exception) {
+                // TODO find out why it crashes
+                Timber.e(error)
+            }
+        }
+        .subscribeOn(Schedulers.io())
+        .subscribe()
     }
 
     /**