diff --git a/app/src/main/java/io/legado/app/help/glide/progress/ProgressManager.kt b/app/src/main/java/io/legado/app/help/glide/progress/ProgressManager.kt index d9a81d9f6..8b37534fa 100644 --- a/app/src/main/java/io/legado/app/help/glide/progress/ProgressManager.kt +++ b/app/src/main/java/io/legado/app/help/glide/progress/ProgressManager.kt @@ -1,7 +1,6 @@ package io.legado.app.help.glide.progress import io.legado.app.model.analyzeRule.AnalyzeUrl -import io.legado.app.utils.runOnUI import java.util.concurrent.ConcurrentHashMap /** @@ -20,9 +19,7 @@ object ProgressManager { percentage = 0 isComplete = true } - runOnUI { - it.invoke(isComplete, percentage, bytesRead, totalBytes) - } + it.invoke(isComplete, percentage, bytesRead, totalBytes) if (isComplete) { removeListener(url) } diff --git a/app/src/main/java/io/legado/app/model/ReadManga.kt b/app/src/main/java/io/legado/app/model/ReadManga.kt index f5cfd9dc6..3fec82e92 100644 --- a/app/src/main/java/io/legado/app/model/ReadManga.kt +++ b/app/src/main/java/io/legado/app/model/ReadManga.kt @@ -31,11 +31,10 @@ import kotlinx.coroutines.Dispatchers.IO import kotlinx.coroutines.Job import kotlinx.coroutines.MainScope import kotlinx.coroutines.SupervisorJob -import kotlinx.coroutines.asCoroutineDispatcher import kotlinx.coroutines.cancelChildren import kotlinx.coroutines.delay import kotlinx.coroutines.ensureActive -import kotlinx.coroutines.flow.distinctUntilChangedBy +import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.flow import kotlinx.coroutines.flow.toList import kotlinx.coroutines.launch @@ -261,7 +260,6 @@ object ReadManga : CoroutineScope by MainScope() { downloadedChapters.clear() downloadFailChapters.clear() downloadLoadingChapters.clear() - executor.asCoroutineDispatcher().cancelChildren() downloadScope.coroutineContext.cancelChildren() coroutineContext.cancelChildren() } @@ -274,10 +272,8 @@ object ReadManga : CoroutineScope by MainScope() { content: String, book: Book, ) { - if (mTopChapter != null && mTopChapter!!.title != chapterTitle && BookHelp.hasContent( - book, - mTopChapter!! - ) + if (mTopChapter != null && mTopChapter!!.title != chapterTitle + && BookHelp.hasContent(book, mTopChapter!!) ) { BookHelp.delContent(book, chapter) } @@ -294,9 +290,7 @@ object ReadManga : CoroutineScope by MainScope() { val mSrc = NetworkUtils.getAbsoluteURL(chapter.url, src) emit(mSrc) } - }.distinctUntilChangedBy { - it - }.mapIndexed { index, src -> + }.distinctUntilChanged().mapIndexed { index, src -> MangeContent( mChapterPageCount = durChapterPageCount, mChapterPagePos = durChapterPagePos.plus(1), @@ -395,9 +389,7 @@ object ReadManga : CoroutineScope by MainScope() { } } }.onError { - runOnUI { - mCallback?.noData() - } + mCallback?.noData() } } diff --git a/app/src/main/java/io/legado/app/model/recyclerView/MangaVH.kt b/app/src/main/java/io/legado/app/model/recyclerView/MangaVH.kt index f6029865d..dbd486283 100644 --- a/app/src/main/java/io/legado/app/model/recyclerView/MangaVH.kt +++ b/app/src/main/java/io/legado/app/model/recyclerView/MangaVH.kt @@ -66,7 +66,7 @@ open class MangaVH(val binding: VB, private val context: Conte bytesRead: Long, totalBytes: Long, ) { - mProgress.text = "${percentage}%" + mProgress.text = "$percentage%" } }) try { diff --git a/app/src/main/java/io/legado/app/ui/book/manga/ReadMangaActivity.kt b/app/src/main/java/io/legado/app/ui/book/manga/ReadMangaActivity.kt index e66ad77e6..a0c71bb12 100644 --- a/app/src/main/java/io/legado/app/ui/book/manga/ReadMangaActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/manga/ReadMangaActivity.kt @@ -150,8 +150,8 @@ class ReadMangaActivity : VMBaseActivity() } } setNestedPreScrollListener { _, _, _, position -> - if (mAdapter.getCurrentList() - .isNotEmpty() && position <= mAdapter.getCurrentList().lastIndex + if (mAdapter.getCurrentList().isNotEmpty() + && position <= mAdapter.getCurrentList().lastIndex ) { try { val content = mAdapter.getCurrentList()[position] diff --git a/app/src/main/java/io/legado/app/ui/book/manga/rv/MangaAdapter.kt b/app/src/main/java/io/legado/app/ui/book/manga/rv/MangaAdapter.kt index 5716ffe51..80f0a4f17 100644 --- a/app/src/main/java/io/legado/app/ui/book/manga/rv/MangaAdapter.kt +++ b/app/src/main/java/io/legado/app/ui/book/manga/rv/MangaAdapter.kt @@ -63,18 +63,16 @@ class MangaAdapter(private val context: Context) : //全部替换数据 fun submitList(contents: MutableList, runnable: Runnable) { - val currentList = mDiffer.currentList.toMutableList() - currentList.addAll(contents) - if (ReadManga.chapterChanged) { - mDiffer.submitList(contents) { - runnable.run() - } + val list = if (ReadManga.chapterChanged) { + contents } else { - mDiffer.submitList(currentList) { - runnable.run() - } + val currentList = mDiffer.currentList.toMutableList() + currentList.addAll(contents) + currentList + } + mDiffer.submitList(list) { + runnable.run() } - } inner class PageViewHolder(binding: BookComicRvBinding) : diff --git a/app/src/main/java/io/legado/app/ui/book/read/BaseReadBookActivity.kt b/app/src/main/java/io/legado/app/ui/book/read/BaseReadBookActivity.kt index 1c5409466..30d301f81 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/BaseReadBookActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/BaseReadBookActivity.kt @@ -13,6 +13,7 @@ import androidx.activity.viewModels import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat import androidx.core.view.isVisible +import androidx.core.view.updateLayoutParams import io.legado.app.R import io.legado.app.base.VMBaseActivity import io.legado.app.constant.AppConst.charsets @@ -84,8 +85,8 @@ abstract class BaseReadBookActivity : super.onCreate(savedInstanceState) ViewCompat.setOnApplyWindowInsetsListener(binding.root) { _, windowInsets -> val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()) - binding.navigationBar.run { - layoutParams = layoutParams.apply { height = insets.bottom } + binding.navigationBar.updateLayoutParams { + height = insets.bottom } windowInsets } diff --git a/app/src/main/java/io/legado/app/utils/ViewExtensions.kt b/app/src/main/java/io/legado/app/utils/ViewExtensions.kt index 2f3d32eaf..7d6e0cdae 100644 --- a/app/src/main/java/io/legado/app/utils/ViewExtensions.kt +++ b/app/src/main/java/io/legado/app/utils/ViewExtensions.kt @@ -34,6 +34,7 @@ import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat import androidx.core.view.get import androidx.core.view.marginBottom +import androidx.core.view.updateLayoutParams import androidx.recyclerview.widget.RecyclerView import androidx.viewpager.widget.ViewPager import io.legado.app.help.config.AppConfig @@ -283,9 +284,9 @@ fun View.applyNavigationBarPadding(withInitialPadding: Boolean = false) { fun View.applyNavigationBarMargin(withInitialMargin: Boolean = false) { val initialMargin = if (withInitialMargin) marginBottom else 0 ViewCompat.setOnApplyWindowInsetsListener(this) { _, windowInsets -> - val lp = layoutParams as ViewGroup.MarginLayoutParams - lp.bottomMargin = initialMargin + windowInsets.navigationBarHeight - layoutParams = lp + updateLayoutParams { + bottomMargin = initialMargin + windowInsets.navigationBarHeight + } windowInsets } }