From a7a5c8978db1d5b04b3540556942eeb3d360b124 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Wed, 20 Oct 2021 19:07:36 +0300 Subject: [PATCH] Fix page image saving --- .../java/org/koitharu/kotatsu/core/model/MangaSource.kt | 3 ++- .../org/koitharu/kotatsu/reader/ui/ReaderActivity.kt | 6 +++++- .../org/koitharu/kotatsu/reader/ui/ReaderViewModel.kt | 7 +++++-- .../reader/ui/pager/standard/PagerReaderFragment.kt | 9 ++++++--- .../java/org/koitharu/kotatsu/utils/MediaStoreCompat.kt | 3 +-- 5 files changed, 19 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/org/koitharu/kotatsu/core/model/MangaSource.kt b/app/src/main/java/org/koitharu/kotatsu/core/model/MangaSource.kt index 10cc61c91..d4a6247dc 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/model/MangaSource.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/model/MangaSource.kt @@ -44,7 +44,8 @@ enum class MangaSource( ; @get:Throws(NoBeanDefFoundException::class) - @Deprecated("") + @Deprecated("", ReplaceWith("MangaRepository(this)", + "org.koitharu.kotatsu.core.parser.MangaRepository")) val repository: MangaRepository get() = GlobalContext.get().get(named(this)) } \ No newline at end of file diff --git a/app/src/main/java/org/koitharu/kotatsu/reader/ui/ReaderActivity.kt b/app/src/main/java/org/koitharu/kotatsu/reader/ui/ReaderActivity.kt index b8b7bcb19..444913403 100644 --- a/app/src/main/java/org/koitharu/kotatsu/reader/ui/ReaderActivity.kt +++ b/app/src/main/java/org/koitharu/kotatsu/reader/ui/ReaderActivity.kt @@ -13,7 +13,10 @@ import androidx.activity.result.contract.ActivityResultContracts import androidx.appcompat.app.AlertDialog import androidx.core.content.ContextCompat import androidx.core.graphics.Insets -import androidx.core.view.* +import androidx.core.view.WindowInsetsCompat +import androidx.core.view.isVisible +import androidx.core.view.postDelayed +import androidx.core.view.updatePadding import androidx.fragment.app.commit import androidx.lifecycle.lifecycleScope import com.google.android.material.snackbar.Snackbar @@ -192,6 +195,7 @@ class ReaderActivity : BaseFullscreenActivity(), override fun onActivityResult(result: Boolean) { if (result) { + viewModel.saveCurrentState(reader?.getCurrentState()) viewModel.saveCurrentPage(contentResolver) } } diff --git a/app/src/main/java/org/koitharu/kotatsu/reader/ui/ReaderViewModel.kt b/app/src/main/java/org/koitharu/kotatsu/reader/ui/ReaderViewModel.kt index adb4a5914..996b14642 100644 --- a/app/src/main/java/org/koitharu/kotatsu/reader/ui/ReaderViewModel.kt +++ b/app/src/main/java/org/koitharu/kotatsu/reader/ui/ReaderViewModel.kt @@ -19,6 +19,7 @@ import org.koitharu.kotatsu.core.model.Manga import org.koitharu.kotatsu.core.model.MangaChapter import org.koitharu.kotatsu.core.model.MangaPage import org.koitharu.kotatsu.core.os.ShortcutsRepository +import org.koitharu.kotatsu.core.parser.MangaRepository import org.koitharu.kotatsu.core.prefs.AppSettings import org.koitharu.kotatsu.core.prefs.ReaderMode import org.koitharu.kotatsu.history.domain.HistoryRepository @@ -27,7 +28,9 @@ import org.koitharu.kotatsu.reader.ui.pager.ReaderPage import org.koitharu.kotatsu.reader.ui.pager.ReaderUiState import org.koitharu.kotatsu.utils.MediaStoreCompat import org.koitharu.kotatsu.utils.SingleLiveEvent -import org.koitharu.kotatsu.utils.ext.* +import org.koitharu.kotatsu.utils.ext.IgnoreErrors +import org.koitharu.kotatsu.utils.ext.asLiveDataDistinct +import org.koitharu.kotatsu.utils.ext.processLifecycleScope class ReaderViewModel( intent: MangaIntent, @@ -154,7 +157,7 @@ class ReaderViewModel( val page = content.value?.pages?.find { it.chapterId == state.chapterId && it.index == state.page }?.toMangaPage() ?: error("Page not found") - val repo = page.source.repository + val repo = MangaRepository(page.source) val pageUrl = repo.getPageUrl(page) val file = get()[pageUrl] ?: error("Page not found in cache") val uri = file.inputStream().use { input -> diff --git a/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/standard/PagerReaderFragment.kt b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/standard/PagerReaderFragment.kt index c93a27ef0..d2d2a6b50 100644 --- a/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/standard/PagerReaderFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/standard/PagerReaderFragment.kt @@ -12,7 +12,10 @@ import org.koitharu.kotatsu.reader.ui.ReaderState import org.koitharu.kotatsu.reader.ui.pager.BaseReader import org.koitharu.kotatsu.reader.ui.pager.BaseReaderAdapter import org.koitharu.kotatsu.reader.ui.pager.ReaderPage -import org.koitharu.kotatsu.utils.ext.* +import org.koitharu.kotatsu.utils.ext.doOnPageChanged +import org.koitharu.kotatsu.utils.ext.recyclerView +import org.koitharu.kotatsu.utils.ext.resetTransformations +import org.koitharu.kotatsu.utils.ext.viewLifecycleScope import kotlin.math.absoluteValue class PagerReaderFragment : BaseReader() { @@ -37,8 +40,8 @@ class PagerReaderFragment : BaseReader() { val transformer = if (it) PageAnimTransformer() else null binding.pager.setPageTransformer(transformer) if (transformer == null) { - binding.pager.recyclerView?.children?.forEach { - it.resetTransformations() + binding.pager.recyclerView?.children?.forEach { view -> + view.resetTransformations() } } } diff --git a/app/src/main/java/org/koitharu/kotatsu/utils/MediaStoreCompat.kt b/app/src/main/java/org/koitharu/kotatsu/utils/MediaStoreCompat.kt index 7bf07f4c2..cee13322f 100644 --- a/app/src/main/java/org/koitharu/kotatsu/utils/MediaStoreCompat.kt +++ b/app/src/main/java/org/koitharu/kotatsu/utils/MediaStoreCompat.kt @@ -25,10 +25,9 @@ class MediaStoreCompat(private val contentResolver: ContentResolver) { MediaStore.Images.Media.MIME_TYPE, MimeTypeMap.getSingleton().getMimeTypeFromExtension(fileName.substringAfterLast('.')) ) - cv.put(MediaStore.Images.Media.DATE_ADDED, System.currentTimeMillis()) + cv.put(MediaStore.Images.Media.DATE_ADDED, System.currentTimeMillis() / 1_000) cv.put(MediaStore.Images.Media.DATE_MODIFIED, System.currentTimeMillis()) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { - cv.put(MediaStore.Images.Media.DATE_TAKEN, System.currentTimeMillis()) cv.put(MediaStore.Images.Media.IS_PENDING, 1) } var uri: Uri? = null