|
|
|
@ -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
|
|
|
|
|