mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 08:08:55 +01:00 
			
		
		
		
	@@ -79,8 +79,8 @@ import java.util.Date
 | 
			
		||||
/**
 | 
			
		||||
 * Presenter used by the activity to perform background operations.
 | 
			
		||||
 */
 | 
			
		||||
class ReaderViewModel(
 | 
			
		||||
    private val savedState: SavedStateHandle = SavedStateHandle(),
 | 
			
		||||
class ReaderViewModel @JvmOverloads constructor(
 | 
			
		||||
    private val savedState: SavedStateHandle,
 | 
			
		||||
    private val sourceManager: SourceManager = Injekt.get(),
 | 
			
		||||
    private val downloadManager: DownloadManager = Injekt.get(),
 | 
			
		||||
    private val downloadProvider: DownloadProvider = Injekt.get(),
 | 
			
		||||
@@ -120,6 +120,15 @@ class ReaderViewModel(
 | 
			
		||||
            field = value
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The visible page index of the currently loaded chapter. Used to restore from process kill.
 | 
			
		||||
     */
 | 
			
		||||
    private var chapterPageIndex = savedState.get<Int>("page_index") ?: -1
 | 
			
		||||
        set(value) {
 | 
			
		||||
            savedState["page_index"] = value
 | 
			
		||||
            field = value
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The chapter loader for the loaded manga. It'll be null until [manga] is set.
 | 
			
		||||
     */
 | 
			
		||||
@@ -198,7 +207,10 @@ class ReaderViewModel(
 | 
			
		||||
            .distinctUntilChanged()
 | 
			
		||||
            .filterNotNull()
 | 
			
		||||
            .onEach { currentChapter ->
 | 
			
		||||
                if (!currentChapter.chapter.read) {
 | 
			
		||||
                if (chapterPageIndex >= 0) {
 | 
			
		||||
                    // Restore from SavedState
 | 
			
		||||
                    currentChapter.requestedPage = chapterPageIndex
 | 
			
		||||
                } else if (!currentChapter.chapter.read) {
 | 
			
		||||
                    currentChapter.requestedPage = currentChapter.chapter.last_page_read
 | 
			
		||||
                }
 | 
			
		||||
                chapterId = currentChapter.chapter.id!!
 | 
			
		||||
@@ -490,6 +502,7 @@ class ReaderViewModel(
 | 
			
		||||
            it.copy(currentPage = pageIndex + 1)
 | 
			
		||||
        }
 | 
			
		||||
        readerChapter.requestedPage = pageIndex
 | 
			
		||||
        chapterPageIndex = pageIndex
 | 
			
		||||
 | 
			
		||||
        if (!incognitoMode && page.status != Page.State.ERROR) {
 | 
			
		||||
            readerChapter.chapter.last_page_read = pageIndex
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user