Skip to content

Commit d335bde

Browse files
mickael-menuqnga
andauthoredApr 16, 2024··
Remove completion from Navigator APIs (#488)
Co-authored-by: qnga <[email protected]>
1 parent 27d64b1 commit d335bde

File tree

11 files changed

+57
-62
lines changed

11 files changed

+57
-62
lines changed
 

‎CHANGELOG.md

+8-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,14 @@ All notable changes to this project will be documented in this file. Take a look
44

55
**Warning:** Features marked as *experimental* may change or be removed in a future release without notice. Use with caution.
66

7-
<!-- ## [Unreleased] -->
7+
## [Unreleased]
8+
9+
### Deprecated
10+
11+
#### Navigator
12+
13+
* All the `completion` parameters of the `Navigator` APIs are removed.
14+
815

916
## [3.0.0-alpha.2]
1017

‎readium/navigator-media2/src/main/java/org/readium/navigator/media2/MediaNavigator.kt

+8-11
Original file line numberDiff line numberDiff line change
@@ -371,28 +371,25 @@ public class MediaNavigator private constructor(
371371
* Compatibility
372372
*/
373373

374-
private fun launchAndRun(runnable: suspend () -> Unit, callback: () -> Unit) =
375-
coroutineScope.launch { runnable() }.invokeOnCompletion { callback() }
376-
377-
override fun go(locator: Locator, animated: Boolean, completion: () -> Unit): Boolean {
378-
launchAndRun({ go(locator) }, completion)
374+
override fun go(locator: Locator, animated: Boolean): Boolean {
375+
coroutineScope.launch { go(locator) }
379376
return true
380377
}
381378

382-
override fun go(link: Link, animated: Boolean, completion: () -> Unit): Boolean {
383-
launchAndRun({ go(link) }, completion)
379+
override fun go(link: Link, animated: Boolean): Boolean {
380+
coroutineScope.launch { go(link) }
384381
return true
385382
}
386383

387384
@Suppress("UNUSED_PARAMETER")
388-
public fun goForward(animated: Boolean, completion: () -> Unit): Boolean {
389-
launchAndRun({ goForward() }, completion)
385+
public fun goForward(animated: Boolean): Boolean {
386+
coroutineScope.launch { goForward() }
390387
return true
391388
}
392389

393390
@Suppress("UNUSED_PARAMETER")
394-
public fun goBackward(animated: Boolean, completion: () -> Unit): Boolean {
395-
launchAndRun({ goBackward() }, completion)
391+
public fun goBackward(animated: Boolean): Boolean {
392+
coroutineScope.launch { goBackward() }
396393
return true
397394
}
398395

‎readium/navigator/src/main/java/org/readium/r2/navigator/Navigator.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,12 @@ public interface Navigator {
4141
/**
4242
* Moves to the position in the publication corresponding to the given [Locator].
4343
*/
44-
public fun go(locator: Locator, animated: Boolean = false, completion: () -> Unit = {}): Boolean
44+
public fun go(locator: Locator, animated: Boolean = false): Boolean
4545

4646
/**
4747
* Moves to the position in the publication targeted by the given link.
4848
*/
49-
public fun go(link: Link, animated: Boolean = false, completion: () -> Unit = {}): Boolean
49+
public fun go(link: Link, animated: Boolean = false): Boolean
5050

5151
public interface Listener {
5252

‎readium/navigator/src/main/java/org/readium/r2/navigator/R2BasicWebView.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ internal open class R2BasicWebView(context: Context, attrs: AttributeSet) : WebV
6565
fun onKey(event: KeyEvent): Boolean = false
6666
fun onDecorationActivated(id: DecorationId, group: String, rect: RectF, point: PointF): Boolean = false
6767
fun onProgressionChanged() {}
68-
fun goForward(animated: Boolean = false, completion: () -> Unit = {}): Boolean = false
69-
fun goBackward(animated: Boolean = false, completion: () -> Unit = {}): Boolean = false
68+
fun goForward(animated: Boolean = false): Boolean = false
69+
fun goBackward(animated: Boolean = false): Boolean = false
7070

7171
/**
7272
* Returns the custom [ActionMode.Callback] to be used with the text selection menu.

‎readium/navigator/src/main/java/org/readium/r2/navigator/VisualNavigator.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -161,10 +161,10 @@ public interface OverflowableNavigator : VisualNavigator {
161161
/**
162162
* Moves to the next content portion (eg. page) in the reading progression direction.
163163
*/
164-
public fun goForward(animated: Boolean = false, completion: () -> Unit = {}): Boolean
164+
public fun goForward(animated: Boolean = false): Boolean
165165

166166
/**
167167
* Moves to the previous content portion (eg. page) in the reading progression direction.
168168
*/
169-
public fun goBackward(animated: Boolean = false, completion: () -> Unit = {}): Boolean
169+
public fun goBackward(animated: Boolean = false): Boolean
170170
}

‎readium/navigator/src/main/java/org/readium/r2/navigator/epub/EpubNavigatorFragment.kt

+9-13
Original file line numberDiff line numberDiff line change
@@ -591,7 +591,7 @@ public class EpubNavigatorFragment internal constructor(
591591
}
592592

593593
@OptIn(DelicateReadiumApi::class)
594-
override fun go(locator: Locator, animated: Boolean, completion: () -> Unit): Boolean {
594+
override fun go(locator: Locator, animated: Boolean): Boolean {
595595
@Suppress("NAME_SHADOWING")
596596
val locator = publication.normalizeLocator(locator)
597597

@@ -636,9 +636,9 @@ public class EpubNavigatorFragment internal constructor(
636636
return true
637637
}
638638

639-
override fun go(link: Link, animated: Boolean, completion: () -> Unit): Boolean {
639+
override fun go(link: Link, animated: Boolean): Boolean {
640640
val locator = publication.locatorFromLink(link) ?: return false
641-
return go(locator, animated, completion)
641+
return go(locator, animated)
642642
}
643643

644644
private fun run(commands: List<RunScriptCommand>) {
@@ -846,9 +846,9 @@ public class EpubNavigatorFragment internal constructor(
846846
?.let { publication.get(it) }
847847
}
848848

849-
override fun goForward(animated: Boolean, completion: () -> Unit): Boolean {
849+
override fun goForward(animated: Boolean): Boolean {
850850
if (publication.metadata.presentation.layout == EpubLayout.FIXED) {
851-
return goToNextResource(jump = false, animated = animated, completion)
851+
return goToNextResource(jump = false, animated = animated)
852852
}
853853

854854
val webView = currentReflowablePageFragment?.webView ?: return false
@@ -860,13 +860,12 @@ public class EpubNavigatorFragment internal constructor(
860860
ReadingProgression.RTL ->
861861
webView.scrollLeft(animated)
862862
}
863-
lifecycleScope.launch { completion() }
864863
return true
865864
}
866865

867-
override fun goBackward(animated: Boolean, completion: () -> Unit): Boolean {
866+
override fun goBackward(animated: Boolean): Boolean {
868867
if (publication.metadata.presentation.layout == EpubLayout.FIXED) {
869-
return goToPreviousResource(jump = false, animated = animated, completion)
868+
return goToPreviousResource(jump = false, animated = animated)
870869
}
871870

872871
val webView = currentReflowablePageFragment?.webView ?: return false
@@ -878,11 +877,10 @@ public class EpubNavigatorFragment internal constructor(
878877
ReadingProgression.RTL ->
879878
webView.scrollRight(animated)
880879
}
881-
lifecycleScope.launch { completion() }
882880
return true
883881
}
884882

885-
private fun goToNextResource(jump: Boolean, animated: Boolean, completion: () -> Unit = {}): Boolean {
883+
private fun goToNextResource(jump: Boolean, animated: Boolean): Boolean {
886884
val adapter = resourcePager.adapter ?: return false
887885
if (resourcePager.currentItem >= adapter.count - 1) {
888886
return false
@@ -902,11 +900,10 @@ public class EpubNavigatorFragment internal constructor(
902900
}
903901
}
904902

905-
viewLifecycleOwner.lifecycleScope.launch { completion() }
906903
return true
907904
}
908905

909-
private fun goToPreviousResource(jump: Boolean, animated: Boolean, completion: () -> Unit = {}): Boolean {
906+
private fun goToPreviousResource(jump: Boolean, animated: Boolean): Boolean {
910907
if (resourcePager.currentItem <= 0) {
911908
return false
912909
}
@@ -925,7 +922,6 @@ public class EpubNavigatorFragment internal constructor(
925922
}
926923
}
927924

928-
viewLifecycleOwner.lifecycleScope.launch { completion() }
929925
return true
930926
}
931927

‎readium/navigator/src/main/java/org/readium/r2/navigator/image/ImageNavigatorFragment.kt

+5-5
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ public class ImageNavigatorFragment private constructor(
183183
_currentLocator.value = locator
184184
}
185185

186-
override fun go(locator: Locator, animated: Boolean, completion: () -> Unit): Boolean {
186+
override fun go(locator: Locator, animated: Boolean): Boolean {
187187
@Suppress("NAME_SHADOWING")
188188
val locator = publication.normalizeLocator(locator)
189189

@@ -197,12 +197,12 @@ public class ImageNavigatorFragment private constructor(
197197
return true
198198
}
199199

200-
override fun go(link: Link, animated: Boolean, completion: () -> Unit): Boolean {
200+
override fun go(link: Link, animated: Boolean): Boolean {
201201
val locator = publication.locatorFromLink(link) ?: return false
202-
return go(locator, animated, completion)
202+
return go(locator, animated)
203203
}
204204

205-
override fun goForward(animated: Boolean, completion: () -> Unit): Boolean {
205+
override fun goForward(animated: Boolean): Boolean {
206206
val current = resourcePager.currentItem
207207
if (requireActivity().layoutDirectionIsRTL()) {
208208
// The view has RTL layout
@@ -216,7 +216,7 @@ public class ImageNavigatorFragment private constructor(
216216
return current != resourcePager.currentItem
217217
}
218218

219-
override fun goBackward(animated: Boolean, completion: () -> Unit): Boolean {
219+
override fun goBackward(animated: Boolean): Boolean {
220220
val current = resourcePager.currentItem
221221
if (requireActivity().layoutDirectionIsRTL()) {
222222
// The view has RTL layout

‎readium/navigator/src/main/java/org/readium/r2/navigator/media/MediaSessionNavigator.kt

+5-8
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ public class MediaSessionNavigator(
188188
}
189189

190190
@OptIn(DelicateReadiumApi::class)
191-
override fun go(locator: Locator, animated: Boolean, completion: () -> Unit): Boolean {
191+
override fun go(locator: Locator, animated: Boolean): Boolean {
192192
if (!isActive) return false
193193

194194
@Suppress("NAME_SHADOWING")
@@ -202,30 +202,27 @@ public class MediaSessionNavigator(
202202
putParcelable("locator", locator)
203203
}
204204
)
205-
completion()
206205
return true
207206
}
208207

209-
override fun go(link: Link, animated: Boolean, completion: () -> Unit): Boolean {
208+
override fun go(link: Link, animated: Boolean): Boolean {
210209
val locator = publication.locatorFromLink(link) ?: return false
211-
return go(locator, animated, completion)
210+
return go(locator, animated)
212211
}
213212

214213
@Suppress("UNUSED_PARAMETER")
215-
public fun goForward(animated: Boolean = true, completion: () -> Unit = {}): Boolean {
214+
public fun goForward(animated: Boolean = true): Boolean {
216215
if (!isActive) return false
217216

218217
seekRelative(skipForwardInterval)
219-
completion()
220218
return true
221219
}
222220

223221
@Suppress("UNUSED_PARAMETER")
224-
public fun goBackward(animated: Boolean = true, completion: () -> Unit = {}): Boolean {
222+
public fun goBackward(animated: Boolean = true): Boolean {
225223
if (!isActive) return false
226224

227225
seekRelative(-skipBackwardInterval)
228-
completion()
229226
return true
230227
}
231228

‎readium/navigator/src/main/java/org/readium/r2/navigator/pdf/PdfNavigatorFragment.kt

+10-12
Original file line numberDiff line numberDiff line change
@@ -219,32 +219,30 @@ public class PdfNavigatorFragment<S : Configurable.Settings, P : Configurable.Pr
219219

220220
override val currentLocator: StateFlow<Locator> get() = viewModel.currentLocator
221221

222-
override fun go(locator: Locator, animated: Boolean, completion: () -> Unit): Boolean {
222+
override fun go(locator: Locator, animated: Boolean): Boolean {
223223
@Suppress("NAME_SHADOWING")
224224
val locator = publication.normalizeLocator(locator)
225225
listener?.onJumpToLocator(locator)
226-
return goToPageIndex(locator.locations.pageIndex, animated, completion)
226+
return goToPageIndex(locator.locations.pageIndex, animated)
227227
}
228228

229-
override fun go(link: Link, animated: Boolean, completion: () -> Unit): Boolean {
229+
override fun go(link: Link, animated: Boolean): Boolean {
230230
val locator = publication.locatorFromLink(link) ?: return false
231-
return go(locator, animated, completion)
231+
return go(locator, animated)
232232
}
233233

234-
override fun goForward(animated: Boolean, completion: () -> Unit): Boolean {
234+
override fun goForward(animated: Boolean): Boolean {
235235
val pageIndex = currentLocator.value.locations.pageIndex + 1
236-
return goToPageIndex(pageIndex, animated, completion)
236+
return goToPageIndex(pageIndex, animated)
237237
}
238238

239-
override fun goBackward(animated: Boolean, completion: () -> Unit): Boolean {
239+
override fun goBackward(animated: Boolean): Boolean {
240240
val pageIndex = currentLocator.value.locations.pageIndex - 1
241-
return goToPageIndex(pageIndex, animated, completion)
241+
return goToPageIndex(pageIndex, animated)
242242
}
243243

244-
private fun goToPageIndex(pageIndex: Int, animated: Boolean, completion: () -> Unit): Boolean {
245-
val success = documentFragment.goToPageIndex(pageIndex, animated = animated)
246-
if (success) { completion() }
247-
return success
244+
private fun goToPageIndex(pageIndex: Int, animated: Boolean): Boolean {
245+
return documentFragment.goToPageIndex(pageIndex, animated = animated)
248246
}
249247

250248
// VisualNavigator

‎readium/navigators/media/audio/src/main/java/org/readium/navigator/media/audio/AudioNavigator.kt

+3-3
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ public class AudioNavigator<S : Configurable.Settings, P : Configurable.Preferen
151151
override fun asMedia3Player(): Player =
152152
audioEngine.asPlayer()
153153

154-
override fun go(locator: Locator, animated: Boolean, completion: () -> Unit): Boolean {
154+
override fun go(locator: Locator, animated: Boolean): Boolean {
155155
@Suppress("NAME_SHADOWING")
156156
val locator = publication.normalizeLocator(locator)
157157
val itemIndex = readingOrder.items.indexOfFirst { it.href == locator.href }
@@ -163,9 +163,9 @@ public class AudioNavigator<S : Configurable.Settings, P : Configurable.Preferen
163163
return true
164164
}
165165

166-
override fun go(link: Link, animated: Boolean, completion: () -> Unit): Boolean {
166+
override fun go(link: Link, animated: Boolean): Boolean {
167167
val locator = publication.locatorFromLink(link) ?: return false
168-
return go(locator, animated, completion)
168+
return go(locator, animated)
169169
}
170170

171171
private fun AudioEngine.State.toState(): MediaNavigator.State =

‎readium/navigators/media/tts/src/main/java/org/readium/navigator/media/tts/TtsNavigator.kt

+3-3
Original file line numberDiff line numberDiff line change
@@ -152,14 +152,14 @@ public class TtsNavigator<S : TtsEngine.Settings, P : TtsEngine.Preferences<P>,
152152
override val currentLocator: StateFlow<Locator> =
153153
location.mapStateIn(coroutineScope) { it.tokenLocator ?: it.utteranceLocator }
154154

155-
override fun go(locator: Locator, animated: Boolean, completion: () -> Unit): Boolean {
155+
override fun go(locator: Locator, animated: Boolean): Boolean {
156156
player.go(publication.normalizeLocator(locator))
157157
return true
158158
}
159159

160-
override fun go(link: Link, animated: Boolean, completion: () -> Unit): Boolean {
160+
override fun go(link: Link, animated: Boolean): Boolean {
161161
val locator = publication.locatorFromLink(link) ?: return false
162-
return go(locator, animated, completion)
162+
return go(locator, animated)
163163
}
164164

165165
override val settings: StateFlow<S> =

0 commit comments

Comments
 (0)
Please sign in to comment.