From 5e61912f75f357d03601c130c48f9c78652f9ebc Mon Sep 17 00:00:00 2001 From: tom5079 Date: Thu, 16 May 2019 13:08:46 +0900 Subject: [PATCH] Search bug fixed --- app/build.gradle | 4 +-- .../java/xyz/quaver/pupil/MainActivity.kt | 2 ++ build.gradle | 2 +- .../main/java/xyz/quaver/hitomi/results.kt | 26 ++++++------------- .../test/java/xyz/quaver/hitomi/UnitTest.kt | 7 +++-- 5 files changed, 16 insertions(+), 25 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 64729574..ea00135a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ android { applicationId "xyz.quaver.pupil" minSdkVersion 16 targetSdkVersion 28 - versionCode 4 - versionName "1.3" + versionCode 5 + versionName "1.4" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { diff --git a/app/src/main/java/xyz/quaver/pupil/MainActivity.kt b/app/src/main/java/xyz/quaver/pupil/MainActivity.kt index 194bfb15..0d97193c 100644 --- a/app/src/main/java/xyz/quaver/pupil/MainActivity.kt +++ b/app/src/main/java/xyz/quaver/pupil/MainActivity.kt @@ -6,6 +6,7 @@ import android.os.Bundle import android.preference.PreferenceManager import android.text.* import android.text.style.AlignmentSpan +import android.util.Log import android.view.View import android.view.WindowManager import androidx.appcompat.app.AlertDialog @@ -357,6 +358,7 @@ class MainActivity : AppCompatActivity() { cancelFetch() clearGalleries() fetchGalleries(query) + loadBlocks() } } } diff --git a/build.gradle b/build.gradle index f65a220a..9b93e54a 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.4.0' + classpath 'com.android.tools.build:gradle:3.4.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version" diff --git a/libpupil/src/main/java/xyz/quaver/hitomi/results.kt b/libpupil/src/main/java/xyz/quaver/hitomi/results.kt index 44895bbe..2e3084ea 100644 --- a/libpupil/src/main/java/xyz/quaver/hitomi/results.kt +++ b/libpupil/src/main/java/xyz/quaver/hitomi/results.kt @@ -15,7 +15,6 @@ fun doSearch(query: String) : List { .toLowerCase() .split(Regex("\\s+")) - val results = ArrayList() val positiveTerms = LinkedList() val negativeTerms = LinkedList() @@ -26,33 +25,24 @@ fun doSearch(query: String) : List { positiveTerms.push(term) } - //first results - results.addAll( - if (positiveTerms.isEmpty()) - getGalleryIDsFromNozomi(null, "index", "all") - else - getGalleryIDsForQuery(positiveTerms.poll()) - ) + var results = when { + positiveTerms.isEmpty() -> getGalleryIDsFromNozomi(null, "index", "all") + else -> getGalleryIDsForQuery(positiveTerms.poll()) + } runBlocking { @Synchronized fun filterPositive(newResults: List) { - results.filter { newResults.binarySearch(it) >= 0 }.let { - results.clear() - results.addAll(it) - } + results = results.filter { newResults.binarySearch(it) >= 0 } } @Synchronized fun filterNegative(newResults: List) { - results.filterNot { newResults.binarySearch(it) >= 0 }.let { - results.clear() - results.addAll(it) - } + results = results.filter { newResults.binarySearch(it) < 0 } } //positive results positiveTerms.map { launch(searchDispatcher) { - filterPositive(getGalleryIDsForQuery(it).reversed()) + filterPositive(getGalleryIDsForQuery(it).sorted()) } }.forEach { it.join() @@ -61,7 +51,7 @@ fun doSearch(query: String) : List { //negative results negativeTerms.map { launch(searchDispatcher) { - filterNegative(getGalleryIDsForQuery(it).reversed()) + filterNegative(getGalleryIDsForQuery(it).sorted()) } }.forEach { it.join() diff --git a/libpupil/src/test/java/xyz/quaver/hitomi/UnitTest.kt b/libpupil/src/test/java/xyz/quaver/hitomi/UnitTest.kt index 7f13d067..e32567f5 100644 --- a/libpupil/src/test/java/xyz/quaver/hitomi/UnitTest.kt +++ b/libpupil/src/test/java/xyz/quaver/hitomi/UnitTest.kt @@ -21,10 +21,9 @@ class UnitTest { @Test fun test_search() { - val ids = getGalleryIDsForQuery("female:loli").reversed() + val ids = getGalleryIDsForQuery("language:korean").reversed() - for (i in 0..100) - println(ids[i]) + print(ids.size) } @Test @@ -36,7 +35,7 @@ class UnitTest { @Test fun test_doSearch() { - val r = doSearch("type:artistcg language:korean female:loli female:mind_break -female:anal") + val r = doSearch("female:loli female:bondage language:korean -male:yaoi -male:guro -female:guro") print(r.size) }