From f4ce911de9292a6215f3dcbb73764dd9f1dc3a0c Mon Sep 17 00:00:00 2001 From: tom5079 Date: Tue, 16 Feb 2021 16:57:23 +0900 Subject: [PATCH 01/18] Pupil-112 [Feature request] Add the ability to manage the maximum parallel downloads Dependency update --- app/build.gradle | 32 +++++++++--------- app/src/main/java/xyz/quaver/pupil/Pupil.kt | 9 ++++- .../xyz/quaver/pupil/ui/dialog/ProxyDialog.kt | 2 +- .../pupil/ui/fragment/SettingsFragment.kt | 33 ++++++++++++++----- app/src/main/res/values-ja/strings.xml | 5 +-- app/src/main/res/values-ko/strings.xml | 5 +-- app/src/main/res/values/arrays.xml | 22 ++++++++++++- app/src/main/res/values/strings.xml | 12 ++++--- app/src/main/res/xml/root_preferences.xml | 28 ++++++++++++---- 9 files changed, 106 insertions(+), 42 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 6704f213..5713a131 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -38,7 +38,7 @@ android { minSdkVersion 16 targetSdkVersion 30 versionCode 64 - versionName "5.1.7-hotfix1" + versionName "5.1.8-beta1" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true } @@ -84,34 +84,34 @@ dependencies { implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.0.1" implementation "androidx.appcompat:appcompat:1.2.0" - implementation "androidx.activity:activity-ktx:1.2.0-beta01" - implementation "androidx.fragment:fragment-ktx:1.3.0-beta01" + implementation "androidx.activity:activity-ktx:1.3.0-alpha02" + implementation "androidx.fragment:fragment-ktx:1.3.0" implementation "androidx.preference:preference-ktx:1.1.1" implementation "androidx.recyclerview:recyclerview:1.1.0" implementation "androidx.constraintlayout:constraintlayout:2.0.4" implementation "androidx.gridlayout:gridlayout:1.0.0" - implementation "androidx.biometric:biometric:1.0.1" - implementation "androidx.work:work-runtime-ktx:2.4.0" + implementation "androidx.biometric:biometric:1.1.0" + implementation "androidx.work:work-runtime-ktx:2.5.0" implementation "com.daimajia.swipelayout:library:1.2.0@aar" - implementation "com.google.android.material:material:1.3.0-alpha04" + implementation "com.google.android.material:material:1.3.0" - implementation "com.google.firebase:firebase-core:18.0.0" - implementation "com.google.firebase:firebase-analytics:18.0.0" - implementation "com.google.firebase:firebase-crashlytics:17.3.0" - implementation "com.google.firebase:firebase-perf:19.0.10" + implementation "com.google.firebase:firebase-core:18.0.2" + implementation "com.google.firebase:firebase-analytics:18.0.2" + implementation "com.google.firebase:firebase-crashlytics:17.3.1" + implementation "com.google.firebase:firebase-perf:19.1.0" implementation "com.google.android.gms:play-services-oss-licenses:17.0.0" - implementation "com.google.android.gms:play-services-mlkit-face-detection:16.1.1" + implementation "com.google.android.gms:play-services-mlkit-face-detection:16.1.4" implementation "com.github.clans:fab:1.6.4" //implementation "com.quiph.ui:recyclerviewfastscroller:0.2.1" - implementation 'com.github.piasy:BigImageViewer:1.6.7' - implementation 'com.github.piasy:FrescoImageLoader:1.6.7' - implementation 'com.github.piasy:FrescoImageViewFactory:1.6.7' + implementation 'com.github.piasy:BigImageViewer:1.7.0' + implementation 'com.github.piasy:FrescoImageLoader:1.7.0' + implementation 'com.github.piasy:FrescoImageViewFactory:1.7.0' //noinspection GradleDependency implementation "com.squareup.okhttp3:okhttp:$okhttp_version" @@ -126,9 +126,9 @@ dependencies { implementation "ru.noties.markwon:core:3.1.0" - implementation "xyz.quaver:libpupil:1.8.16" + implementation "xyz.quaver:libpupil:1.9.7" implementation "xyz.quaver:documentfilex:0.4-alpha02" - implementation "xyz.quaver:floatingsearchview:1.0.7" + implementation "xyz.quaver:floatingsearchview:1.1.1" testImplementation "junit:junit:4.13.1" androidTestImplementation "androidx.test.ext:junit:1.1.2" diff --git a/app/src/main/java/xyz/quaver/pupil/Pupil.kt b/app/src/main/java/xyz/quaver/pupil/Pupil.kt index ef94a08c..f479968e 100644 --- a/app/src/main/java/xyz/quaver/pupil/Pupil.kt +++ b/app/src/main/java/xyz/quaver/pupil/Pupil.kt @@ -26,6 +26,7 @@ import android.content.Context import android.content.Intent import android.net.Uri import android.os.Build +import android.util.Log import androidx.appcompat.app.AppCompatDelegate import androidx.core.content.ContextCompat import androidx.preference.PreferenceManager @@ -34,8 +35,8 @@ import com.github.piasy.biv.loader.fresco.FrescoImageLoader import com.google.android.gms.common.GooglePlayServicesNotAvailableException import com.google.android.gms.common.GooglePlayServicesRepairableException import com.google.android.gms.security.ProviderInstaller -import com.google.firebase.analytics.FirebaseAnalytics import com.google.firebase.crashlytics.FirebaseCrashlytics +import okhttp3.Dispatcher import okhttp3.Interceptor import okhttp3.OkHttpClient import okhttp3.Response @@ -46,6 +47,7 @@ import xyz.quaver.pupil.util.downloader.DownloadManager import xyz.quaver.setClient import java.io.File import java.util.* +import java.util.concurrent.Executors import java.util.concurrent.TimeUnit import kotlin.reflect.KClass @@ -96,6 +98,11 @@ class Pupil : Application() { val tag = request.tag() ?: return@addInterceptor chain.proceed(request) interceptors[tag::class]?.invoke(chain) ?: chain.proceed(request) + }.apply { + (Preferences.get("max_concurrent_download").toIntOrNull() ?: 0).let { + if (it != 0) + dispatcher(Dispatcher(Executors.newFixedThreadPool(it))) + } } try { diff --git a/app/src/main/java/xyz/quaver/pupil/ui/dialog/ProxyDialog.kt b/app/src/main/java/xyz/quaver/pupil/ui/dialog/ProxyDialog.kt index c0d4a093..47b36601 100644 --- a/app/src/main/java/xyz/quaver/pupil/ui/dialog/ProxyDialog.kt +++ b/app/src/main/java/xyz/quaver/pupil/ui/dialog/ProxyDialog.kt @@ -45,7 +45,7 @@ class ProxyDialog(context: Context) : AlertDialog(context) { super.onCreate(savedInstanceState) binding = ProxyDialogBinding.inflate(layoutInflater) - setView(binding.root) + setContentView(binding.root) initView() } diff --git a/app/src/main/java/xyz/quaver/pupil/ui/fragment/SettingsFragment.kt b/app/src/main/java/xyz/quaver/pupil/ui/fragment/SettingsFragment.kt index bef1ec55..b574ef85 100644 --- a/app/src/main/java/xyz/quaver/pupil/ui/fragment/SettingsFragment.kt +++ b/app/src/main/java/xyz/quaver/pupil/ui/fragment/SettingsFragment.kt @@ -29,15 +29,20 @@ import com.google.android.gms.oss.licenses.OssLicensesMenuActivity import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch +import okhttp3.Dispatcher import xyz.quaver.io.FileX import xyz.quaver.io.util.getChild import xyz.quaver.pupil.R +import xyz.quaver.pupil.client +import xyz.quaver.pupil.clientBuilder +import xyz.quaver.pupil.clientHolder import xyz.quaver.pupil.ui.LockActivity import xyz.quaver.pupil.ui.SettingsActivity import xyz.quaver.pupil.ui.dialog.* import xyz.quaver.pupil.util.* import xyz.quaver.pupil.util.downloader.DownloadManager import java.util.* +import java.util.concurrent.Executors class SettingsFragment : PreferenceFragmentCompat(), @@ -168,6 +173,18 @@ class SettingsFragment : "download_folder_name" -> { summary = Preferences["download_folder_name", "[-id-] -title-"] } + "max_concurrent_download" -> { + val newValue = Preferences.get(key).toIntOrNull() ?: 0 + + if (newValue == 0) + clientBuilder.dispatcher(Dispatcher()) + else + clientBuilder.dispatcher((Dispatcher(Executors.newFixedThreadPool(newValue)))) + + clientHolder = null + client + } + else -> return } } } @@ -247,6 +264,14 @@ class SettingsFragment : onPreferenceClickListener = this@SettingsFragment } + "mirrors" -> { + onPreferenceClickListener = this@SettingsFragment + } + "proxy" -> { + summary = getProxyInfo().type.name + + onPreferenceClickListener = this@SettingsFragment + } "tag_translation" -> { this as ListPreference @@ -268,14 +293,6 @@ class SettingsFragment : onPreferenceChangeListener = this@SettingsFragment } - "mirrors" -> { - onPreferenceClickListener = this@SettingsFragment - } - "proxy" -> { - summary = getProxyInfo().type.name - - onPreferenceClickListener = this@SettingsFragment - } "dark_mode" -> { onPreferenceChangeListener = this@SettingsFragment } diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 117f470c..dba21464 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -151,9 +151,10 @@ この機器には前面カメラが装着されていません エラー キャッシュサイズ制限 - 制限なし + 制限なし タグ言語 Githubにて翻訳に参加できます - 並列ダウンロード + 並列ダウンロード アンドロイド11以上では外部からのアプリ内部空間接近が不可能です。ダウンロードフォルダを変更しますか? + ネットワーク \ No newline at end of file diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index bad91ff6..9cc2e9ca 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -151,9 +151,10 @@ 이 장치에는 전면 카메라가 없습니다 오류 캐시 크기 제한 - 무제한 + 무제한 태그 언어 Github에서 번역에 참여하세요 - 병렬 다운로드 + 병렬 다운로드 안드로이드 11 이상에서는 외부에서 현재 다운로드 폴더에 접근할 수 없습니다. 변경하시겠습니까? + 네트워크 \ No newline at end of file diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index dfb2976b..2f211b43 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -70,7 +70,7 @@ - @string/settings_cache_unlimited + @string/unlimited 1G 2G 4G @@ -79,4 +79,24 @@ 32G + + 0 + 1 + 2 + 4 + 8 + 16 + 32 + + + + @string/unlimited + 1 + 2 + 4 + 8 + 16 + 32 + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e35614fe..ee76168c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -30,6 +30,8 @@ Ignore + Unlimited + Copied to clipboard Download @@ -166,7 +168,6 @@ Custom Location This folder is not writable. Please select another folder. Cache Limit - Unlimited Hide image from gallery Low quality images Load low quality images to improve load speed and data usage @@ -176,14 +177,17 @@ App lock App lock type + + Networking + Load images from mirrors + Proxy + Concurrent Download + Miscellaneous Tag Language - Concurrent Download Participate in translation on Github - Load images from mirrors - Proxy Turn pages Right-to-Left Enable security mode Enable security mode to make the screen invisible on recent app window diff --git a/app/src/main/res/xml/root_preferences.xml b/app/src/main/res/xml/root_preferences.xml index 816c44b4..71936739 100644 --- a/app/src/main/res/xml/root_preferences.xml +++ b/app/src/main/res/xml/root_preferences.xml @@ -1,5 +1,6 @@ - + - - + app:title="@string/settings_networking"> + + + + + + + + Date: Wed, 17 Feb 2021 17:44:14 +0900 Subject: [PATCH 02/18] Dependency update --- build.gradle | 4 ++-- gradle.properties | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index e7191ef0..b0c9b459 100644 --- a/build.gradle +++ b/build.gradle @@ -6,11 +6,11 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:4.1.1' + classpath 'com.android.tools.build:gradle:4.1.2' 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" - classpath "com.google.gms:google-services:4.3.4" + classpath "com.google.gms:google-services:4.3.5" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files classpath "com.google.firebase:firebase-crashlytics-gradle:2.4.1" diff --git a/gradle.properties b/gradle.properties index 2c2f1284..bf7c1c65 100644 --- a/gradle.properties +++ b/gradle.properties @@ -20,4 +20,4 @@ kotlin.code.style=official android.enableJetifier=true android.useAndroidX=true -kotlin_version=1.4.20 \ No newline at end of file +kotlin_version=1.4.30 \ No newline at end of file From 2c56bcacee120e71d90bba5c0a7155791d92b305 Mon Sep 17 00:00:00 2001 From: tom5079 Date: Wed, 17 Feb 2021 18:09:13 +0900 Subject: [PATCH 03/18] Dependency update & Apk build --- app/build.gradle | 2 +- app/release/output-metadata.json | 2 +- app/src/main/java/xyz/quaver/pupil/ui/MainActivity.kt | 6 +++--- .../java/xyz/quaver/pupil/ui/view/FloatingSearchView.kt | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 5713a131..5b6f2682 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -126,7 +126,7 @@ dependencies { implementation "ru.noties.markwon:core:3.1.0" - implementation "xyz.quaver:libpupil:1.9.7" + implementation "xyz.quaver:libpupil:1.8.16" implementation "xyz.quaver:documentfilex:0.4-alpha02" implementation "xyz.quaver:floatingsearchview:1.1.1" diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json index e8294f64..c29f82b0 100644 --- a/app/release/output-metadata.json +++ b/app/release/output-metadata.json @@ -11,7 +11,7 @@ "type": "SINGLE", "filters": [], "versionCode": 64, - "versionName": "5.1.7-hotfix1", + "versionName": "5.1.8-beta1", "outputFile": "app-release.apk" } ] diff --git a/app/src/main/java/xyz/quaver/pupil/ui/MainActivity.kt b/app/src/main/java/xyz/quaver/pupil/ui/MainActivity.kt index 242f68bd..31a9d8c5 100644 --- a/app/src/main/java/xyz/quaver/pupil/ui/MainActivity.kt +++ b/app/src/main/java/xyz/quaver/pupil/ui/MainActivity.kt @@ -212,7 +212,7 @@ class MainActivity : min( max( binding.contents.searchview.translationY - dy, - -binding.contents.searchview.findViewById(R.id.search_query_section).height.toFloat() + -binding.contents.searchview.binding.querySection.root.height.toFloat() ), 0F) if (dy > 0) @@ -474,7 +474,7 @@ class MainActivity : with(binding.contents.searchview) { onMenuStatusChangeListener = object: FloatingSearchView.OnMenuStatusChangeListener { override fun onMenuOpened() { - (binding.contents.recyclerview.adapter as GalleryBlockAdapter).closeAllItems() + (this@MainActivity.binding.contents.recyclerview.adapter as GalleryBlockAdapter).closeAllItems() } override fun onMenuClosed() { @@ -558,7 +558,7 @@ class MainActivity : } } - attachNavigationDrawerToMenuButton(binding.drawer) + attachNavigationDrawerToMenuButton(this@MainActivity.binding.drawer) } } diff --git a/app/src/main/java/xyz/quaver/pupil/ui/view/FloatingSearchView.kt b/app/src/main/java/xyz/quaver/pupil/ui/view/FloatingSearchView.kt index 3e922ba1..93fea583 100644 --- a/app/src/main/java/xyz/quaver/pupil/ui/view/FloatingSearchView.kt +++ b/app/src/main/java/xyz/quaver/pupil/ui/view/FloatingSearchView.kt @@ -59,8 +59,8 @@ class FloatingSearchView @JvmOverloads constructor(context: Context, attrs: Attr searchInputView.addTextChangedListener(this) onSearchListener = this - onBindSuggestionCallback = { a, b, c, d, e -> - onBindSuggestion(a, b, c, d, e) + onBindSuggestionCallback = { binding, item, itemPosition -> + onBindSuggestion(binding.root, binding.leftIcon, binding.body, item, itemPosition) } } From 7632fe5e86d3d5b5496cce2c9d1ccd0dcb8a79d2 Mon Sep 17 00:00:00 2001 From: tom5079 Date: Thu, 18 Feb 2021 10:03:51 +0900 Subject: [PATCH 04/18] Dependency update --- app/build.gradle | 10 +++++----- app/release/output-metadata.json | 2 +- build.gradle | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 5b6f2682..d08e432d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -38,7 +38,7 @@ android { minSdkVersion 16 targetSdkVersion 30 versionCode 64 - versionName "5.1.8-beta1" + versionName "5.1.8-beta2" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true } @@ -97,10 +97,10 @@ dependencies { implementation "com.google.android.material:material:1.3.0" - implementation "com.google.firebase:firebase-core:18.0.2" - implementation "com.google.firebase:firebase-analytics:18.0.2" - implementation "com.google.firebase:firebase-crashlytics:17.3.1" - implementation "com.google.firebase:firebase-perf:19.1.0" + implementation platform('com.google.firebase:firebase-bom:26.5.0') + implementation "com.google.firebase:firebase-analytics-ktx" + implementation "com.google.firebase:firebase-crashlytics-ktx" + implementation "com.google.firebase:firebase-perf-ktx" implementation "com.google.android.gms:play-services-oss-licenses:17.0.0" implementation "com.google.android.gms:play-services-mlkit-face-detection:16.1.4" diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json index c29f82b0..34db9eed 100644 --- a/app/release/output-metadata.json +++ b/app/release/output-metadata.json @@ -11,7 +11,7 @@ "type": "SINGLE", "filters": [], "versionCode": 64, - "versionName": "5.1.8-beta1", + "versionName": "5.1.8-beta2", "outputFile": "app-release.apk" } ] diff --git a/build.gradle b/build.gradle index b0c9b459..3db67027 100644 --- a/build.gradle +++ b/build.gradle @@ -13,7 +13,7 @@ buildscript { classpath "com.google.gms:google-services:4.3.5" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files - classpath "com.google.firebase:firebase-crashlytics-gradle:2.4.1" + classpath "com.google.firebase:firebase-crashlytics-gradle:2.5.0" classpath "com.google.firebase:perf-plugin:1.3.4" classpath "com.google.android.gms:oss-licenses-plugin:0.10.2" } From ba4449d0033c2b79b275e21c4f7fdfbc869b544b Mon Sep 17 00:00:00 2001 From: tom5079 Date: Sun, 4 Apr 2021 08:22:55 +0900 Subject: [PATCH 05/18] Fixed Proxy dialog --- app/build.gradle | 2 +- ...{ProxyDialog.kt => ProxyDialogFragment.kt} | 22 +++++++++++-------- .../pupil/ui/fragment/SettingsFragment.kt | 3 +-- 3 files changed, 15 insertions(+), 12 deletions(-) rename app/src/main/java/xyz/quaver/pupil/ui/dialog/{ProxyDialog.kt => ProxyDialogFragment.kt} (85%) diff --git a/app/build.gradle b/app/build.gradle index d08e432d..23548e0a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -127,7 +127,7 @@ dependencies { implementation "ru.noties.markwon:core:3.1.0" implementation "xyz.quaver:libpupil:1.8.16" - implementation "xyz.quaver:documentfilex:0.4-alpha02" + implementation "xyz.quaver:documentfilex:0.5-SNAPSHOT" implementation "xyz.quaver:floatingsearchview:1.1.1" testImplementation "junit:junit:4.13.1" diff --git a/app/src/main/java/xyz/quaver/pupil/ui/dialog/ProxyDialog.kt b/app/src/main/java/xyz/quaver/pupil/ui/dialog/ProxyDialogFragment.kt similarity index 85% rename from app/src/main/java/xyz/quaver/pupil/ui/dialog/ProxyDialog.kt rename to app/src/main/java/xyz/quaver/pupil/ui/dialog/ProxyDialogFragment.kt index 47b36601..8cce55ea 100644 --- a/app/src/main/java/xyz/quaver/pupil/ui/dialog/ProxyDialog.kt +++ b/app/src/main/java/xyz/quaver/pupil/ui/dialog/ProxyDialogFragment.kt @@ -18,12 +18,14 @@ package xyz.quaver.pupil.ui.dialog +import android.app.Dialog import android.content.Context import android.os.Bundle import android.view.View import android.widget.AdapterView import android.widget.ArrayAdapter import androidx.appcompat.app.AlertDialog +import androidx.fragment.app.DialogFragment import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json import xyz.quaver.pupil.R @@ -37,17 +39,19 @@ import xyz.quaver.pupil.util.getProxyInfo import xyz.quaver.pupil.util.proxyInfo import java.net.Proxy -class ProxyDialog(context: Context) : AlertDialog(context) { +class ProxyDialogFragment : DialogFragment() { - private lateinit var binding: ProxyDialogBinding + private var _binding: ProxyDialogBinding? = null + private val binding get() = _binding!! - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - binding = ProxyDialogBinding.inflate(layoutInflater) - setContentView(binding.root) + override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { + _binding = ProxyDialogBinding.inflate(layoutInflater) initView() + + return AlertDialog.Builder(requireContext()).apply { + setView(binding.root) + }.create() } private fun initView() { @@ -105,9 +109,9 @@ class ProxyDialog(context: Context) : AlertDialog(context) { if (type != Proxy.Type.DIRECT) { if (addr == null || addr.isEmpty()) - binding.addr.error = context.getText(R.string.proxy_dialog_error) + binding.addr.error = requireContext().getText(R.string.proxy_dialog_error) if (port == null) - binding.port.error = context.getText(R.string.proxy_dialog_error) + binding.port.error = requireContext().getText(R.string.proxy_dialog_error) if (addr == null || addr.isEmpty() || port == null) return@setOnClickListener diff --git a/app/src/main/java/xyz/quaver/pupil/ui/fragment/SettingsFragment.kt b/app/src/main/java/xyz/quaver/pupil/ui/fragment/SettingsFragment.kt index b574ef85..b1bd3879 100644 --- a/app/src/main/java/xyz/quaver/pupil/ui/fragment/SettingsFragment.kt +++ b/app/src/main/java/xyz/quaver/pupil/ui/fragment/SettingsFragment.kt @@ -108,8 +108,7 @@ class SettingsFragment : .show() } "proxy" -> { - ProxyDialog(requireContext()) - .show() + ProxyDialogFragment().show(parentFragmentManager, "Proxy Dialog") } "user_id" -> { (context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager).setPrimaryClip( From 95dade13f4e37dee7fc0616f4ec1b3735c47dc2a Mon Sep 17 00:00:00 2001 From: tom5079 Date: Tue, 18 May 2021 10:57:36 +0900 Subject: [PATCH 06/18] Dependency update --- .idea/compiler.xml | 2 +- .idea/misc.xml | 2 +- app/build.gradle | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 61a9130c..fb7f4a8a 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index d5d35ec4..860da66a 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,6 @@ - + diff --git a/app/build.gradle b/app/build.gradle index 23548e0a..85b928c1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -127,7 +127,7 @@ dependencies { implementation "ru.noties.markwon:core:3.1.0" implementation "xyz.quaver:libpupil:1.8.16" - implementation "xyz.quaver:documentfilex:0.5-SNAPSHOT" + implementation "xyz.quaver:documentfilex:0.6.1" implementation "xyz.quaver:floatingsearchview:1.1.1" testImplementation "junit:junit:4.13.1" From 6ebce2deb3d5d236df6759e859b3c369461c80b3 Mon Sep 17 00:00:00 2001 From: tom5079 Date: Tue, 8 Jun 2021 08:48:05 +0900 Subject: [PATCH 07/18] Dependency update --- app/build.gradle | 29 ++-- app/src/main/java/xyz/quaver/pupil/Pupil.kt | 2 - .../pupil/adapters/GalleryBlockAdapter.kt | 3 +- .../quaver/pupil/adapters/MirrorAdapter.kt | 86 ----------- .../quaver/pupil/adapters/ReaderAdapter.kt | 8 +- .../quaver/pupil/services/DownloadService.kt | 4 +- .../xyz/quaver/pupil/ui/ReaderActivity.kt | 16 +- .../dialog/DownloadLocationDialogFragment.kt | 3 - .../quaver/pupil/ui/dialog/MirrorDialog.kt | 91 ----------- .../pupil/ui/fragment/SettingsFragment.kt | 7 - .../xyz/quaver/pupil/util/downloader/Cache.kt | 69 ++------- .../main/java/xyz/quaver/pupil/util/misc.kt | 32 +--- .../main/java/xyz/quaver/pupil/util/update.kt | 145 ------------------ app/src/main/res/drawable/ic_hiyobi.png | Bin 159 -> 0 bytes app/src/main/res/values/arrays.xml | 5 - app/src/main/res/xml/root_preferences.xml | 5 - build.gradle | 14 +- gradle.properties | 2 +- gradle/wrapper/gradle-wrapper.properties | 2 +- 19 files changed, 60 insertions(+), 463 deletions(-) delete mode 100644 app/src/main/java/xyz/quaver/pupil/adapters/MirrorAdapter.kt delete mode 100644 app/src/main/java/xyz/quaver/pupil/ui/dialog/MirrorDialog.kt delete mode 100644 app/src/main/res/drawable/ic_hiyobi.png diff --git a/app/build.gradle b/app/build.gradle index 85b928c1..4bfbf414 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -38,7 +38,7 @@ android { minSdkVersion 16 targetSdkVersion 30 versionCode 64 - versionName "5.1.8-beta2" + versionName "5.1.9" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true } @@ -74,24 +74,23 @@ android { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } - buildToolsVersion = "29.0.3" } dependencies { implementation fileTree(dir: "libs", include: ["*.jar", "*.aar"]) implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8" - implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.1" - implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.0.1" + implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.3" + implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.2.0" - implementation "androidx.appcompat:appcompat:1.2.0" - implementation "androidx.activity:activity-ktx:1.3.0-alpha02" - implementation "androidx.fragment:fragment-ktx:1.3.0" + implementation "androidx.appcompat:appcompat:1.3.0" + implementation "androidx.activity:activity-ktx:1.3.0-beta01" + implementation "androidx.fragment:fragment-ktx:1.3.4" implementation "androidx.preference:preference-ktx:1.1.1" - implementation "androidx.recyclerview:recyclerview:1.1.0" + implementation "androidx.recyclerview:recyclerview:1.2.1" implementation "androidx.constraintlayout:constraintlayout:2.0.4" implementation "androidx.gridlayout:gridlayout:1.0.0" implementation "androidx.biometric:biometric:1.1.0" - implementation "androidx.work:work-runtime-ktx:2.5.0" + implementation "androidx.work:work-runtime-ktx:2.6.0-beta01" implementation "com.daimajia.swipelayout:library:1.2.0@aar" @@ -103,15 +102,15 @@ dependencies { implementation "com.google.firebase:firebase-perf-ktx" implementation "com.google.android.gms:play-services-oss-licenses:17.0.0" - implementation "com.google.android.gms:play-services-mlkit-face-detection:16.1.4" + implementation "com.google.android.gms:play-services-mlkit-face-detection:16.1.7" implementation "com.github.clans:fab:1.6.4" //implementation "com.quiph.ui:recyclerviewfastscroller:0.2.1" - implementation 'com.github.piasy:BigImageViewer:1.7.0' - implementation 'com.github.piasy:FrescoImageLoader:1.7.0' - implementation 'com.github.piasy:FrescoImageViewFactory:1.7.0' + implementation 'com.github.piasy:BigImageViewer:1.8.0' + implementation 'com.github.piasy:FrescoImageLoader:1.8.0' + implementation 'com.github.piasy:FrescoImageViewFactory:1.8.0' //noinspection GradleDependency implementation "com.squareup.okhttp3:okhttp:$okhttp_version" @@ -126,9 +125,9 @@ dependencies { implementation "ru.noties.markwon:core:3.1.0" - implementation "xyz.quaver:libpupil:1.8.16" + implementation "xyz.quaver:libpupil:2.1.0" implementation "xyz.quaver:documentfilex:0.6.1" - implementation "xyz.quaver:floatingsearchview:1.1.1" + implementation "xyz.quaver:floatingsearchview:1.1.7" testImplementation "junit:junit:4.13.1" androidTestImplementation "androidx.test.ext:junit:1.1.2" diff --git a/app/src/main/java/xyz/quaver/pupil/Pupil.kt b/app/src/main/java/xyz/quaver/pupil/Pupil.kt index f479968e..5c1d169d 100644 --- a/app/src/main/java/xyz/quaver/pupil/Pupil.kt +++ b/app/src/main/java/xyz/quaver/pupil/Pupil.kt @@ -115,8 +115,6 @@ class Pupil : Application() { if (!FileX(this, it).canWrite()) throw Exception() - - DownloadManager.getInstance(this).migrate() } } catch (e: Exception) { Preferences.remove("download_folder") diff --git a/app/src/main/java/xyz/quaver/pupil/adapters/GalleryBlockAdapter.kt b/app/src/main/java/xyz/quaver/pupil/adapters/GalleryBlockAdapter.kt index adcd2a36..eb5b2274 100644 --- a/app/src/main/java/xyz/quaver/pupil/adapters/GalleryBlockAdapter.kt +++ b/app/src/main/java/xyz/quaver/pupil/adapters/GalleryBlockAdapter.kt @@ -36,6 +36,7 @@ import com.daimajia.swipe.interfaces.SwipeAdapterInterface import com.github.piasy.biv.loader.ImageLoader import kotlinx.coroutines.* import xyz.quaver.hitomi.getGallery +import xyz.quaver.hitomi.getGalleryInfo import xyz.quaver.hitomi.getReader import xyz.quaver.io.util.getChild import xyz.quaver.pupil.R @@ -231,7 +232,7 @@ class GalleryBlockAdapter(private val galleries: List) : RecyclerSwipeAdapt binding.galleryblockPagecount.text = "-" CoroutineScope(Dispatchers.IO).launch { val pageCount = kotlin.runCatching { - getReader(galleryBlock.id).galleryInfo.files.size + getGalleryInfo(galleryBlock.id).files.size }.getOrNull() ?: return@launch withContext(Dispatchers.Main) { binding.galleryblockPagecount.text = itemView.context.getString(R.string.galleryblock_pagecount, pageCount) diff --git a/app/src/main/java/xyz/quaver/pupil/adapters/MirrorAdapter.kt b/app/src/main/java/xyz/quaver/pupil/adapters/MirrorAdapter.kt deleted file mode 100644 index 93d72678..00000000 --- a/app/src/main/java/xyz/quaver/pupil/adapters/MirrorAdapter.kt +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Pupil, Hitomi.la viewer for Android - * Copyright (C) 2020 tom5079 - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package xyz.quaver.pupil.adapters - -import android.annotation.SuppressLint -import android.content.Context -import android.view.LayoutInflater -import android.view.MotionEvent -import android.view.ViewGroup -import androidx.recyclerview.widget.RecyclerView -import xyz.quaver.pupil.R -import xyz.quaver.pupil.databinding.MirrorsItemBinding -import xyz.quaver.pupil.util.Preferences -import java.util.* - -class MirrorAdapter(context: Context) : RecyclerView.Adapter() { - - @SuppressLint("ClickableViewAccessibility") - inner class ViewHolder(val binding: MirrorsItemBinding) : RecyclerView.ViewHolder(binding.root) { - init { - binding.mirrorButton.setOnTouchListener { _, event -> - if (event.action == MotionEvent.ACTION_DOWN) - onStartDrag?.invoke(this) - - true - } - } - fun bind(mirror: String) { - binding.mirrorName.text = mirror - } - } - - val mirrors = context.resources.getStringArray(R.array.mirrors).map { - it.split('|').let { split -> - Pair(split.first(), split.last()) - } - }.toMap() - - val list = mirrors.keys.toMutableList().apply { - Preferences.get("mirrors") - .split(">") - .reversed() - .forEach { - if (this.contains(it)) { - this.remove(it) - this.add(0, it) - } - } - } - - val onItemMove : ((Int, Int) -> Unit) = { from, to -> - Collections.swap(list, from, to) - notifyItemMoved(from, to) - onItemMoved?.invoke(list) - } - var onStartDrag : ((ViewHolder) -> Unit)? = null - var onItemMoved : ((List) -> (Unit))? = null - - @SuppressLint("ClickableViewAccessibility") - override fun onBindViewHolder(holder: ViewHolder, position: Int) { - holder.bind(mirrors[list.elementAt(position)] ?: error("")) - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - return ViewHolder(MirrorsItemBinding.inflate(LayoutInflater.from(parent.context), parent, false)) - } - - override fun getItemCount() = mirrors.size - -} \ No newline at end of file diff --git a/app/src/main/java/xyz/quaver/pupil/adapters/ReaderAdapter.kt b/app/src/main/java/xyz/quaver/pupil/adapters/ReaderAdapter.kt index b815518b..2f3ae9f5 100644 --- a/app/src/main/java/xyz/quaver/pupil/adapters/ReaderAdapter.kt +++ b/app/src/main/java/xyz/quaver/pupil/adapters/ReaderAdapter.kt @@ -40,7 +40,7 @@ import com.github.piasy.biv.view.BigImageView import com.github.piasy.biv.view.ImageShownCallback import com.github.piasy.biv.view.ImageViewFactory import kotlinx.coroutines.* -import xyz.quaver.hitomi.Reader +import xyz.quaver.hitomi.GalleryInfo import xyz.quaver.pupil.R import xyz.quaver.pupil.databinding.ReaderItemBinding import xyz.quaver.pupil.ui.ReaderActivity @@ -52,7 +52,7 @@ class ReaderAdapter( private val activity: ReaderActivity, private val galleryID: Int ) : RecyclerView.Adapter() { - var reader: Reader? = null + var reader: GalleryInfo? = null var isFullScreen = false @@ -101,7 +101,7 @@ class ReaderAdapter( binding.image.updateLayoutParams { height = 0 dimensionRatio = - "${reader!!.galleryInfo.files[position].width}:${reader!!.galleryInfo.files[position].height}" + "${reader!!.files[position].width}:${reader!!.files[position].height}" } } else { binding.root.layoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT @@ -158,7 +158,7 @@ class ReaderAdapter( holder.bind(position) } - override fun getItemCount() = reader?.galleryInfo?.files?.size ?: 0 + override fun getItemCount() = reader?.files?.size ?: 0 override fun onViewRecycled(holder: ViewHolder) { holder.clear() 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 f38ec3e0..1bd1d3b0 100644 --- a/app/src/main/java/xyz/quaver/pupil/services/DownloadService.kt +++ b/app/src/main/java/xyz/quaver/pupil/services/DownloadService.kt @@ -316,7 +316,7 @@ class DownloadService : Service() { histories.add(galleryID) - progress[galleryID] = MutableList(reader.galleryInfo.files.size) { 0F } + progress[galleryID] = MutableList(reader.files.size) { 0F } cache.metadata.imageList?.let { it.forEachIndexed { index, image -> @@ -334,7 +334,7 @@ class DownloadService : Service() { return@launch } - notification[galleryID]?.setContentTitle(reader.galleryInfo.title?.ellipsize(30)) + notification[galleryID]?.setContentTitle(reader.title?.ellipsize(30)) notify(galleryID) val queued = mutableSetOf() diff --git a/app/src/main/java/xyz/quaver/pupil/ui/ReaderActivity.kt b/app/src/main/java/xyz/quaver/pupil/ui/ReaderActivity.kt index 758f8bff..68cd4b7f 100644 --- a/app/src/main/java/xyz/quaver/pupil/ui/ReaderActivity.kt +++ b/app/src/main/java/xyz/quaver/pupil/ui/ReaderActivity.kt @@ -49,7 +49,6 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.delay import kotlinx.coroutines.launch -import xyz.quaver.Code import xyz.quaver.pupil.R import xyz.quaver.pupil.adapters.ReaderAdapter import xyz.quaver.pupil.databinding.NumberpickerDialogBinding @@ -184,7 +183,7 @@ class ReaderActivity : BaseActivity() { with(binding.numberPicker) { minValue = 1 - maxValue = cache.metadata.reader?.galleryInfo?.files?.size ?: 0 + maxValue = cache.metadata.reader?.files?.size ?: 0 value = currentPage } val dialog = AlertDialog.Builder(this).apply { @@ -307,18 +306,11 @@ class ReaderActivity : BaseActivity() { notifyDataSetChanged() } - title = reader.galleryInfo.title + title = reader.title menu?.findItem(R.id.reader_menu_page_indicator)?.title = - "$currentPage/${reader.galleryInfo.files.size}" + "$currentPage/${reader.files.size}" - menu?.findItem(R.id.reader_type)?.icon = ContextCompat.getDrawable( - this@ReaderActivity, - when (reader.code) { - Code.HITOMI -> R.drawable.hitomi - Code.HIYOBI -> R.drawable.ic_hiyobi - else -> android.R.color.transparent - } - ) + menu?.findItem(R.id.reader_type)?.icon = ContextCompat.getDrawable(this@ReaderActivity, R.drawable.hitomi) } } diff --git a/app/src/main/java/xyz/quaver/pupil/ui/dialog/DownloadLocationDialogFragment.kt b/app/src/main/java/xyz/quaver/pupil/ui/dialog/DownloadLocationDialogFragment.kt index 7e61be12..fec74930 100644 --- a/app/src/main/java/xyz/quaver/pupil/ui/dialog/DownloadLocationDialogFragment.kt +++ b/app/src/main/java/xyz/quaver/pupil/ui/dialog/DownloadLocationDialogFragment.kt @@ -39,7 +39,6 @@ import xyz.quaver.pupil.databinding.DownloadLocationItemBinding import xyz.quaver.pupil.util.Preferences import xyz.quaver.pupil.util.byteToString import xyz.quaver.pupil.util.downloader.DownloadManager -import xyz.quaver.pupil.util.migrate import java.io.File class DownloadLocationDialogFragment : DialogFragment() { @@ -178,8 +177,6 @@ class DownloadLocationDialogFragment : DialogFragment() { setPositiveButton(requireContext().getText(android.R.string.ok)) { _, _ -> if (Preferences["download_folder", ""].isEmpty()) Preferences["download_folder"] = context.getExternalFilesDir(null)?.toUri()?.toString() ?: "" - - DownloadManager.getInstance(requireContext()).migrate() } isCancelable = false diff --git a/app/src/main/java/xyz/quaver/pupil/ui/dialog/MirrorDialog.kt b/app/src/main/java/xyz/quaver/pupil/ui/dialog/MirrorDialog.kt deleted file mode 100644 index aafb58d0..00000000 --- a/app/src/main/java/xyz/quaver/pupil/ui/dialog/MirrorDialog.kt +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Pupil, Hitomi.la viewer for Android - * Copyright (C) 2020 tom5079 - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package xyz.quaver.pupil.ui.dialog - -import android.annotation.SuppressLint -import android.app.Dialog -import android.content.Context -import android.os.Bundle -import android.view.View -import androidx.appcompat.app.AlertDialog -import androidx.recyclerview.widget.DividerItemDecoration -import androidx.recyclerview.widget.ItemTouchHelper -import androidx.recyclerview.widget.LinearLayoutManager -import androidx.recyclerview.widget.RecyclerView -import xyz.quaver.pupil.R -import xyz.quaver.pupil.adapters.MirrorAdapter -import xyz.quaver.pupil.util.Preferences - -class MirrorDialog(context: Context) : AlertDialog(context) { - - class ItemTouchHelperCallback : ItemTouchHelper.Callback() { - - var onMoveItem : ((Int, Int) -> (Unit))? = null - - override fun getMovementFlags( - recyclerView: RecyclerView, - viewHolder: RecyclerView.ViewHolder - ) = makeMovementFlags(ItemTouchHelper.UP or ItemTouchHelper.DOWN, 0) - - override fun onMove( - recyclerView: RecyclerView, - viewHolder: RecyclerView.ViewHolder, - target: RecyclerView.ViewHolder - ): Boolean { - onMoveItem?.invoke(viewHolder.adapterPosition, target.adapterPosition) - return true - } - - override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) { - - } - } - - @SuppressLint("InflateParams") - override fun onCreate(savedInstanceState: Bundle?) { - setTitle(R.string.settings_mirror_title) - setView(build()) - setButton(Dialog.BUTTON_POSITIVE, context.getString(android.R.string.ok)) { _, _ -> } - - super.onCreate(savedInstanceState) - } - - private fun build() : View { - return RecyclerView(context).apply recyclerview@{ - addItemDecoration(DividerItemDecoration(context, DividerItemDecoration.VERTICAL)) - layoutManager = LinearLayoutManager(context) - adapter = MirrorAdapter(context).apply adapter@{ - val itemTouchHelper = ItemTouchHelper(ItemTouchHelperCallback().apply { - onMoveItem = this@adapter.onItemMove - }).apply { - attachToRecyclerView(this@recyclerview) - } - - onStartDrag = { - itemTouchHelper.startDrag(it) - } - - onItemMoved = { - Preferences["mirrors"] = it.joinToString(">") - } - } - } - } - -} \ No newline at end of file diff --git a/app/src/main/java/xyz/quaver/pupil/ui/fragment/SettingsFragment.kt b/app/src/main/java/xyz/quaver/pupil/ui/fragment/SettingsFragment.kt index b1bd3879..e6c40d39 100644 --- a/app/src/main/java/xyz/quaver/pupil/ui/fragment/SettingsFragment.kt +++ b/app/src/main/java/xyz/quaver/pupil/ui/fragment/SettingsFragment.kt @@ -103,10 +103,6 @@ class SettingsFragment : } lockLauncher.launch(intent) } - "mirrors" -> { - MirrorDialog(requireContext()) - .show() - } "proxy" -> { ProxyDialogFragment().show(parentFragmentManager, "Proxy Dialog") } @@ -263,9 +259,6 @@ class SettingsFragment : onPreferenceClickListener = this@SettingsFragment } - "mirrors" -> { - onPreferenceClickListener = this@SettingsFragment - } "proxy" -> { summary = getProxyInfo().type.name 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 60d8ef25..cfa2e071 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 @@ -32,9 +32,8 @@ import kotlinx.serialization.decodeFromString import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json import okhttp3.Request -import xyz.quaver.Code import xyz.quaver.hitomi.GalleryBlock -import xyz.quaver.hitomi.Reader +import xyz.quaver.hitomi.GalleryInfo import xyz.quaver.io.FileX import xyz.quaver.io.util.* import xyz.quaver.pupil.client @@ -46,7 +45,7 @@ import java.util.concurrent.ConcurrentHashMap @Serializable data class Metadata( var galleryBlock: GalleryBlock? = null, - var reader: Reader? = null, + var reader: GalleryInfo? = null, var imageList: MutableList? = null ) { fun copy(): Metadata = Metadata(galleryBlock, reader, imageList?.let { MutableList(it.size) { i -> it[i] } }) @@ -110,27 +109,13 @@ class Cache private constructor(context: Context, val galleryID: Int) : ContextW } suspend fun getGalleryBlock(): GalleryBlock? { - val sources = listOf( - { xyz.quaver.hitomi.getGalleryBlock(galleryID) }, - { xyz.quaver.hiyobi.getGalleryBlock(galleryID) } - ) - return metadata.galleryBlock ?: withContext(Dispatchers.IO) { - var galleryBlock: GalleryBlock? = null - - for (source in sources) { - galleryBlock = try { - source.invoke() - } catch (e: Exception) { null } - - if (galleryBlock != null) - break - } - - galleryBlock?.also { - setMetadata { metadata -> metadata.galleryBlock = it } - } + try { + xyz.quaver.hitomi.getGalleryBlock(galleryID).also { + setMetadata { metadata -> metadata.galleryBlock = it } + } + } catch (e: Exception) { return@withContext null } } } @@ -154,41 +139,21 @@ class Cache private constructor(context: Context, val galleryID: Int) : ContextW }.getOrNull()?.uri } } } ?: Uri.EMPTY - suspend fun getReader(): Reader? { - val mirrors = Preferences.get("mirrors").let { if (it.isEmpty()) emptyList() else it.split('>') } - - val sources = mapOf( - Code.HITOMI to { xyz.quaver.hitomi.getReader(galleryID) }, - Code.HIYOBI to { xyz.quaver.hiyobi.getReader(galleryID) } - ).let { - if (mirrors.isNotEmpty()) - it.toSortedMap{ o1, o2 -> mirrors.indexOf(o1.name) - mirrors.indexOf(o2.name) } - else - it - } + suspend fun getReader(): GalleryInfo? { return metadata.reader ?: withContext(Dispatchers.IO) { - var reader: Reader? = null + try { + xyz.quaver.hitomi.getGalleryInfo(galleryID).also { + setMetadata { metadata -> + metadata.reader = it - for (source in sources) { - reader = try { - source.value.invoke() - } catch (e: Exception) { - null - } - - if (reader != null) - break - } - - reader?.also { - setMetadata { metadata -> - metadata.reader = it - - if (metadata.imageList == null) - metadata.imageList = MutableList(reader.galleryInfo.files.size) { null } + if (metadata.imageList == null) + metadata.imageList = MutableList(it.files.size) { null } + } } + } catch (e: Exception) { + null } } } diff --git a/app/src/main/java/xyz/quaver/pupil/util/misc.kt b/app/src/main/java/xyz/quaver/pupil/util/misc.kt index 5aba4d89..b0d040cb 100644 --- a/app/src/main/java/xyz/quaver/pupil/util/misc.kt +++ b/app/src/main/java/xyz/quaver/pupil/util/misc.kt @@ -19,19 +19,13 @@ package xyz.quaver.pupil.util import android.annotation.SuppressLint -import android.content.Context -import android.content.Intent -import android.os.Build -import androidx.core.content.ContextCompat import kotlinx.serialization.json.* import okhttp3.OkHttpClient import okhttp3.Request -import xyz.quaver.Code import xyz.quaver.hitomi.GalleryBlock -import xyz.quaver.hitomi.Reader +import xyz.quaver.hitomi.GalleryInfo import xyz.quaver.hitomi.getReferer import xyz.quaver.hitomi.imageUrlFromImage -import xyz.quaver.hiyobi.createImgList import java.util.* import kotlin.collections.ArrayList @@ -41,7 +35,7 @@ fun String.wordCapitalize() : String { @SuppressLint("DefaultLocale") for (word in this.split(" ")) - result.add(word.capitalize(Locale.US)) + result.add(word.replaceFirstChar { if (it.isLowerCase()) it.titlecase(Locale.US) else it.toString() }) return result.joinToString(" ") } @@ -103,25 +97,15 @@ fun GalleryBlock.formatDownloadFolderTest(format: String): String = } }.replace(Regex("""[*\\|"?><:/]"""), "").ellipsize(127) -val Reader.requestBuilders: List +val GalleryInfo.requestBuilders: List get() { - val galleryID = this.galleryInfo.id ?: 0 + val galleryID = this.id ?: 0 val lowQuality = Preferences["low_quality", true] - return when(code) { - Code.HITOMI -> { - this.galleryInfo.files.map { - Request.Builder() - .url(imageUrlFromImage(galleryID, it, !lowQuality)) - .header("Referer", getReferer(galleryID)) - } - } - Code.HIYOBI -> { - createImgList(galleryID, this, lowQuality).map { - Request.Builder() - .url(it.path) - } - } + return this.files.map { + Request.Builder() + .url(imageUrlFromImage(galleryID, it, !lowQuality)) + .header("Referer", getReferer(galleryID)) } } 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 e8e3bb90..b97ca4b2 100644 --- a/app/src/main/java/xyz/quaver/pupil/util/update.kt +++ b/app/src/main/java/xyz/quaver/pupil/util/update.kt @@ -18,48 +18,26 @@ package xyz.quaver.pupil.util -import android.annotation.SuppressLint import android.app.DownloadManager -import android.app.PendingIntent -import android.content.BroadcastReceiver import android.content.Context -import android.content.Intent -import android.content.IntentFilter import android.net.Uri -import android.util.Base64 import android.webkit.URLUtil import androidx.appcompat.app.AlertDialog -import androidx.core.app.NotificationCompat -import androidx.core.app.NotificationManagerCompat import androidx.preference.PreferenceManager import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.Job import kotlinx.coroutines.launch import kotlinx.serialization.decodeFromString -import kotlinx.serialization.encodeToString import kotlinx.serialization.json.* import okhttp3.Call import okhttp3.Callback import okhttp3.Request import okhttp3.Response import ru.noties.markwon.Markwon -import xyz.quaver.hitomi.GalleryBlock -import xyz.quaver.hitomi.Reader -import xyz.quaver.hitomi.getGalleryBlock -import xyz.quaver.hitomi.getReader -import xyz.quaver.io.FileX -import xyz.quaver.io.util.getChild -import xyz.quaver.io.util.readText -import xyz.quaver.io.util.writeBytes -import xyz.quaver.io.util.writeText import xyz.quaver.pupil.BuildConfig import xyz.quaver.pupil.R import xyz.quaver.pupil.client import xyz.quaver.pupil.favorites -import xyz.quaver.pupil.services.DownloadService -import xyz.quaver.pupil.util.downloader.Cache -import xyz.quaver.pupil.util.downloader.Metadata import java.io.File import java.io.IOException import java.net.URL @@ -220,127 +198,4 @@ fun restore(url: String, onFailure: ((Throwable) -> Unit)? = null, onSuccess: (( }.onFailure { onFailure?.invoke(it) } } }) -} - -private var job: Job? = null -private val receiver = object: BroadcastReceiver() { - val ACTION_CANCEL = "ACTION_IMPORT_CANCEL" - override fun onReceive(context: Context?, intent: Intent?) { - context ?: return - - when (intent?.action) { - ACTION_CANCEL -> { - job?.cancel() - NotificationManagerCompat.from(context).cancel(R.id.notification_id_import) - context.unregisterReceiver(this) - } - } - } -} -@SuppressLint("RestrictedApi") -fun xyz.quaver.pupil.util.downloader.DownloadManager.migrate() { - registerReceiver(receiver, IntentFilter().apply { addAction(receiver.ACTION_CANCEL) }) - - val notificationManager = NotificationManagerCompat.from(this) - val action = NotificationCompat.Action.Builder(0, getText(android.R.string.cancel), - PendingIntent.getBroadcast(this, R.id.notification_import_cancel_action.normalizeID(), Intent(receiver.ACTION_CANCEL), PendingIntent.FLAG_UPDATE_CURRENT) - ).build() - val notification = NotificationCompat.Builder(this, "import") - .setContentTitle(getText(R.string.import_old_galleries_notification)) - .setProgress(0, 0, true) - .addAction(action) - .setSmallIcon(R.drawable.ic_notification) - .setOngoing(true) - - DownloadService.cancel(this) - - job?.cancel() - job = CoroutineScope(Dispatchers.IO).launch { - val images = listOf( - "jpg", - "png", - "gif", - "webp" - ) - - val downloadFolders = downloadFolder.listFiles { folder -> - folder.isDirectory && !downloadFolderMap.values.contains(folder.name) - }?.map { - if (it !is FileX) - FileX(this@migrate, it) - else - it - } - - if (downloadFolders.isNullOrEmpty()) return@launch - - downloadFolders.forEachIndexed { index, folder -> - notification - .setContentText(getString(R.string.import_old_galleries_notification_text, index, downloadFolders.size)) - .setProgress(index, downloadFolders.size, false) - notificationManager.notify(R.id.notification_id_import, notification.build()) - - val metadata = kotlin.runCatching { - folder.getChild(".metadata").readText()?.let { Json.parseToJsonElement(it) } - }.getOrNull() - - val galleryID = metadata?.getOrNull("reader")?.getOrNull("galleryInfo")?.getOrNull("id")?.content?.toIntOrNull() - ?: folder.name.toIntOrNull() ?: return@forEachIndexed - - val galleryBlock: GalleryBlock? = kotlin.runCatching { - metadata?.getOrNull("galleryBlock")?.let { Json.decodeFromJsonElement(it) } - }.getOrNull() ?: kotlin.runCatching { - getGalleryBlock(galleryID) - }.getOrNull() ?: kotlin.runCatching { - xyz.quaver.hiyobi.getGalleryBlock(galleryID) - }.getOrNull() - - val reader: Reader? = kotlin.runCatching { - metadata?.getOrNull("reader")?.let { Json.decodeFromJsonElement(it) } - }.getOrNull() ?: kotlin.runCatching { - getReader(galleryID) - }.getOrNull() ?: kotlin.runCatching { - xyz.quaver.hiyobi.getReader(galleryID) - }.getOrNull() - - metadata?.getOrNull("thumbnail")?.jsonPrimitive?.contentOrNull?.also { thumbnail -> - val file = folder.getChild(".thumbnail").also { - if (it.exists()) - it.delete() - it.createNewFile() - } - - file.writeBytes(Base64.decode(thumbnail, Base64.DEFAULT)) - } - - val list: MutableList = - MutableList(reader!!.galleryInfo.files.size) { null } - - folder.list { _, name -> - name?.substringAfterLast('.') in images - }?.sorted()?.take(list.size)?.forEachIndexed { i, name -> - list[i] = name - } - - folder.getChild(".metadata").also { if (it.exists()) it.delete(); it.createNewFile() }.writeText( - Json.encodeToString(Metadata(galleryBlock, reader, list)) - ) - - Cache.delete(this@migrate, galleryID) - downloadFolderMap[galleryID] = folder.name - - downloadFolder.getChild(".download").let { if (!it.exists()) it.createNewFile(); it.writeText(Json.encodeToString(downloadFolderMap)) } - } - - notification - .setContentText(getText(R.string.import_old_galleries_notification_done)) - .setProgress(0, 0, false) - .setOngoing(false) - .mActions.clear() - notificationManager.notify(R.id.notification_id_import, notification.build()) - - kotlin.runCatching { - unregisterReceiver(receiver) - } - } } \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_hiyobi.png b/app/src/main/res/drawable/ic_hiyobi.png deleted file mode 100644 index 2af60c05bb97b9d184397e154222ffdf7798f9c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9JOMr-uK$4y28RC(|AD}=|Lh$g z$IsKnF@)o~?U{vw2NZZ5F0L=Iwec?PUy*l!E2rUM-)XOzN~RWiu2*e-D)25aIT1A1 z`>^Nd0FyYES59lCi+va7hrXNO$d}Dtc_Mml{Z9sw8w$s#{n*J1vd7ca&t;ucLK6TV COE=^I diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 2f211b43..f95e86de 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -48,11 +48,6 @@ japanese|日本語 - - HITOMI|hitomi.la - HIYOBI|hiyobi.me - - Direct HTTP diff --git a/app/src/main/res/xml/root_preferences.xml b/app/src/main/res/xml/root_preferences.xml index 71936739..dc2e2624 100644 --- a/app/src/main/res/xml/root_preferences.xml +++ b/app/src/main/res/xml/root_preferences.xml @@ -76,11 +76,6 @@ - - diff --git a/build.gradle b/build.gradle index 3db67027..d30f8a22 100644 --- a/build.gradle +++ b/build.gradle @@ -3,26 +3,26 @@ buildscript { repositories { google() - jcenter() + mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:4.1.2' + classpath 'com.android.tools.build:gradle:4.2.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" - classpath "com.google.gms:google-services:4.3.5" + classpath "com.google.gms:google-services:4.3.8" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files - classpath "com.google.firebase:firebase-crashlytics-gradle:2.5.0" - classpath "com.google.firebase:perf-plugin:1.3.4" - classpath "com.google.android.gms:oss-licenses-plugin:0.10.2" + classpath "com.google.firebase:firebase-crashlytics-gradle:2.7.0" + classpath "com.google.firebase:perf-plugin:1.4.0" + classpath "com.google.android.gms:oss-licenses-plugin:0.10.4" } } allprojects { repositories { - maven { url "http://dl.bintray.com/piasy/maven" } google() + mavenCentral() jcenter() maven { url "https://jitpack.io" } maven { url "https://guardian.github.com/maven/repo-releases" } diff --git a/gradle.properties b/gradle.properties index bf7c1c65..158703d0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -20,4 +20,4 @@ kotlin.code.style=official android.enableJetifier=true android.useAndroidX=true -kotlin_version=1.4.30 \ No newline at end of file +kotlin_version=1.5.10 \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 52c5f178..906f70c5 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip From 9b511d2f8fc194ece633be90a5545153d6022b6d Mon Sep 17 00:00:00 2001 From: tom5079 Date: Tue, 8 Jun 2021 09:08:24 +0900 Subject: [PATCH 08/18] Fixed radio button acting up --- .../ui/dialog/DownloadLocationDialogFragment.kt | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/xyz/quaver/pupil/ui/dialog/DownloadLocationDialogFragment.kt b/app/src/main/java/xyz/quaver/pupil/ui/dialog/DownloadLocationDialogFragment.kt index fec74930..e6a03cff 100644 --- a/app/src/main/java/xyz/quaver/pupil/ui/dialog/DownloadLocationDialogFragment.kt +++ b/app/src/main/java/xyz/quaver/pupil/ui/dialog/DownloadLocationDialogFragment.kt @@ -75,6 +75,15 @@ class DownloadLocationDialogFragment : DialogFragment() { if (key == null) entries[key]!!.locationAvailable.text = downloadFolder } } + } else { + val downloadFolder = DownloadManager.getInstance(context ?: return@registerForActivityResult).downloadFolder.canonicalPath + val key = entries.keys.firstOrNull { it?.canonicalPath == downloadFolder } + if (key == null) + entries[key]!!.locationAvailable.text = downloadFolder + else { + entries[null]!!.button.isChecked = false + entries[key]!!.button.isChecked = true + } } } @@ -120,8 +129,8 @@ class DownloadLocationDialogFragment : DialogFragment() { byteToString(dir.freeSpace) ) root.setOnClickListener { - entries.values.forEach { _ -> - button.isChecked = false + entries.values.forEach { entry -> + entry.button.isChecked = false } button.performClick() Preferences["download_folder"] = dir.toUri().toString() @@ -133,8 +142,8 @@ class DownloadLocationDialogFragment : DialogFragment() { DownloadLocationItemBinding.inflate(layoutInflater, binding.root, true).apply { locationType.text = requireContext().getString(R.string.settings_download_folder_custom) root.setOnClickListener { - entries.values.forEach { - it.button.isChecked = false + entries.values.forEach { entry -> + entry.button.isChecked = false } button.performClick() From b7f80b9c82d85de383f22b4ecc0c3eb05cd611d7 Mon Sep 17 00:00:00 2001 From: tom5079 Date: Tue, 8 Jun 2021 09:18:20 +0900 Subject: [PATCH 09/18] 5.1.9 --- app/release/output-metadata.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json index 34db9eed..70fce1f1 100644 --- a/app/release/output-metadata.json +++ b/app/release/output-metadata.json @@ -5,13 +5,13 @@ "kind": "Directory" }, "applicationId": "xyz.quaver.pupil", - "variantName": "processReleaseResources", + "variantName": "release", "elements": [ { "type": "SINGLE", "filters": [], "versionCode": 64, - "versionName": "5.1.8-beta2", + "versionName": "5.1.9", "outputFile": "app-release.apk" } ] From 4c9aa29d46ada5ec292a225c4f6b3044f0014acb Mon Sep 17 00:00:00 2001 From: tom5079 Date: Tue, 8 Jun 2021 12:01:16 +0900 Subject: [PATCH 10/18] Fixed Downloaded folder showing up as not downloaded --- .idea/runConfigurations.xml | 1 + app/build.gradle | 2 +- .../quaver/pupil/adapters/ReaderAdapter.kt | 6 +- .../quaver/pupil/services/DownloadService.kt | 10 +-- .../xyz/quaver/pupil/ui/ReaderActivity.kt | 12 ++-- .../xyz/quaver/pupil/util/downloader/Cache.kt | 63 ++++++++++++++++--- 6 files changed, 69 insertions(+), 25 deletions(-) diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml index 7f68460d..e497da99 100644 --- a/.idea/runConfigurations.xml +++ b/.idea/runConfigurations.xml @@ -3,6 +3,7 @@ \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 860da66a..d5d35ec4 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,6 @@ - + diff --git a/app/src/main/java/xyz/quaver/pupil/ui/MainActivity.kt b/app/src/main/java/xyz/quaver/pupil/ui/MainActivity.kt index e7c26b9c..79bd305e 100644 --- a/app/src/main/java/xyz/quaver/pupil/ui/MainActivity.kt +++ b/app/src/main/java/xyz/quaver/pupil/ui/MainActivity.kt @@ -32,7 +32,6 @@ import android.view.animation.DecelerateInterpolator import android.widget.EditText import android.widget.TextView import androidx.appcompat.app.AlertDialog -import androidx.cardview.widget.CardView import androidx.core.content.ContextCompat import androidx.core.view.GravityCompat import androidx.core.view.ViewCompat @@ -797,7 +796,7 @@ class MainActivity : } } catch (e: Exception) { - if (e.message != "No result") + if (e !is CancellationException) FirebaseCrashlytics.getInstance().recordException(e) withContext(Dispatchers.Main) { diff --git a/app/src/main/java/xyz/quaver/pupil/util/SavedSet.kt b/app/src/main/java/xyz/quaver/pupil/util/SavedSet.kt index 6e2c0987..710fe184 100644 --- a/app/src/main/java/xyz/quaver/pupil/util/SavedSet.kt +++ b/app/src/main/java/xyz/quaver/pupil/util/SavedSet.kt @@ -18,11 +18,13 @@ package xyz.quaver.pupil.util -import kotlinx.serialization.* +import com.google.firebase.crashlytics.FirebaseCrashlytics +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.KSerializer import kotlinx.serialization.builtins.ListSerializer import kotlinx.serialization.json.Json +import kotlinx.serialization.serializer import java.io.File -import java.util.* class SavedSet (private val file: File, private val any: T, private val set: MutableSet = mutableSetOf()) : MutableSet by set { @@ -46,6 +48,8 @@ class SavedSet (private val file: File, private val any: T, private val Json.decodeFromString(serializer, file.readText()) }.onSuccess { set.addAll(it) + }.onFailure { + FirebaseCrashlytics.getInstance().recordException(it) } } @@ -57,8 +61,6 @@ class SavedSet (private val file: File, private val any: T, private val @Synchronized override fun add(element: T): Boolean { - load() - set.remove(element) return set.add(element).also { @@ -68,8 +70,6 @@ class SavedSet (private val file: File, private val any: T, private val @Synchronized override fun addAll(elements: Collection): Boolean { - load() - set.removeAll(elements) return set.addAll(elements).also { @@ -79,8 +79,6 @@ class SavedSet (private val file: File, private val any: T, private val @Synchronized override fun remove(element: T): Boolean { - load() - return set.remove(element).also { save() } diff --git a/build.gradle b/build.gradle index d30f8a22..90ef53b7 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:4.2.1' + classpath 'com.android.tools.build:gradle:4.2.2' 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" @@ -25,7 +25,7 @@ allprojects { mavenCentral() jcenter() maven { url "https://jitpack.io" } - maven { url "https://guardian.github.com/maven/repo-releases" } + maven { url "https://guardian.github.io/maven/repo-releases/" } } } From 1f80e360171b6dd229cbad068872f1f2f76f6248 Mon Sep 17 00:00:00 2001 From: tom5079 Date: Sat, 3 Jul 2021 16:25:08 +0900 Subject: [PATCH 15/18] Check update onResume() instead of onCreate() --- app/src/main/java/xyz/quaver/pupil/ui/MainActivity.kt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/xyz/quaver/pupil/ui/MainActivity.kt b/app/src/main/java/xyz/quaver/pupil/ui/MainActivity.kt index 79bd305e..2962518c 100644 --- a/app/src/main/java/xyz/quaver/pupil/ui/MainActivity.kt +++ b/app/src/main/java/xyz/quaver/pupil/ui/MainActivity.kt @@ -124,7 +124,6 @@ class MainActivity : if (Preferences["download_folder", ""].isEmpty()) DownloadLocationDialogFragment().show(supportFragmentManager, "Download Location Dialog") - checkUpdate(this) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R && !Preferences["download_folder_ignore_warning", false] && @@ -144,6 +143,12 @@ class MainActivity : initView() } + override fun onResume() { + super.onResume() + + checkUpdate(this) + } + @OptIn(ExperimentalStdlibApi::class) override fun onBackPressed() { when { From a05dc8c66142553629b1cae5d7bc075bcc698e97 Mon Sep 17 00:00:00 2001 From: tom5079 Date: Fri, 9 Jul 2021 18:03:57 +0900 Subject: [PATCH 16/18] Alignment with changed hitomi.la image server --- .idea/jarRepositories.xml | 5 +++++ app/build.gradle | 4 ++-- app/release/output-metadata.json | 2 +- build.gradle | 1 + 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml index 2cd22f98..6814e8a9 100644 --- a/.idea/jarRepositories.xml +++ b/.idea/jarRepositories.xml @@ -76,5 +76,10 @@ \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index e9552f8a..2c8035bc 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -38,7 +38,7 @@ android { minSdkVersion 16 targetSdkVersion 30 versionCode 64 - versionName "5.1.9-hotfix4" + versionName "5.1.10" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true } @@ -125,7 +125,7 @@ dependencies { implementation "ru.noties.markwon:core:3.1.0" - implementation "xyz.quaver:libpupil:2.1.1" + implementation "xyz.quaver:libpupil:2.1.3" implementation "xyz.quaver:documentfilex:0.6.1" implementation "xyz.quaver:floatingsearchview:1.1.7" diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json index 4df15d37..6d1d4319 100644 --- a/app/release/output-metadata.json +++ b/app/release/output-metadata.json @@ -11,7 +11,7 @@ "type": "SINGLE", "filters": [], "versionCode": 64, - "versionName": "5.1.9-hotfix4", + "versionName": "5.1.10", "outputFile": "app-release.apk" } ] diff --git a/build.gradle b/build.gradle index 90ef53b7..4ee2606c 100644 --- a/build.gradle +++ b/build.gradle @@ -23,6 +23,7 @@ allprojects { repositories { google() mavenCentral() + mavenLocal() jcenter() maven { url "https://jitpack.io" } maven { url "https://guardian.github.io/maven/repo-releases/" } From 44aea606b705ab92060c68d82124050e10a02542 Mon Sep 17 00:00:00 2001 From: tom5079 Date: Fri, 9 Jul 2021 18:22:53 +0900 Subject: [PATCH 17/18] resigned apk --- app/build.gradle | 2 +- app/release/output-metadata.json | 2 +- build.gradle | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 2c8035bc..38a62659 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -37,7 +37,7 @@ android { applicationId "xyz.quaver.pupil" minSdkVersion 16 targetSdkVersion 30 - versionCode 64 + versionCode 66 versionName "5.1.10" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json index 6d1d4319..f724feeb 100644 --- a/app/release/output-metadata.json +++ b/app/release/output-metadata.json @@ -10,7 +10,7 @@ { "type": "SINGLE", "filters": [], - "versionCode": 64, + "versionCode": 66, "versionName": "5.1.10", "outputFile": "app-release.apk" } diff --git a/build.gradle b/build.gradle index 4ee2606c..90ef53b7 100644 --- a/build.gradle +++ b/build.gradle @@ -23,7 +23,6 @@ allprojects { repositories { google() mavenCentral() - mavenLocal() jcenter() maven { url "https://jitpack.io" } maven { url "https://guardian.github.io/maven/repo-releases/" } From a20ef783e13609a8dce3b1f7f58a1ffd44bb2afc Mon Sep 17 00:00:00 2001 From: tom5079 Date: Fri, 23 Jul 2021 21:36:41 +0900 Subject: [PATCH 18/18] Fixed thumbnail not visible --- app/build.gradle | 4 ++-- app/release/output-metadata.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 38a62659..488a2a6f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -38,7 +38,7 @@ android { minSdkVersion 16 targetSdkVersion 30 versionCode 66 - versionName "5.1.10" + versionName "5.1.11" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true } @@ -125,7 +125,7 @@ dependencies { implementation "ru.noties.markwon:core:3.1.0" - implementation "xyz.quaver:libpupil:2.1.3" + implementation "xyz.quaver:libpupil:2.1.4" implementation "xyz.quaver:documentfilex:0.6.1" implementation "xyz.quaver:floatingsearchview:1.1.7" diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json index f724feeb..23423f64 100644 --- a/app/release/output-metadata.json +++ b/app/release/output-metadata.json @@ -11,7 +11,7 @@ "type": "SINGLE", "filters": [], "versionCode": 66, - "versionName": "5.1.10", + "versionName": "5.1.11", "outputFile": "app-release.apk" } ]