diff options
author | Allan Wang <me@allanwang.ca> | 2019-01-03 23:10:53 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-01-03 23:10:53 -0500 |
commit | 82f79a7d368caad4068d97051ad8deddd05b4f7e (patch) | |
tree | bfaca5c42f0ffb878c58b21b72731610f4da879a /app/src/main/kotlin/com/pitchedapps/frost/injectors/JsAssets.kt | |
parent | bc6566bc92d073e64a8c51a681ff01ba973d7ee7 (diff) | |
download | frost-82f79a7d368caad4068d97051ad8deddd05b4f7e.tar.gz frost-82f79a7d368caad4068d97051ad8deddd05b4f7e.tar.bz2 frost-82f79a7d368caad4068d97051ad8deddd05b4f7e.zip |
Add asset preloader (#1311)
Diffstat (limited to 'app/src/main/kotlin/com/pitchedapps/frost/injectors/JsAssets.kt')
-rw-r--r-- | app/src/main/kotlin/com/pitchedapps/frost/injectors/JsAssets.kt | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/injectors/JsAssets.kt b/app/src/main/kotlin/com/pitchedapps/frost/injectors/JsAssets.kt index 0dccc751..4b1bde43 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/injectors/JsAssets.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/injectors/JsAssets.kt @@ -16,9 +16,12 @@ */ package com.pitchedapps.frost.injectors +import android.content.Context import android.webkit.WebView import ca.allanwang.kau.kotlin.lazyContext import com.pitchedapps.frost.utils.L +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext import java.io.BufferedReader import java.io.FileNotFoundException import java.util.Locale @@ -33,8 +36,8 @@ enum class JsAssets : InjectorContract { DOCUMENT_WATCHER ; - var file = "${name.toLowerCase(Locale.CANADA)}.js" - var injector = lazyContext { + private val file = "${name.toLowerCase(Locale.CANADA)}.js" + private val injector = lazyContext { try { val content = it.assets.open("js/$file").bufferedReader().use(BufferedReader::readText) JsBuilder().js(content).single(name).build() @@ -44,7 +47,15 @@ enum class JsAssets : InjectorContract { } } - override fun inject(webView: WebView, callback: (() -> Unit)?) { - injector(webView.context).inject(webView, callback) + override fun inject(webView: WebView) = + injector(webView.context).inject(webView) + + companion object { + // Ensures that all non themes and the selected theme are loaded + suspend fun load(context: Context) { + withContext(Dispatchers.IO) { + JsAssets.values().forEach { it.injector.invoke(context) } + } + } } } |