@@ -135,9 +135,7 @@ class R2EpubPageFragment : Fragment() {
135135 // To make sure the page is properly laid out before jumping to the target locator,
136136 // we execute a dummy JavaScript and wait for the callback result.
137137 webView.evaluateJavascript(" true" ) {
138- viewLifecycleOwner.lifecycleScope.launchWhenCreated {
139- onLoadPage()
140- }
138+ onLoadPage()
141139 }
142140 }
143141
@@ -274,29 +272,30 @@ class R2EpubPageFragment : Fragment() {
274272 return tag == currentFragment.tag
275273 }
276274
277- private suspend fun onLoadPage () {
275+ private fun onLoadPage () {
278276 if (! isLoading) return
279277 isLoading = false
280278
281- val webView = requireNotNull(webView)
282- webView.visibility = View .VISIBLE
279+ if (view == null ) return
283280
284- if (isCurrentResource) {
285- val epubNavigator = requireNotNull(webView.navigator as ? EpubNavigatorFragment )
286- val locator = epubNavigator.pendingLocator
287- epubNavigator.pendingLocator = null
288- if (locator != null ) {
289- loadLocator(locator)
290- }
281+ viewLifecycleOwner.lifecycleScope.launchWhenCreated {
282+ val webView = requireNotNull(webView)
283+ webView.visibility = View .VISIBLE
284+
285+ if (isCurrentResource) {
286+ val epubNavigator = requireNotNull(webView.navigator as ? EpubNavigatorFragment )
287+ val locator = epubNavigator.pendingLocator
288+ epubNavigator.pendingLocator = null
289+ if (locator != null ) {
290+ loadLocator(webView, epubNavigator.readingProgression, locator)
291+ }
291292
292- webView.listener.onPageLoaded()
293+ webView.listener.onPageLoaded()
294+ }
293295 }
294296 }
295297
296- private suspend fun loadLocator (locator : Locator ) {
297- val webView = requireNotNull(webView)
298- val epubNavigator = requireNotNull(webView.navigator as ? EpubNavigatorFragment )
299-
298+ private suspend fun loadLocator (webView : R2WebView , readingProgression : ReadingProgression , locator : Locator ) {
300299 val text = locator.text
301300 if (text.highlight != null ) {
302301 if (webView.scrollToText(text)) {
@@ -314,7 +313,7 @@ class R2EpubPageFragment : Fragment() {
314313 // We need to reverse the progression with RTL because the Web View
315314 // always scrolls from left to right, no matter the reading direction.
316315 progression =
317- if (webView.scrollMode || epubNavigator. readingProgression == ReadingProgression .LTR ) progression
316+ if (webView.scrollMode || readingProgression == ReadingProgression .LTR ) progression
318317 else 1 - progression
319318
320319 if (webView.scrollMode) {
@@ -324,7 +323,7 @@ class R2EpubPageFragment : Fragment() {
324323 // Figure out the target web view "page" from the requested
325324 // progression.
326325 var item = (progression * webView.numPages).roundToInt()
327- if (epubNavigator. readingProgression == ReadingProgression .RTL && item > 0 ) {
326+ if (readingProgression == ReadingProgression .RTL && item > 0 ) {
328327 item - = 1
329328 }
330329 webView.setCurrentItem(item, false )
0 commit comments