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) }