|  | @@ -228,12 +228,14 @@ class ReaderPresenter : BasePresenter<ReaderActivity>() {
 | 
	
		
			
				|  |  |       * strategy set for the manga.
 | 
	
		
			
				|  |  |       *
 | 
	
		
			
				|  |  |       * @param chapter the current active chapter.
 | 
	
		
			
				|  |  | +     * @param previousChapterAmount the desired number of chapters preceding the current active chapter (Default: 1).
 | 
	
		
			
				|  |  | +     * @param nextChapterAmount the desired number of chapters succeeding the current active chapter (Default: 1).
 | 
	
		
			
				|  |  |       */
 | 
	
		
			
				|  |  | -    private fun getAdjacentChaptersStrategy(chapter: ReaderChapter) = when (manga.sorting) {
 | 
	
		
			
				|  |  | +    private fun getAdjacentChaptersStrategy(chapter: ReaderChapter, previousChapterAmount: Int = 1, nextChapterAmount: Int = 1) = when (manga.sorting) {
 | 
	
		
			
				|  |  |          Manga.SORTING_SOURCE -> {
 | 
	
		
			
				|  |  |              val currChapterIndex = chapterList.indexOfFirst { chapter.id == it.id }
 | 
	
		
			
				|  |  | -            val nextChapter = chapterList.getOrNull(currChapterIndex + 1)
 | 
	
		
			
				|  |  | -            val prevChapter = chapterList.getOrNull(currChapterIndex - 1)
 | 
	
		
			
				|  |  | +            val nextChapter = chapterList.getOrNull(currChapterIndex + nextChapterAmount)
 | 
	
		
			
				|  |  | +            val prevChapter = chapterList.getOrNull(currChapterIndex - previousChapterAmount)
 | 
	
		
			
				|  |  |              Pair(prevChapter, nextChapter)
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          Manga.SORTING_NUMBER -> {
 | 
	
	
		
			
				|  | @@ -241,18 +243,18 @@ class ReaderPresenter : BasePresenter<ReaderActivity>() {
 | 
	
		
			
				|  |  |              val chapterNumber = chapter.chapter_number
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              var prevChapter: ReaderChapter? = null
 | 
	
		
			
				|  |  | -            for (i in (currChapterIndex - 1) downTo 0) {
 | 
	
		
			
				|  |  | +            for (i in (currChapterIndex - previousChapterAmount) downTo 0) {
 | 
	
		
			
				|  |  |                  val c = chapterList[i]
 | 
	
		
			
				|  |  | -                if (c.chapter_number < chapterNumber && c.chapter_number >= chapterNumber - 1) {
 | 
	
		
			
				|  |  | +                if (c.chapter_number < chapterNumber && c.chapter_number >= chapterNumber - previousChapterAmount) {
 | 
	
		
			
				|  |  |                      prevChapter = c
 | 
	
		
			
				|  |  |                      break
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              var nextChapter: ReaderChapter? = null
 | 
	
		
			
				|  |  | -            for (i in (currChapterIndex + 1) until chapterList.size) {
 | 
	
		
			
				|  |  | +            for (i in (currChapterIndex + nextChapterAmount) until chapterList.size) {
 | 
	
		
			
				|  |  |                  val c = chapterList[i]
 | 
	
		
			
				|  |  | -                if (c.chapter_number > chapterNumber && c.chapter_number <= chapterNumber + 1) {
 | 
	
		
			
				|  |  | +                if (c.chapter_number > chapterNumber && c.chapter_number <= chapterNumber + nextChapterAmount) {
 | 
	
		
			
				|  |  |                      nextChapter = c
 | 
	
		
			
				|  |  |                      break
 | 
	
		
			
				|  |  |                  }
 | 
	
	
		
			
				|  | @@ -344,7 +346,6 @@ class ReaderPresenter : BasePresenter<ReaderActivity>() {
 | 
	
		
			
				|  |  |      fun onChapterLeft() {
 | 
	
		
			
				|  |  |          // Reference these locally because they are needed later from another thread.
 | 
	
		
			
				|  |  |          val chapter = chapter
 | 
	
		
			
				|  |  | -        val prevChapter = prevChapter
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          val pages = chapter.pages ?: return
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -355,21 +356,21 @@ class ReaderPresenter : BasePresenter<ReaderActivity>() {
 | 
	
		
			
				|  |  |                          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) }
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                    // Cache current page list progress for online chapters to allow a faster reopen
 | 
	
		
			
				|  |  |                      if (chapter.read) {
 | 
	
		
			
				|  |  | -                        // Check if remove after read is selected by user
 | 
	
		
			
				|  |  | -                        if (prefs.removeAfterRead()) {
 | 
	
		
			
				|  |  | -                            if (prefs.removeAfterReadPrevious() ) {
 | 
	
		
			
				|  |  | -                                if (prevChapter != null) {
 | 
	
		
			
				|  |  | -                                    deleteChapter(prevChapter, manga)
 | 
	
		
			
				|  |  | -                                }
 | 
	
		
			
				|  |  | -                            } else {
 | 
	
		
			
				|  |  | -                                deleteChapter(chapter, manga)
 | 
	
		
			
				|  |  | -                            }
 | 
	
		
			
				|  |  | +                        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) }
 | 
	
		
			
				|  |  |                          }
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |  
 |