diff --git a/app/build.gradle b/app/build.gradle
index 3748d4b0..fb36175c 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -38,7 +38,7 @@ android {
minSdkVersion 16
targetSdkVersion 31
versionCode 69
- versionName "5.2.13"
+ versionName "5.2.14"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
}
diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json
index 11ad362a..54ea6f69 100644
--- a/app/release/output-metadata.json
+++ b/app/release/output-metadata.json
@@ -12,7 +12,7 @@
"filters": [],
"attributes": [],
"versionCode": 69,
- "versionName": "5.2.13",
+ "versionName": "5.2.14-PREVIEW01",
"outputFile": "app-release.apk"
}
],
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 763fdf5f..4164f493 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -6,8 +6,8 @@
-
-
+
+
diff --git a/app/src/main/java/xyz/quaver/pupil/Pupil.kt b/app/src/main/java/xyz/quaver/pupil/Pupil.kt
index 1fa23cbc..3fbd978d 100644
--- a/app/src/main/java/xyz/quaver/pupil/Pupil.kt
+++ b/app/src/main/java/xyz/quaver/pupil/Pupil.kt
@@ -53,6 +53,7 @@ import xyz.quaver.pupil.util.*
import java.io.File
import java.net.URL
import java.util.*
+import java.util.concurrent.ExecutorService
import java.util.concurrent.Executors
import java.util.concurrent.TimeUnit
import kotlin.reflect.KClass
diff --git a/app/src/main/java/xyz/quaver/pupil/services/DownloadService.kt b/app/src/main/java/xyz/quaver/pupil/services/DownloadService.kt
index 3413c1e0..855cb205 100644
--- a/app/src/main/java/xyz/quaver/pupil/services/DownloadService.kt
+++ b/app/src/main/java/xyz/quaver/pupil/services/DownloadService.kt
@@ -172,18 +172,16 @@ class DownloadService : Service() {
private val interceptor: PupilInterceptor = { chain ->
val request = chain.request()
- if (rateLimitHost.matches(request.url().host()))
- rateLimiter.acquire()
-
var response = chain.proceed(request)
var limit = 5
- if (!response.isSuccessful && limit > 0) {
- Thread.sleep(10000)
- if (rateLimitHost.matches(request.url().host()))
- rateLimiter.acquire()
+ while (!response.isSuccessful) {
+ if (response.code() == 503) {
+ Thread.sleep(200)
+ } else if (--limit > 0)
+ break
+
response = chain.proceed(request)
- limit -= 1
}
response.newBuilder()
@@ -247,6 +245,7 @@ class DownloadService : Service() {
}
}
}.onFailure {
+ it.printStackTrace()
FirebaseCrashlytics.getInstance().recordException(it)
}
}
diff --git a/app/src/main/java/xyz/quaver/pupil/util/downloader/DownloadManager.kt b/app/src/main/java/xyz/quaver/pupil/util/downloader/DownloadManager.kt
index 07f871f6..df559d66 100644
--- a/app/src/main/java/xyz/quaver/pupil/util/downloader/DownloadManager.kt
+++ b/app/src/main/java/xyz/quaver/pupil/util/downloader/DownloadManager.kt
@@ -87,7 +87,7 @@ class DownloadManager private constructor(context: Context) : ContextWrapper(con
@Synchronized
fun isDownloading(galleryID: Int): Boolean {
- val isThisGallery: (Call) -> Boolean = { (it.request().tag() as? DownloadService.Tag)?.galleryID == galleryID }
+ val isThisGallery: (Call) -> Boolean = { !it.isCanceled && (it.request().tag() as? DownloadService.Tag)?.galleryID == galleryID }
return downloadFolderMap.containsKey(galleryID)
&& client.dispatcher().let { it.queuedCalls().any(isThisGallery) || it.runningCalls().any(isThisGallery) }