aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/kotlin/com/pitchedapps/frost/injectors/JsInjector.kt
diff options
context:
space:
mode:
authorAllan Wang <me@allanwang.ca>2017-06-16 14:46:05 -0700
committerAllan Wang <me@allanwang.ca>2017-06-16 14:46:05 -0700
commitbc5b6bd0a55bc81a5d7bd053c1c559b4cf822cb9 (patch)
tree290af53b6933000363c6eef915013a64b1fe1c23 /app/src/main/kotlin/com/pitchedapps/frost/injectors/JsInjector.kt
parent87e7e132a060e235d434a9ef44ae0363d7ef660b (diff)
downloadfrost-bc5b6bd0a55bc81a5d7bd053c1c559b4cf822cb9.tar.gz
frost-bc5b6bd0a55bc81a5d7bd053c1c559b4cf822cb9.tar.bz2
frost-bc5b6bd0a55bc81a5d7bd053c1c559b4cf822cb9.zip
Add a lot more theming
Diffstat (limited to 'app/src/main/kotlin/com/pitchedapps/frost/injectors/JsInjector.kt')
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/injectors/JsInjector.kt12
1 files changed, 9 insertions, 3 deletions
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/injectors/JsInjector.kt b/app/src/main/kotlin/com/pitchedapps/frost/injectors/JsInjector.kt
index 2d8d42e1..0a90c05f 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/injectors/JsInjector.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/injectors/JsInjector.kt
@@ -37,19 +37,25 @@ class JsBuilder {
interface InjectorContract {
fun inject(webView: WebView) = inject(webView, null)
fun inject(webView: WebView, callback: ((String) -> Unit)?)
+ /**
+ * Toggle the injector (usually through Prefs
+ * If false, will fallback to an empty action
+ */
+ fun maybe(enable: Boolean): InjectorContract = if (enable) this else JsActions.EMPTY
}
/**
* Helper method to inject multiple functions simultaneously with a single callback
*/
fun WebView.jsInject(vararg injectors: InjectorContract, callback: ((Array<String>) -> Unit) = {}) {
- val observables = Array(injectors.size, { SingleSubject.create<String>() })
+ val validInjectors = injectors.filter { it != JsActions.EMPTY }
+ val observables = Array(validInjectors.size, { SingleSubject.create<String>() })
Observable.zip<String, Array<String>>(observables.map { it.toObservable() }, { it.map { it.toString() }.toTypedArray() }).subscribeOn(AndroidSchedulers.mainThread()).subscribe({
callback.invoke(it)
})
- (0 until injectors.size).asSequence().forEach {
+ (0 until validInjectors.size).asSequence().forEach {
i ->
- injectors[i].inject(this, { observables[i].onSuccess(it) })
+ validInjectors[i].inject(this, { observables[i].onSuccess(it) })
}
}