From b6bfef6b50d0de90c5e9ae6321067ddbefd94248 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Mon, 13 Feb 2023 18:44:22 +0200 Subject: [PATCH] Option to allow updates to unstable app versions --- app/build.gradle | 6 +++--- .../koitharu/kotatsu/core/github/AppUpdateRepository.kt | 4 +++- .../java/org/koitharu/kotatsu/core/prefs/AppSettings.kt | 4 ++++ .../kotatsu/settings/about/AboutSettingsFragment.kt | 6 ++++++ app/src/main/res/values/strings.xml | 2 ++ app/src/main/res/xml/pref_about.xml | 9 ++++++++- 6 files changed, 26 insertions(+), 5 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 729156f62..e08babf9d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,8 +15,8 @@ android { applicationId 'org.koitharu.kotatsu' minSdkVersion 21 targetSdkVersion 33 - versionCode 514 - versionName '4.3.3' + versionCode 515 + versionName '4.4-beta1' generatedDensities = [] testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -107,7 +107,7 @@ dependencies { implementation 'androidx.recyclerview:recyclerview:1.2.1' implementation 'androidx.viewpager2:viewpager2:1.1.0-beta01' implementation 'androidx.preference:preference-ktx:1.2.0' - implementation 'androidx.work:work-runtime-ktx:2.7.1' + implementation 'androidx.work:work-runtime-ktx:2.8.0' implementation 'androidx.biometric:biometric-ktx:1.2.0-alpha05' implementation 'com.google.android.material:material:1.8.0' //noinspection LifecycleAnnotationProcessorWithJava8 diff --git a/app/src/main/java/org/koitharu/kotatsu/core/github/AppUpdateRepository.kt b/app/src/main/java/org/koitharu/kotatsu/core/github/AppUpdateRepository.kt index 24d28bb68..ab4291f79 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/github/AppUpdateRepository.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/github/AppUpdateRepository.kt @@ -11,6 +11,7 @@ import kotlinx.coroutines.withContext import okhttp3.OkHttpClient import okhttp3.Request import org.koitharu.kotatsu.BuildConfig +import org.koitharu.kotatsu.core.prefs.AppSettings import org.koitharu.kotatsu.parsers.util.await import org.koitharu.kotatsu.parsers.util.byte2HexFormatted import org.koitharu.kotatsu.parsers.util.json.mapJSONNotNull @@ -31,6 +32,7 @@ private const val CERT_SHA1 = "2C:19:C7:E8:07:61:2B:8E:94:51:1B:FD:72:67:07:64:5 @Singleton class AppUpdateRepository @Inject constructor( @ApplicationContext private val context: Context, + private val settings: AppSettings, private val okHttp: OkHttpClient, ) { @@ -64,7 +66,7 @@ class AppUpdateRepository @Inject constructor( val currentVersion = VersionId(BuildConfig.VERSION_NAME) val available = getAvailableVersions().asArrayList() available.sortBy { it.versionId } - if (currentVersion.isStable) { + if (currentVersion.isStable && !settings.isUnstableUpdatesAllowed) { available.retainAll { it.versionId.isStable } } available.maxByOrNull { it.versionId } diff --git a/app/src/main/java/org/koitharu/kotatsu/core/prefs/AppSettings.kt b/app/src/main/java/org/koitharu/kotatsu/core/prefs/AppSettings.kt index 1239b9cb5..c63db4e66 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/prefs/AppSettings.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/prefs/AppSettings.kt @@ -170,6 +170,9 @@ class AppSettings @Inject constructor(@ApplicationContext context: Context) { val isDynamicShortcutsEnabled: Boolean get() = prefs.getBoolean(KEY_SHORTCUTS, true) + val isUnstableUpdatesAllowed: Boolean + get() = prefs.getBoolean(KEY_UPDATES_UNSTABLE, false) + fun isContentPrefetchEnabled(): Boolean { val policy = NetworkPolicy.from(prefs.getString(KEY_PREFETCH_CONTENT, null), NetworkPolicy.NEVER) return policy.isNetworkAllowed(connectivityManager) @@ -376,6 +379,7 @@ class AppSettings @Inject constructor(@ApplicationContext context: Context) { const val KEY_LOGGING_ENABLED = "logging" const val KEY_LOGS_SHARE = "logs_share" const val KEY_SOURCES_GRID = "sources_grid" + const val KEY_UPDATES_UNSTABLE = "updates_unstable" // About const val KEY_APP_UPDATE = "app_update" diff --git a/app/src/main/java/org/koitharu/kotatsu/settings/about/AboutSettingsFragment.kt b/app/src/main/java/org/koitharu/kotatsu/settings/about/AboutSettingsFragment.kt index aabd8a95f..c53fcfdce 100644 --- a/app/src/main/java/org/koitharu/kotatsu/settings/about/AboutSettingsFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/settings/about/AboutSettingsFragment.kt @@ -6,12 +6,15 @@ import android.view.View import androidx.core.net.toUri import androidx.fragment.app.viewModels import androidx.preference.Preference +import androidx.preference.SwitchPreferenceCompat import com.google.android.material.snackbar.Snackbar import dagger.hilt.android.AndroidEntryPoint import org.koitharu.kotatsu.BuildConfig import org.koitharu.kotatsu.R import org.koitharu.kotatsu.base.ui.BasePreferenceFragment import org.koitharu.kotatsu.core.github.AppVersion +import org.koitharu.kotatsu.core.github.VersionId +import org.koitharu.kotatsu.core.github.isStable import org.koitharu.kotatsu.core.logs.FileLogger import org.koitharu.kotatsu.core.prefs.AppSettings import org.koitharu.kotatsu.utils.ShareHelper @@ -31,6 +34,9 @@ class AboutSettingsFragment : BasePreferenceFragment(R.string.about) { title = getString(R.string.app_version, BuildConfig.VERSION_NAME) isEnabled = viewModel.isUpdateSupported } + findPreference(AppSettings.KEY_UPDATES_UNSTABLE)?.run { + isEnabled = VersionId(BuildConfig.VERSION_NAME).isStable + } } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d8257b8b0..cb794a531 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -421,4 +421,6 @@ There is nothing here To track reading progress, select Menu → Track on the manga details screen. Services + Allow unstable updates + Propose updates to beta versions of the app diff --git a/app/src/main/res/xml/pref_about.xml b/app/src/main/res/xml/pref_about.xml index bb7c023fb..cc976ef86 100644 --- a/app/src/main/res/xml/pref_about.xml +++ b/app/src/main/res/xml/pref_about.xml @@ -10,11 +10,18 @@ android:persistent="false" android:summary="@string/check_for_updates" /> + + + android:title="@string/enable_logging" + app:allowDividerAbove="true" />