diff --git a/app/build.gradle b/app/build.gradle index 864ea64b..23f090cf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -21,7 +21,7 @@ android { minSdkVersion 16 targetSdkVersion 30 versionCode 58 - versionName "5.0-hotfix2" + versionName "5.0-hotfix3" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true } @@ -99,7 +99,7 @@ dependencies { implementation 'com.andrognito.patternlockview:patternlockview:1.0.0' //implementation 'com.andrognito.pinlockview:pinlockview:2.1.0' implementation "ru.noties.markwon:core:3.1.0" - implementation ("xyz.quaver:libpupil:1.5") { + implementation ("xyz.quaver:libpupil:1.6") { exclude group: 'org.jetbrains.kotlinx', module: 'kotlinx-serialization-core-jvm' } implementation "xyz.quaver:documentfilex:0.2.15" 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 8123dcaa..6348dbb4 100644 --- a/app/src/main/java/xyz/quaver/pupil/services/DownloadService.kt +++ b/app/src/main/java/xyz/quaver/pupil/services/DownloadService.kt @@ -215,7 +215,7 @@ class DownloadService : Service() { val ext = call.request().url().encodedPath().split('.').last() kotlin.runCatching { - val image = response.body()?.use { it.bytes() } ?: throw Exception() + val image = response.also { if (it.code() != 200) throw IOException() }.body()?.use { it.bytes() } ?: throw Exception() CoroutineScope(Dispatchers.IO).launch { kotlin.runCatching { diff --git a/app/src/main/java/xyz/quaver/pupil/ui/LockActivity.kt b/app/src/main/java/xyz/quaver/pupil/ui/LockActivity.kt index e805bb0f..b02fcee0 100644 --- a/app/src/main/java/xyz/quaver/pupil/ui/LockActivity.kt +++ b/app/src/main/java/xyz/quaver/pupil/ui/LockActivity.kt @@ -39,10 +39,10 @@ import xyz.quaver.pupil.util.Lock import xyz.quaver.pupil.util.LockManager import xyz.quaver.pupil.util.Preferences +private var lastUnlocked = 0L class LockActivity : AppCompatActivity() { private lateinit var lockManager: LockManager - private var lastUnlocked = 0L private var mode: String? = null private val patternLockFragment = PatternLockFragment().apply { diff --git a/app/src/main/java/xyz/quaver/pupil/ui/fragment/ManageFavoritesFragment.kt b/app/src/main/java/xyz/quaver/pupil/ui/fragment/ManageFavoritesFragment.kt index e190e22c..cba64dfa 100644 --- a/app/src/main/java/xyz/quaver/pupil/ui/fragment/ManageFavoritesFragment.kt +++ b/app/src/main/java/xyz/quaver/pupil/ui/fragment/ManageFavoritesFragment.kt @@ -62,6 +62,11 @@ class ManageFavoritesFragment : PreferenceFragmentCompat() { } override fun onResponse(call: Call, response: Response) { + if (response.code() != 200) { + response.close() + return + } + Intent(Intent.ACTION_SEND).apply { type = "text/plain" putExtra(Intent.EXTRA_TEXT, response.body()?.use { it.string() }?.replace("\n", "")) diff --git a/app/src/main/java/xyz/quaver/pupil/util/download/DownloadWorker.kt b/app/src/main/java/xyz/quaver/pupil/util/download/DownloadWorker.kt index 2cb02ed4..edd22251 100644 --- a/app/src/main/java/xyz/quaver/pupil/util/download/DownloadWorker.kt +++ b/app/src/main/java/xyz/quaver/pupil/util/download/DownloadWorker.kt @@ -277,6 +277,12 @@ class DownloadWorker private constructor(context: Context) : ContextWrapper(cont } override fun onResponse(call: Call, response: Response) { + if (response.code() != 200) { + response.close() + onFailure(call, IOException()) + return + } + val ext = call.request().url().encodedPath().split('.').last() try { diff --git a/app/src/main/java/xyz/quaver/pupil/util/downloader/Cache.kt b/app/src/main/java/xyz/quaver/pupil/util/downloader/Cache.kt index 87267404..94f15db4 100644 --- a/app/src/main/java/xyz/quaver/pupil/util/downloader/Cache.kt +++ b/app/src/main/java/xyz/quaver/pupil/util/downloader/Cache.kt @@ -37,6 +37,7 @@ import xyz.quaver.io.FileX import xyz.quaver.io.util.* import xyz.quaver.pupil.client import xyz.quaver.pupil.util.Preferences +import java.io.IOException @Serializable data class Metadata( @@ -138,7 +139,7 @@ class Cache private constructor(context: Context, val galleryID: Int) : ContextW .url(it) .build() - client.newCall(request).execute().body()?.use { it.bytes() } + client.newCall(request).execute().also { if (it.code() != 200) throw IOException() }.body()?.use { it.bytes() } }.getOrNull()?.also { kotlin.run { cacheFolder.getChild(".thumbnail").writeBytes(it) } } diff --git a/app/src/main/java/xyz/quaver/pupil/util/update.kt b/app/src/main/java/xyz/quaver/pupil/util/update.kt index 3d3978ba..f269a326 100644 --- a/app/src/main/java/xyz/quaver/pupil/util/update.kt +++ b/app/src/main/java/xyz/quaver/pupil/util/update.kt @@ -214,7 +214,7 @@ fun restore(url: String, onFailure: ((Throwable) -> Unit)? = null, onSuccess: (( override fun onResponse(call: Call, response: Response) { kotlin.runCatching { - Json.decodeFromString>(response.body().use { it?.string() } ?: "[]").let { + Json.decodeFromString>(response.also { if (it.code() != 200) throw IOException() }.body().use { it?.string() } ?: "[]").let { favorites.addAll(it) onSuccess?.invoke(it) }