Fix reader state restoration

pull/26/head
Koitharu 5 years ago
parent d9d5595bde
commit 4cd0cb04a3

@ -1,5 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="DesignSurface">
<option name="filePathToZoomLevelMap">
<map>
<entry key="../../../../../../layout/custom_preview.xml" value="0.1" />
</map>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK"> <component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" /> <output url="file://$PROJECT_DIR$/build/classes" />
</component> </component>

@ -124,11 +124,6 @@ class ReaderActivity : BaseFullscreenActivity<ActivityReaderBinding>(),
} }
} }
override fun onPause() {
viewModel.saveCurrentState(reader?.getCurrentState())
super.onPause()
}
override fun onCreateOptionsMenu(menu: Menu?): Boolean { override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.opt_reader_top, menu) menuInflater.inflate(R.menu.opt_reader_top, menu)
return super.onCreateOptionsMenu(menu) return super.onCreateOptionsMenu(menu)

@ -18,29 +18,34 @@ abstract class BaseReader<B : ViewBinding> : BaseFragment<B>() {
protected val loader by lazy(LazyThreadSafetyMode.NONE) { protected val loader by lazy(LazyThreadSafetyMode.NONE) {
PageLoader(lifecycleScope, get(), get()) PageLoader(lifecycleScope, get(), get())
} }
private var lastReaderState: ReaderState? = null private var stateToSave: ReaderState? = null
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
lastReaderState = savedInstanceState?.getParcelable(KEY_STATE) ?: lastReaderState var restoredState = savedInstanceState?.getParcelable<ReaderState?>(KEY_STATE)
viewModel.content.observe(viewLifecycleOwner) { viewModel.content.observe(viewLifecycleOwner) {
onPagesChanged(it.pages, lastReaderState ?: it.state) onPagesChanged(it.pages, restoredState ?: it.state)
lastReaderState = null restoredState = null
} }
} }
override fun onPause() {
super.onPause()
viewModel.saveCurrentState(getCurrentState())
}
override fun onDestroyView() { override fun onDestroyView() {
lastReaderState = getCurrentState() stateToSave = getCurrentState()
super.onDestroyView() super.onDestroyView()
} }
override fun onSaveInstanceState(outState: Bundle) { override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState) super.onSaveInstanceState(outState)
getCurrentState()?.let { getCurrentState()?.let {
lastReaderState = it stateToSave = it
} }
outState.putParcelable(KEY_STATE, lastReaderState) outState.putParcelable(KEY_STATE, stateToSave)
} }
override fun onWindowInsetsChanged(insets: Insets) = Unit override fun onWindowInsetsChanged(insets: Insets) = Unit

Loading…
Cancel
Save