diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml
index d9dc4e25..215232f0 100644
--- a/.idea/deploymentTargetDropDown.xml
+++ b/.idea/deploymentTargetDropDown.xml
@@ -1,17 +1,17 @@
-
+
-
+
-
+
-
-
+
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index e9fdb8bd..e244d847 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -38,7 +38,7 @@ android {
minSdkVersion 16
targetSdkVersion 31
versionCode 69
- versionName "5.2.11"
+ versionName "5.2.12"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
}
diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json
index 850699a2..62c82216 100644
--- a/app/release/output-metadata.json
+++ b/app/release/output-metadata.json
@@ -12,7 +12,7 @@
"filters": [],
"attributes": [],
"versionCode": 69,
- "versionName": "5.2.11",
+ "versionName": "5.2.12",
"outputFile": "app-release.apk"
}
],
diff --git a/app/src/main/java/xyz/quaver/pupil/Pupil.kt b/app/src/main/java/xyz/quaver/pupil/Pupil.kt
index 6e81ae53..1fa23cbc 100644
--- a/app/src/main/java/xyz/quaver/pupil/Pupil.kt
+++ b/app/src/main/java/xyz/quaver/pupil/Pupil.kt
@@ -93,7 +93,7 @@ fun reloadWebView() {
webViewReady = false
webViewFailed = false
- evaluationContext.cancelChildren()
+ evaluationContext.cancelChildren(CancellationException("reload"))
runCatching {
URL(
diff --git a/app/src/main/java/xyz/quaver/pupil/hitomi/common.kt b/app/src/main/java/xyz/quaver/pupil/hitomi/common.kt
index d53dc563..58f18023 100644
--- a/app/src/main/java/xyz/quaver/pupil/hitomi/common.kt
+++ b/app/src/main/java/xyz/quaver/pupil/hitomi/common.kt
@@ -56,7 +56,7 @@ suspend fun WebView.evaluate(script: String): String = coroutineScope {
}
} catch (e: CancellationException) {
- continue
+ if (e.message != "reload") result = "null"
}
}
@@ -91,7 +91,7 @@ suspend fun WebView.evaluatePromise(
flow.first().second
}
} catch (e: CancellationException) {
- continue
+ if (e.message != "reload") result = "null"
}
}
diff --git a/app/src/main/java/xyz/quaver/pupil/hitomi/results.kt b/app/src/main/java/xyz/quaver/pupil/hitomi/results.kt
index 112b062e..23f78778 100644
--- a/app/src/main/java/xyz/quaver/pupil/hitomi/results.kt
+++ b/app/src/main/java/xyz/quaver/pupil/hitomi/results.kt
@@ -16,8 +16,8 @@
package xyz.quaver.pupil.hitomi
-import android.util.Log
-import kotlinx.coroutines.*
+import kotlinx.coroutines.async
+import kotlinx.coroutines.coroutineScope
import java.util.*
suspend fun doSearch(query: String, sortByPopularity: Boolean = false) : Set = coroutineScope {
diff --git a/app/src/main/java/xyz/quaver/pupil/hitomi/search.kt b/app/src/main/java/xyz/quaver/pupil/hitomi/search.kt
index 36d76329..0653cded 100644
--- a/app/src/main/java/xyz/quaver/pupil/hitomi/search.kt
+++ b/app/src/main/java/xyz/quaver/pupil/hitomi/search.kt
@@ -16,6 +16,7 @@
package xyz.quaver.pupil.hitomi
+import android.util.Log
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.Serializable
import kotlinx.serialization.decodeFromString
@@ -37,9 +38,22 @@ data class Suggestion(val s: String, val t: Int, val u: String, val n: String)
@OptIn(ExperimentalSerializationApi::class)
suspend fun getSuggestionsForQuery(query: String) : List {
- val result = webView.evaluatePromise("get_suggestions_for_query('$query')")
+ val result = webView.evaluatePromise(
+ "get_suggestions_for_query('$query', ++search_serial)",
+ then = """
+ .then(r => {
+ let [results, results_serial] = r;
+ console.log(results_serial, r, search_serial);
+ if (search_serial !== results_serial) {
+ Callback.onResult(%uid, '[]');
+ } else {
+ Callback.onResult(%uid, JSON.stringify(results));
+ }
+ });
+ """.trimIndent()
+ )
- return Json.decodeFromString?>>(result)[0] ?: return emptyList()
+ return Json.decodeFromString(result) ?: return emptyList()
}
@OptIn(ExperimentalSerializationApi::class)