@@ -135,9 +135,7 @@ class R2EpubPageFragment : Fragment() {
135
135
// To make sure the page is properly laid out before jumping to the target locator,
136
136
// we execute a dummy JavaScript and wait for the callback result.
137
137
webView.evaluateJavascript(" true" ) {
138
- viewLifecycleOwner.lifecycleScope.launchWhenCreated {
139
- onLoadPage()
140
- }
138
+ onLoadPage()
141
139
}
142
140
}
143
141
@@ -274,29 +272,30 @@ class R2EpubPageFragment : Fragment() {
274
272
return tag == currentFragment.tag
275
273
}
276
274
277
- private suspend fun onLoadPage () {
275
+ private fun onLoadPage () {
278
276
if (! isLoading) return
279
277
isLoading = false
280
278
281
- val webView = requireNotNull(webView)
282
- webView.visibility = View .VISIBLE
279
+ if (view == null ) return
283
280
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
+ }
291
292
292
- webView.listener.onPageLoaded()
293
+ webView.listener.onPageLoaded()
294
+ }
293
295
}
294
296
}
295
297
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 ) {
300
299
val text = locator.text
301
300
if (text.highlight != null ) {
302
301
if (webView.scrollToText(text)) {
@@ -314,7 +313,7 @@ class R2EpubPageFragment : Fragment() {
314
313
// We need to reverse the progression with RTL because the Web View
315
314
// always scrolls from left to right, no matter the reading direction.
316
315
progression =
317
- if (webView.scrollMode || epubNavigator. readingProgression == ReadingProgression .LTR ) progression
316
+ if (webView.scrollMode || readingProgression == ReadingProgression .LTR ) progression
318
317
else 1 - progression
319
318
320
319
if (webView.scrollMode) {
@@ -324,7 +323,7 @@ class R2EpubPageFragment : Fragment() {
324
323
// Figure out the target web view "page" from the requested
325
324
// progression.
326
325
var item = (progression * webView.numPages).roundToInt()
327
- if (epubNavigator. readingProgression == ReadingProgression .RTL && item > 0 ) {
326
+ if (readingProgression == ReadingProgression .RTL && item > 0 ) {
328
327
item - = 1
329
328
}
330
329
webView.setCurrentItem(item, false )
0 commit comments