Fixed infinite loading when there's no result

This commit is contained in:
Pupil
2020-02-16 22:18:31 +09:00
parent bb6fadc182
commit 98d1f88579
4 changed files with 25 additions and 29 deletions

View File

@@ -20,7 +20,7 @@ android {
minSdkVersion 16
targetSdkVersion 29
versionCode 42
versionName "4.6-beta3"
versionName "4.6-beta4"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
multiDexEnabled true
vectorDrawables.useSupportLibrary = true

View File

@@ -1 +1 @@
[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":42,"versionName":"4.6-beta3","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}]
[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":42,"versionName":"4.6-beta4","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}]

View File

@@ -937,26 +937,26 @@ class MainActivity : AppCompatActivity() {
when(sortMode) {
SortMode.POPULAR -> getGalleryIDsFromNozomi(null, "popular", "all")
else -> getGalleryIDsFromNozomi(null, "index", "all")
}.apply {
totalItems = size
}.also {
totalItems = it.size
}
}
else -> doSearch("$defaultQuery $query", sortMode == SortMode.POPULAR).apply {
totalItems = size
else -> doSearch("$defaultQuery $query", sortMode == SortMode.POPULAR).also {
totalItems = it.size
}
}
}
Mode.HISTORY -> {
when {
query.isEmpty() -> {
histories.toList().apply {
totalItems = size
histories.toList().also {
totalItems = it.size
}
}
else -> {
val result = doSearch(query).sorted()
histories.filter { result.binarySearch(it) >= 0 }.apply {
totalItems = size
histories.filter { result.binarySearch(it) >= 0 }.also {
totalItems = it.size
}
}
}
@@ -969,26 +969,26 @@ class MainActivity : AppCompatActivity() {
} ?: emptyList()
when {
query.isEmpty() -> downloads.apply {
totalItems = size
query.isEmpty() -> downloads.also {
totalItems = it.size
}
else -> {
val result = doSearch(query).sorted()
downloads.filter { result.binarySearch(it) >= 0 }.apply {
totalItems = size
downloads.filter { result.binarySearch(it) >= 0 }.also {
totalItems = it.size
}
}
}
}
Mode.FAVORITE -> {
when {
query.isEmpty() -> favorites.toList().apply {
totalItems = size
query.isEmpty() -> favorites.toList().also {
totalItems = it.size
}
else -> {
val result = doSearch(query).sorted()
favorites.filter { result.binarySearch(it) >= 0 }.apply {
totalItems = size
favorites.filter { result.binarySearch(it) >= 0 }.also {
totalItems = it.size
}
}
}
@@ -1003,10 +1003,13 @@ class MainActivity : AppCompatActivity() {
loadingJob = CoroutineScope(Dispatchers.IO).launch {
val galleryIDs = try {
galleryIDs!!.await()
galleryIDs!!.await().also {
if (it.isEmpty())
throw Exception("No result")
}
} catch (e: Exception) {
if (Fabric.isInitialized())
if (Fabric.isInitialized() && e.message != "No result")
Crashlytics.logException(e)
withContext(Dispatchers.Main) {

View File

@@ -187,14 +187,7 @@ class DownloadWorker private constructor(context: Context) : ContextWrapper(cont
queue.remove(galleryID)
worker[galleryID]?.cancel()
clients[galleryID]?.dispatcher()?.queuedCalls()
?.filter {
@Suppress("UNCHECKED_CAST")
(it.request().tag() as? Pair<Int, Int>)?.first == galleryID
}
?.forEach {
it.cancel()
}
clients[galleryID]?.dispatcher()?.cancelAll()
clients.remove(galleryID)
progress.remove(galleryID)
@@ -283,7 +276,7 @@ class DownloadWorker private constructor(context: Context) : ContextWrapper(cont
for (i in reader.galleryInfo.indices) {
val callback = object : Callback {
override fun onFailure(call: Call, e: IOException) {
if (Fabric.isInitialized())
if (Fabric.isInitialized() && e.message != "Canceled")
Crashlytics.logException(e)
progress[galleryID]?.set(i, Float.NaN)