From ab9bdf9f07f847c6c658ce9a578dc693d65aa3f0 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Sun, 11 Sep 2022 09:07:25 +0300 Subject: [PATCH] Fixes --- app/build.gradle | 4 ++-- .../kotatsu/details/ui/ChaptersFragment.kt | 12 ++++++------ .../kotatsu/download/domain/DownloadManager.kt | 2 +- .../history/ui/HistoryListMenuProvider.kt | 4 ++-- .../kotatsu/list/ui/adapter/BadgeADUtil.kt | 3 +++ .../list/ui/adapter/MangaListDetailedItemAD.kt | 2 +- .../kotatsu/list/ui/adapter/MangaListItemAD.kt | 2 +- .../kotatsu/local/domain/CbzMangaOutput.kt | 8 ++++---- .../koitharu/kotatsu/utils/ext/ThrowableExt.kt | 18 ++++++++++++------ 9 files changed, 32 insertions(+), 23 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 6c1b01155..da9879f76 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -14,8 +14,8 @@ android { applicationId 'org.koitharu.kotatsu' minSdkVersion 21 targetSdkVersion 32 - versionCode 426 - versionName '3.4.14' + versionCode 427 + versionName '3.4.15' generatedDensities = [] testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/app/src/main/java/org/koitharu/kotatsu/details/ui/ChaptersFragment.kt b/app/src/main/java/org/koitharu/kotatsu/details/ui/ChaptersFragment.kt index 9f1ad93e9..a184c8dad 100644 --- a/app/src/main/java/org/koitharu/kotatsu/details/ui/ChaptersFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/details/ui/ChaptersFragment.kt @@ -12,6 +12,7 @@ import androidx.core.view.MenuProvider import androidx.core.view.isVisible import androidx.core.view.updatePadding import com.google.android.material.snackbar.Snackbar +import kotlin.math.roundToInt import org.koin.androidx.viewmodel.ext.android.sharedViewModel import org.koitharu.kotatsu.R import org.koitharu.kotatsu.base.ui.BaseFragment @@ -29,7 +30,6 @@ import org.koitharu.kotatsu.reader.ui.ReaderActivity import org.koitharu.kotatsu.reader.ui.ReaderState import org.koitharu.kotatsu.utils.RecyclerViewScrollCallback import org.koitharu.kotatsu.utils.ext.addMenuProvider -import kotlin.math.roundToInt class ChaptersFragment : BaseFragment(), @@ -46,7 +46,7 @@ class ChaptersFragment : override fun onInflateView( inflater: LayoutInflater, - container: ViewGroup? + container: ViewGroup?, ) = FragmentChaptersBinding.inflate(inflater, container, false) override fun onViewCreated(view: View, savedInstanceState: Bundle?) { @@ -98,7 +98,7 @@ class ChaptersFragment : manga = viewModel.manga.value ?: return, state = ReaderState(item.chapter.id, 0, 0), ), - options.toBundle() + options.toBundle(), ) } @@ -128,7 +128,7 @@ class ChaptersFragment : Snackbar.make( binding.recyclerViewChapters, R.string.chapters_will_removed_background, - Snackbar.LENGTH_LONG + Snackbar.LENGTH_LONG, ).show() } } @@ -271,8 +271,8 @@ class ChaptersFragment : } override fun onPrepareMenu(menu: Menu) { - menu.findItem(R.id.action_reversed).isChecked = viewModel.isChaptersReversed.value == true - menu.findItem(R.id.action_search).isVisible = viewModel.isChaptersEmpty.value == false + menu.findItem(R.id.action_reversed)?.isChecked = viewModel.isChaptersReversed.value == true + menu.findItem(R.id.action_search)?.isVisible = viewModel.isChaptersEmpty.value == false } override fun onMenuItemSelected(menuItem: MenuItem): Boolean = when (menuItem.itemId) { diff --git a/app/src/main/java/org/koitharu/kotatsu/download/domain/DownloadManager.kt b/app/src/main/java/org/koitharu/kotatsu/download/domain/DownloadManager.kt index 7f18106b8..8452512be 100644 --- a/app/src/main/java/org/koitharu/kotatsu/download/domain/DownloadManager.kt +++ b/app/src/main/java/org/koitharu/kotatsu/download/domain/DownloadManager.kt @@ -150,7 +150,7 @@ class DownloadManager( } outState.value = DownloadState.PostProcessing(startId, data, cover) output.mergeWithExisting() - output.finalize() + output.finish() val localManga = localMangaRepository.getFromFile(output.file) outState.value = DownloadState.Done(startId, data, cover, localManga) } catch (e: CancellationException) { diff --git a/app/src/main/java/org/koitharu/kotatsu/history/ui/HistoryListMenuProvider.kt b/app/src/main/java/org/koitharu/kotatsu/history/ui/HistoryListMenuProvider.kt index fe0daa58c..00c5dee0b 100644 --- a/app/src/main/java/org/koitharu/kotatsu/history/ui/HistoryListMenuProvider.kt +++ b/app/src/main/java/org/koitharu/kotatsu/history/ui/HistoryListMenuProvider.kt @@ -5,9 +5,9 @@ import android.view.Menu import android.view.MenuInflater import android.view.MenuItem import androidx.core.view.MenuProvider +import com.google.android.material.R as materialR import com.google.android.material.dialog.MaterialAlertDialogBuilder import org.koitharu.kotatsu.R -import com.google.android.material.R as materialR class HistoryListMenuProvider( private val context: Context, @@ -38,6 +38,6 @@ class HistoryListMenuProvider( } override fun onPrepareMenu(menu: Menu) { - menu.findItem(R.id.action_history_grouping).isChecked = viewModel.isGroupingEnabled.value == true + menu.findItem(R.id.action_history_grouping)?.isChecked = viewModel.isGroupingEnabled.value == true } } \ No newline at end of file diff --git a/app/src/main/java/org/koitharu/kotatsu/list/ui/adapter/BadgeADUtil.kt b/app/src/main/java/org/koitharu/kotatsu/list/ui/adapter/BadgeADUtil.kt index e25a70657..ede90b552 100644 --- a/app/src/main/java/org/koitharu/kotatsu/list/ui/adapter/BadgeADUtil.kt +++ b/app/src/main/java/org/koitharu/kotatsu/list/ui/adapter/BadgeADUtil.kt @@ -1,13 +1,16 @@ @file:SuppressLint("UnsafeOptInUsageError") + package org.koitharu.kotatsu.list.ui.adapter import android.annotation.SuppressLint import android.view.View +import androidx.annotation.CheckResult import androidx.core.view.doOnNextLayout import com.google.android.material.badge.BadgeDrawable import com.google.android.material.badge.BadgeUtils import org.koitharu.kotatsu.R +@CheckResult fun View.bindBadge(badge: BadgeDrawable?, counter: Int): BadgeDrawable? { return if (counter > 0) { val badgeDrawable = badge ?: initBadge(this) diff --git a/app/src/main/java/org/koitharu/kotatsu/list/ui/adapter/MangaListDetailedItemAD.kt b/app/src/main/java/org/koitharu/kotatsu/list/ui/adapter/MangaListDetailedItemAD.kt index 4c1443b72..bafcb4bc7 100644 --- a/app/src/main/java/org/koitharu/kotatsu/list/ui/adapter/MangaListDetailedItemAD.kt +++ b/app/src/main/java/org/koitharu/kotatsu/list/ui/adapter/MangaListDetailedItemAD.kt @@ -46,7 +46,7 @@ fun mangaListDetailedItemAD( } binding.textViewRating.textAndVisible = item.rating binding.textViewTags.text = item.tags - itemView.bindBadge(badge, item.counter) + badge = itemView.bindBadge(badge, item.counter) } onViewRecycled { diff --git a/app/src/main/java/org/koitharu/kotatsu/list/ui/adapter/MangaListItemAD.kt b/app/src/main/java/org/koitharu/kotatsu/list/ui/adapter/MangaListItemAD.kt index fb8f5e216..cd07a15ba 100644 --- a/app/src/main/java/org/koitharu/kotatsu/list/ui/adapter/MangaListItemAD.kt +++ b/app/src/main/java/org/koitharu/kotatsu/list/ui/adapter/MangaListItemAD.kt @@ -40,7 +40,7 @@ fun mangaListItemAD( lifecycle(lifecycleOwner) enqueueWith(coil) } - itemView.bindBadge(badge, item.counter) + badge = itemView.bindBadge(badge, item.counter) } onViewRecycled { diff --git a/app/src/main/java/org/koitharu/kotatsu/local/domain/CbzMangaOutput.kt b/app/src/main/java/org/koitharu/kotatsu/local/domain/CbzMangaOutput.kt index 53e2d474a..0d21291ac 100644 --- a/app/src/main/java/org/koitharu/kotatsu/local/domain/CbzMangaOutput.kt +++ b/app/src/main/java/org/koitharu/kotatsu/local/domain/CbzMangaOutput.kt @@ -1,6 +1,8 @@ package org.koitharu.kotatsu.local.domain import androidx.annotation.WorkerThread +import java.io.File +import java.util.zip.ZipFile import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.runInterruptible import okio.Closeable @@ -11,8 +13,6 @@ import org.koitharu.kotatsu.parsers.model.MangaChapter import org.koitharu.kotatsu.parsers.util.toFileNameSafe import org.koitharu.kotatsu.utils.ext.deleteAwait import org.koitharu.kotatsu.utils.ext.readText -import java.io.File -import java.util.zip.ZipFile class CbzMangaOutput( val file: File, @@ -62,7 +62,7 @@ class CbzMangaOutput( index.addChapter(chapter) } - suspend fun finalize() { + suspend fun finish() { runInterruptible(Dispatchers.IO) { output.put(ENTRY_NAME_INDEX, index.toString()) output.finish() @@ -89,7 +89,7 @@ class CbzMangaOutput( otherIndex = MangaIndex( zip.getInputStream(entry).use { it.reader().readText() - } + }, ) } else { output.copyEntryFrom(zip, entry) diff --git a/app/src/main/java/org/koitharu/kotatsu/utils/ext/ThrowableExt.kt b/app/src/main/java/org/koitharu/kotatsu/utils/ext/ThrowableExt.kt index 4597d7d6c..d4f654525 100644 --- a/app/src/main/java/org/koitharu/kotatsu/utils/ext/ThrowableExt.kt +++ b/app/src/main/java/org/koitharu/kotatsu/utils/ext/ThrowableExt.kt @@ -2,6 +2,7 @@ package org.koitharu.kotatsu.utils.ext import android.content.ActivityNotFoundException import android.content.res.Resources +import androidx.collection.arraySetOf import java.net.SocketTimeoutException import okio.FileNotFoundException import org.acra.ktx.sendWithAcra @@ -30,14 +31,19 @@ fun Throwable.getDisplayMessage(resources: Resources): String = when (this) { } ?: resources.getString(R.string.error_occurred) fun Throwable.isReportable(): Boolean { - if (this !is Exception) { - return true - } - return this is ParseException || this is IllegalArgumentException || - this is IllegalStateException || this.javaClass == RuntimeException::class.java + return this is Error || this.javaClass in reportableExceptions } fun Throwable.report(message: String?) { val exception = CaughtException(this, message) exception.sendWithAcra() -} \ No newline at end of file +} + +private val reportableExceptions = arraySetOf>( + ParseException::class.java, + RuntimeException::class.java, + IllegalStateException::class.java, + IllegalArgumentException::class.java, + ConcurrentModificationException::class.java, + UnsupportedOperationException::class.java, +) \ No newline at end of file