Fix reader state restoration
This commit is contained in:
7
.idea/misc.xml
generated
7
.idea/misc.xml
generated
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user