From c695468aeca80029b0147902bd926613e313fccd Mon Sep 17 00:00:00 2001 From: Koitharu Date: Thu, 5 May 2022 15:43:07 +0300 Subject: [PATCH] Fix cold launch --- .../koitharu/kotatsu/main/ui/MainActivity.kt | 20 ++++----- .../kotatsu/settings/AppUpdateChecker.kt | 43 +++++++++---------- .../settings/onboard/OnboardDialogFragment.kt | 6 ++- .../settings/onboard/OnboardViewModel.kt | 3 +- 4 files changed, 35 insertions(+), 37 deletions(-) diff --git a/app/src/main/java/org/koitharu/kotatsu/main/ui/MainActivity.kt b/app/src/main/java/org/koitharu/kotatsu/main/ui/MainActivity.kt index 24805aa84..0e8c85fb9 100644 --- a/app/src/main/java/org/koitharu/kotatsu/main/ui/MainActivity.kt +++ b/app/src/main/java/org/koitharu/kotatsu/main/ui/MainActivity.kt @@ -22,7 +22,6 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.navigation.NavigationView import com.google.android.material.snackbar.Snackbar import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import org.koin.android.ext.android.get import org.koin.androidx.viewmodel.ext.android.viewModel @@ -385,20 +384,19 @@ class MainActivity : } private fun onFirstStart() { - lifecycleScope.launch(Dispatchers.Default) { - TrackWorker.setup(applicationContext) - SuggestionsWorker.setup(applicationContext) - if (AppUpdateChecker.isUpdateSupported(this@MainActivity)) { + lifecycleScope.launchWhenResumed { + val isUpdateSupported = withContext(Dispatchers.Default) { + TrackWorker.setup(applicationContext) + SuggestionsWorker.setup(applicationContext) + AppUpdateChecker.isUpdateSupported(this@MainActivity) + } + if (isUpdateSupported) { AppUpdateChecker(this@MainActivity).checkIfNeeded() } val settings = get() when { - !settings.isSourcesSelected -> withContext(Dispatchers.Main) { - OnboardDialogFragment.showWelcome(supportFragmentManager) - } - settings.newSources.isNotEmpty() -> withContext(Dispatchers.Main) { - NewSourcesDialogFragment.show(supportFragmentManager) - } + !settings.isSourcesSelected -> OnboardDialogFragment.showWelcome(supportFragmentManager) + settings.newSources.isNotEmpty() -> NewSourcesDialogFragment.show(supportFragmentManager) } } } diff --git a/app/src/main/java/org/koitharu/kotatsu/settings/AppUpdateChecker.kt b/app/src/main/java/org/koitharu/kotatsu/settings/AppUpdateChecker.kt index 12d7f21ce..5b7bc661e 100644 --- a/app/src/main/java/org/koitharu/kotatsu/settings/AppUpdateChecker.kt +++ b/app/src/main/java/org/koitharu/kotatsu/settings/AppUpdateChecker.kt @@ -8,6 +8,15 @@ import android.net.Uri import androidx.activity.ComponentActivity import androidx.annotation.MainThread import com.google.android.material.dialog.MaterialAlertDialogBuilder +import java.io.ByteArrayInputStream +import java.io.InputStream +import java.security.MessageDigest +import java.security.NoSuchAlgorithmException +import java.security.cert.CertificateEncodingException +import java.security.cert.CertificateException +import java.security.cert.CertificateFactory +import java.security.cert.X509Certificate +import java.util.concurrent.TimeUnit import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import org.koin.android.ext.android.get @@ -19,15 +28,6 @@ import org.koitharu.kotatsu.core.github.VersionId import org.koitharu.kotatsu.core.prefs.AppSettings import org.koitharu.kotatsu.parsers.util.byte2HexFormatted import org.koitharu.kotatsu.utils.FileSize -import java.io.ByteArrayInputStream -import java.io.InputStream -import java.security.MessageDigest -import java.security.NoSuchAlgorithmException -import java.security.cert.CertificateEncodingException -import java.security.cert.CertificateException -import java.security.cert.CertificateFactory -import java.security.cert.X509Certificate -import java.util.concurrent.TimeUnit class AppUpdateChecker(private val activity: ComponentActivity) { @@ -61,25 +61,22 @@ class AppUpdateChecker(private val activity: ComponentActivity) { @MainThread private fun showUpdateDialog(version: AppVersion) { + val message = buildString { + append(activity.getString(R.string.new_version_s, version.name)) + appendLine() + append(activity.getString(R.string.size_s, FileSize.BYTES.format(activity, version.apkSize))) + appendLine() + appendLine() + append(version.description) + } MaterialAlertDialogBuilder(activity) .setTitle(R.string.app_update_available) - .setMessage(buildString { - append(activity.getString(R.string.new_version_s, version.name)) - appendLine() - append( - activity.getString( - R.string.size_s, - FileSize.BYTES.format(activity, version.apkSize), - ) - ) - appendLine() - appendLine() - append(version.description) - }) + .setMessage(message) .setPositiveButton(R.string.download) { _, _ -> activity.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(version.apkUrl))) } .setNegativeButton(R.string.close, null) + .setCancelable(false) .create() .show() } @@ -128,4 +125,4 @@ class AppUpdateChecker(private val activity: ComponentActivity) { } } } -} +} \ No newline at end of file diff --git a/app/src/main/java/org/koitharu/kotatsu/settings/onboard/OnboardDialogFragment.kt b/app/src/main/java/org/koitharu/kotatsu/settings/onboard/OnboardDialogFragment.kt index 92fee1db9..4f695b154 100644 --- a/app/src/main/java/org/koitharu/kotatsu/settings/onboard/OnboardDialogFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/settings/onboard/OnboardDialogFragment.kt @@ -18,8 +18,10 @@ import org.koitharu.kotatsu.utils.ext.observeNotNull import org.koitharu.kotatsu.utils.ext.showAllowStateLoss import org.koitharu.kotatsu.utils.ext.withArgs -class OnboardDialogFragment : AlertDialogFragment(), - OnListItemClickListener, DialogInterface.OnClickListener { +class OnboardDialogFragment : + AlertDialogFragment(), + OnListItemClickListener, + DialogInterface.OnClickListener { private val viewModel by viewModel() private var isWelcome: Boolean = false diff --git a/app/src/main/java/org/koitharu/kotatsu/settings/onboard/OnboardViewModel.kt b/app/src/main/java/org/koitharu/kotatsu/settings/onboard/OnboardViewModel.kt index f2a929017..2f1495243 100644 --- a/app/src/main/java/org/koitharu/kotatsu/settings/onboard/OnboardViewModel.kt +++ b/app/src/main/java/org/koitharu/kotatsu/settings/onboard/OnboardViewModel.kt @@ -3,7 +3,6 @@ package org.koitharu.kotatsu.settings.onboard import androidx.collection.ArraySet import androidx.core.os.LocaleListCompat import androidx.lifecycle.MutableLiveData -import java.util.* import org.koitharu.kotatsu.base.ui.BaseViewModel import org.koitharu.kotatsu.core.prefs.AppSettings import org.koitharu.kotatsu.parsers.model.MangaSource @@ -12,6 +11,7 @@ import org.koitharu.kotatsu.parsers.util.toTitleCase import org.koitharu.kotatsu.settings.onboard.model.SourceLocale import org.koitharu.kotatsu.utils.ext.map import org.koitharu.kotatsu.utils.ext.mapToSet +import java.util.* class OnboardViewModel( private val settings: AppSettings, @@ -55,6 +55,7 @@ class OnboardViewModel( settings.hiddenSources = allSources.filterNot { x -> x.locale in selectedLocales }.mapToSet { x -> x.name } + settings.markKnownSources(settings.newSources) } private fun rebuildList() {