diff --git a/app/src/main/java/ani/dantotsu/connections/UpdateProgress.kt b/app/src/main/java/ani/dantotsu/connections/UpdateProgress.kt index acfd0cdb..40fbd116 100644 --- a/app/src/main/java/ani/dantotsu/connections/UpdateProgress.kt +++ b/app/src/main/java/ani/dantotsu/connections/UpdateProgress.kt @@ -19,7 +19,7 @@ fun updateProgress(media: Media, number: String) { if (Anilist.userid != null) { CoroutineScope(Dispatchers.IO).launch { val a = number.toFloatOrNull()?.toInt() - if ((a ?: 0) > (media.userProgress ?: 0)) { + if ((a ?: 0) > (media.userProgress ?: -1)) { Anilist.mutation.editList( media.id, a, diff --git a/app/src/main/java/ani/dantotsu/media/anime/ExoplayerView.kt b/app/src/main/java/ani/dantotsu/media/anime/ExoplayerView.kt index 2ee044b2..7ae06a1a 100644 --- a/app/src/main/java/ani/dantotsu/media/anime/ExoplayerView.kt +++ b/app/src/main/java/ani/dantotsu/media/anime/ExoplayerView.kt @@ -1854,17 +1854,23 @@ class ExoplayerView : AppCompatActivity(), Player.Listener, SessionAvailabilityL private fun updateAniProgress() { val incognito: Boolean = PrefManager.getVal(PrefName.Incognito) - if (!incognito && exoPlayer.currentPosition / episodeLength > PrefManager.getVal( - PrefName.WatchPercentage - ) && Anilist.userid != null + val episodeEnd = exoPlayer.currentPosition / episodeLength > PrefManager.getVal( + PrefName.WatchPercentage + ) + val episode0 = currentEpisodeIndex == 0 && PrefManager.getVal(PrefName.ChapterZeroPlayer) + if (!incognito && (episodeEnd || episode0) && Anilist.userid != null ) if (PrefManager.getCustomVal( "${media.id}_save_progress", true ) && (if (media.isAdult) PrefManager.getVal(PrefName.UpdateForHPlayer) else true) ) { - media.anime!!.selectedEpisode?.apply { - updateProgress(media, this) + if (episode0) { + updateProgress(media, "0") + } else { + media.anime!!.selectedEpisode?.apply { + updateProgress(media, this) + } } } } diff --git a/app/src/main/java/ani/dantotsu/media/manga/mangareader/MangaReaderActivity.kt b/app/src/main/java/ani/dantotsu/media/manga/mangareader/MangaReaderActivity.kt index 1265d8be..157c6146 100644 --- a/app/src/main/java/ani/dantotsu/media/manga/mangareader/MangaReaderActivity.kt +++ b/app/src/main/java/ani/dantotsu/media/manga/mangareader/MangaReaderActivity.kt @@ -151,7 +151,21 @@ class MangaReaderActivity : AppCompatActivity() { defaultSettings = loadReaderSettings("reader_settings") ?: defaultSettings onBackPressedDispatcher.addCallback(this) { - progress { finish() } + val chapter = (MangaNameAdapter.findChapterNumber(media.manga!!.selectedChapter!!) + ?.minus(1L) ?: 0).toString() + if (chapter == "0.0" && PrefManager.getVal(PrefName.ChapterZeroReader) + // Not asking individually or incognito + && !showProgressDialog && !PrefManager.getVal(PrefName.Incognito) + // Not ...opted out ...already? Somehow? + && PrefManager.getCustomVal("${media.id}_save_progress", true) + // Allowing Doujin updates or not one + && if (media.isAdult) PrefManager.getVal(PrefName.UpdateForHReader) else true + ) { + updateProgress(media, chapter) + finish() + } else { + progress { finish() } + } } controllerDuration = (PrefManager.getVal(PrefName.AnimationSpeed) * 200).toLong() diff --git a/app/src/main/java/ani/dantotsu/settings/PlayerSettingsActivity.kt b/app/src/main/java/ani/dantotsu/settings/PlayerSettingsActivity.kt index 7cb5521b..5faccc17 100644 --- a/app/src/main/java/ani/dantotsu/settings/PlayerSettingsActivity.kt +++ b/app/src/main/java/ani/dantotsu/settings/PlayerSettingsActivity.kt @@ -167,6 +167,14 @@ class PlayerSettingsActivity : AppCompatActivity() { PrefManager.getVal(PrefName.AskIndividualPlayer) binding.playerSettingsAskUpdateProgress.setOnCheckedChangeListener { _, isChecked -> PrefManager.setVal(PrefName.AskIndividualPlayer, isChecked) + binding.playerSettingsAskChapterZero.isEnabled = !isChecked + } + binding.playerSettingsAskChapterZero.isChecked = + PrefManager.getVal(PrefName.ChapterZeroPlayer) + binding.playerSettingsAskChapterZero.isEnabled = + !PrefManager.getVal(PrefName.AskIndividualPlayer) + binding.playerSettingsAskChapterZero.setOnCheckedChangeListener { _, isChecked -> + PrefManager.setVal(PrefName.ChapterZeroPlayer, isChecked) } binding.playerSettingsAskUpdateHentai.isChecked = PrefManager.getVal(PrefName.UpdateForHPlayer) diff --git a/app/src/main/java/ani/dantotsu/settings/ReaderSettingsActivity.kt b/app/src/main/java/ani/dantotsu/settings/ReaderSettingsActivity.kt index 8cbdac58..911b49de 100644 --- a/app/src/main/java/ani/dantotsu/settings/ReaderSettingsActivity.kt +++ b/app/src/main/java/ani/dantotsu/settings/ReaderSettingsActivity.kt @@ -355,6 +355,14 @@ class ReaderSettingsActivity : AppCompatActivity() { PrefManager.getVal(PrefName.AskIndividualReader) binding.readerSettingsAskUpdateProgress.setOnCheckedChangeListener { _, isChecked -> PrefManager.setVal(PrefName.AskIndividualReader, isChecked) + binding.readerSettingsAskChapterZero.isEnabled = !isChecked + } + binding.readerSettingsAskChapterZero.isChecked = + PrefManager.getVal(PrefName.ChapterZeroReader) + binding.readerSettingsAskChapterZero.isEnabled = + !PrefManager.getVal(PrefName.AskIndividualReader) + binding.readerSettingsAskChapterZero.setOnCheckedChangeListener { _, isChecked -> + PrefManager.setVal(PrefName.ChapterZeroReader, isChecked) } binding.readerSettingsAskUpdateDoujins.isChecked = PrefManager.getVal(PrefName.UpdateForHReader) diff --git a/app/src/main/java/ani/dantotsu/settings/saving/Preferences.kt b/app/src/main/java/ani/dantotsu/settings/saving/Preferences.kt index 14d83caf..a429392b 100644 --- a/app/src/main/java/ani/dantotsu/settings/saving/Preferences.kt +++ b/app/src/main/java/ani/dantotsu/settings/saving/Preferences.kt @@ -95,6 +95,7 @@ enum class PrefName(val data: Pref) { //TODO: Split this into multiple files AutoPlay(Pref(Location.Player, Boolean::class, true)), AutoSkipFiller(Pref(Location.Player, Boolean::class, false)), AskIndividualPlayer(Pref(Location.Player, Boolean::class, true)), + ChapterZeroPlayer(Pref(Location.Player, Boolean::class, true)), UpdateForHPlayer(Pref(Location.Player, Boolean::class, false)), WatchPercentage(Pref(Location.Player, Float::class, 0.8f)), AlwaysContinue(Pref(Location.Player, Boolean::class, true)), @@ -114,6 +115,7 @@ enum class PrefName(val data: Pref) { //TODO: Split this into multiple files ShowSystemBars(Pref(Location.Reader, Boolean::class, false)), AutoDetectWebtoon(Pref(Location.Reader, Boolean::class, true)), AskIndividualReader(Pref(Location.Reader, Boolean::class, true)), + ChapterZeroReader(Pref(Location.Reader, Boolean::class, true)), UpdateForHReader(Pref(Location.Reader, Boolean::class, false)), Direction(Pref(Location.Reader, Int::class, 0)), LayoutReader(Pref(Location.Reader, Int::class, 2)), diff --git a/app/src/main/res/drawable/ic_round_early_bird_special.xml b/app/src/main/res/drawable/ic_round_early_bird_special.xml new file mode 100644 index 00000000..4aa4292f --- /dev/null +++ b/app/src/main/res/drawable/ic_round_early_bird_special.xml @@ -0,0 +1,16 @@ + + + + + + + diff --git a/app/src/main/res/layout/activity_player_settings.xml b/app/src/main/res/layout/activity_player_settings.xml index 8a6fd187..d9486c31 100644 --- a/app/src/main/res/layout/activity_player_settings.xml +++ b/app/src/main/res/layout/activity_player_settings.xml @@ -705,6 +705,41 @@ android:text="@string/ask_update_progress_info_ep" android:textSize="14sp" /> + + + + + + + + + + + + Ask for each Manga \"Individually\" Turning off will always automatically update progress when the episode is watched. Turning off will always automatically update progress when the chapter is read. + Update Progress for Chapter 0 + Turning on will add newly started items to Anilist with progress set to chapter 0. Update Progress for Hentai Update Progress for Doujins very bold of you sar