Skip to content

Commit

Permalink
feat(nextEpisodeAiring): Make it toggleable in settings
Browse files Browse the repository at this point in the history
  • Loading branch information
abdallahmehiz authored and quickdesh committed Aug 8, 2023
1 parent a7067f4 commit fe09078
Show file tree
Hide file tree
Showing 6 changed files with 32 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ class TrackPreferences(

fun trackOnAddingToLibrary() = preferenceStore.getBoolean("track_on_adding_to_library", true)

fun showNextEpisodeAiringTime() = preferenceStore.getBoolean("show_next_episode_airing_time", true)

companion object {
fun trackUsername(syncId: Long) = "pref_mangasync_username_$syncId"

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,6 @@ import eu.kanade.tachiyomi.source.anime.getNameForAnimeInfo
import eu.kanade.tachiyomi.ui.entries.anime.AnimeScreenState
import eu.kanade.tachiyomi.ui.entries.anime.EpisodeItem
import eu.kanade.tachiyomi.ui.entries.anime.episodeDecimalFormat
import eu.kanade.tachiyomi.ui.player.settings.PlayerPreferences
import eu.kanade.tachiyomi.util.lang.toRelativeString
import eu.kanade.tachiyomi.util.system.copyToClipboard
import kotlinx.coroutines.delay
Expand All @@ -84,8 +83,6 @@ import tachiyomi.presentation.core.components.material.PullRefresh
import tachiyomi.presentation.core.components.material.Scaffold
import tachiyomi.presentation.core.util.isScrolledToEnd
import tachiyomi.presentation.core.util.isScrollingUp
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import java.text.DateFormat
import java.util.Date
import java.util.concurrent.TimeUnit
Expand All @@ -99,6 +96,8 @@ fun AnimeScreen(
isTabletUi: Boolean,
episodeSwipeEndAction: LibraryPreferences.EpisodeSwipeAction,
episodeSwipeStartAction: LibraryPreferences.EpisodeSwipeAction,
showNextEpisodeAirTime: Boolean,
alwaysUseExternalPlayer: Boolean,
onBackClicked: () -> Unit,
onEpisodeClicked: (episode: Episode, alt: Boolean) -> Unit,
onDownloadEpisode: ((List<EpisodeItem>, EpisodeDownloadAction) -> Unit)?,
Expand Down Expand Up @@ -154,6 +153,8 @@ fun AnimeScreen(
dateFormat = dateFormat,
episodeSwipeEndAction = episodeSwipeEndAction,
episodeSwipeStartAction = episodeSwipeStartAction,
showNextEpisodeAirTime = showNextEpisodeAirTime,
alwaysUseExternalPlayer = alwaysUseExternalPlayer,
onBackClicked = onBackClicked,
onEpisodeClicked = onEpisodeClicked,
onDownloadEpisode = onDownloadEpisode,
Expand Down Expand Up @@ -189,6 +190,8 @@ fun AnimeScreen(
dateRelativeTime = dateRelativeTime,
episodeSwipeEndAction = episodeSwipeEndAction,
episodeSwipeStartAction = episodeSwipeStartAction,
showNextEpisodeAirTime = showNextEpisodeAirTime,
alwaysUseExternalPlayer = alwaysUseExternalPlayer,
dateFormat = dateFormat,
onBackClicked = onBackClicked,
onEpisodeClicked = onEpisodeClicked,
Expand Down Expand Up @@ -230,6 +233,8 @@ private fun AnimeScreenSmallImpl(
dateFormat: DateFormat,
episodeSwipeEndAction: LibraryPreferences.EpisodeSwipeAction,
episodeSwipeStartAction: LibraryPreferences.EpisodeSwipeAction,
showNextEpisodeAirTime: Boolean,
alwaysUseExternalPlayer: Boolean,
onBackClicked: () -> Unit,
onEpisodeClicked: (Episode, Boolean) -> Unit,
onDownloadEpisode: ((List<EpisodeItem>, EpisodeDownloadAction) -> Unit)?,
Expand Down Expand Up @@ -326,6 +331,7 @@ private fun AnimeScreenSmallImpl(
onDownloadEpisode = onDownloadEpisode,
onMultiDeleteClicked = onMultiDeleteClicked,
fillFraction = 1f,
alwaysUseExternalPlayer = alwaysUseExternalPlayer,
)
},
snackbarHost = { SnackbarHost(hostState = snackbarHostState) },
Expand Down Expand Up @@ -452,7 +458,7 @@ private fun AnimeScreenSmallImpl(
timer -= 1000L
}
}
if (timer > 0L) {
if (timer > 0L && showNextEpisodeAirTime) {
NextEpisodeAiringListItem(
title = stringResource(
R.string.display_mode_episode,
Expand Down Expand Up @@ -491,6 +497,8 @@ fun AnimeScreenLargeImpl(
dateFormat: DateFormat,
episodeSwipeEndAction: LibraryPreferences.EpisodeSwipeAction,
episodeSwipeStartAction: LibraryPreferences.EpisodeSwipeAction,
showNextEpisodeAirTime: Boolean,
alwaysUseExternalPlayer: Boolean,
onBackClicked: () -> Unit,
onEpisodeClicked: (Episode, Boolean) -> Unit,
onDownloadEpisode: ((List<EpisodeItem>, EpisodeDownloadAction) -> Unit)?,
Expand Down Expand Up @@ -597,6 +605,7 @@ fun AnimeScreenLargeImpl(
onDownloadEpisode = onDownloadEpisode,
onMultiDeleteClicked = onMultiDeleteClicked,
fillFraction = 0.5f,
alwaysUseExternalPlayer = alwaysUseExternalPlayer,
)
}
},
Expand Down Expand Up @@ -704,7 +713,7 @@ fun AnimeScreenLargeImpl(
timer -= 1000L
}
}
if (timer > 0L) {
if (timer > 0L && showNextEpisodeAirTime) {
NextEpisodeAiringListItem(
title = stringResource(
R.string.display_mode_episode,
Expand Down Expand Up @@ -747,8 +756,8 @@ private fun SharedAnimeBottomActionMenu(
onDownloadEpisode: ((List<EpisodeItem>, EpisodeDownloadAction) -> Unit)?,
onMultiDeleteClicked: (List<Episode>) -> Unit,
fillFraction: Float,
alwaysUseExternalPlayer: Boolean,
) {
val preferences: PlayerPreferences = Injekt.get()
EntryBottomActionMenu(
visible = selected.isNotEmpty(),
modifier = modifier.fillMaxWidth(fillFraction),
Expand Down Expand Up @@ -779,10 +788,10 @@ private fun SharedAnimeBottomActionMenu(
},
onExternalClicked = {
onEpisodeClicked(selected.fastMap { it.episode }.first(), true)
}.takeIf { !preferences.alwaysUseExternalPlayer().get() && selected.size == 1 },
}.takeIf { !alwaysUseExternalPlayer && selected.size == 1 },
onInternalClicked = {
onEpisodeClicked(selected.fastMap { it.episode }.first(), true)
}.takeIf { preferences.alwaysUseExternalPlayer().get() && selected.size == 1 },
}.takeIf { alwaysUseExternalPlayer && selected.size == 1 },
isManga = false,
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,10 @@ object SettingsTrackingScreen : SearchableSettings {
pref = trackPreferences.trackOnAddingToLibrary(),
title = stringResource(R.string.pref_track_on_add_library),
),
Preference.PreferenceItem.SwitchPreference(
pref = trackPreferences.showNextEpisodeAiringTime(),
title = stringResource(R.string.pref_show_next_episode_airing_time),
),
Preference.PreferenceGroup(
title = stringResource(R.string.services),
preferenceItems = listOf(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,10 +108,12 @@ class AnimeScreen(
isTabletUi = isTabletUi(),
episodeSwipeEndAction = screenModel.episodeSwipeEndAction,
episodeSwipeStartAction = screenModel.episodeSwipeStartAction,
showNextEpisodeAirTime = screenModel.showNextEpisodeAirTime,
alwaysUseExternalPlayer = screenModel.alwaysUseExternalPlayer,
onBackClicked = navigator::pop,
onEpisodeClicked = { episode, alt ->
scope.launchIO {
val extPlayer = screenModel.playerPreferences.alwaysUseExternalPlayer().get() != alt
val extPlayer = screenModel.alwaysUseExternalPlayer != alt
openEpisode(context, episode, extPlayer)
}
},
Expand All @@ -128,7 +130,7 @@ class AnimeScreen(
onRefresh = screenModel::fetchAllFromSource,
onContinueWatching = {
scope.launchIO {
val extPlayer = screenModel.playerPreferences.alwaysUseExternalPlayer().get()
val extPlayer = screenModel.alwaysUseExternalPlayer
continueWatching(context, screenModel.getNextUnseenEpisode(), extPlayer)
}
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,8 @@ class AnimeInfoScreenModel(
val episodeSwipeEndAction = libraryPreferences.swipeEpisodeEndAction().get()
val episodeSwipeStartAction = libraryPreferences.swipeEpisodeStartAction().get()

val showNextEpisodeAirTime = trackPreferences.showNextEpisodeAiringTime().get()

val relativeTime by uiPreferences.relativeTime().asState(coroutineScope)
val dateFormat by mutableStateOf(UiPreferences.dateFormat(uiPreferences.dateFormat().get()))

Expand All @@ -140,6 +142,8 @@ class AnimeInfoScreenModel(
internal val autoOpenTrack: Boolean
get() = successState?.trackingAvailable == true && trackPreferences.trackOnAddingToLibrary().get()

val alwaysUseExternalPlayer = playerPreferences.alwaysUseExternalPlayer().get()

/**
* Helper function to update the UI state only if it's currently in success state
*/
Expand Down
1 change: 1 addition & 0 deletions i18n/src/main/res/values/strings-aniyomi.xml
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,7 @@
<string name="download_ahead_info_anime">Only works on entries in library and if the current episode plus the next one are already downloaded</string>
<string name="pref_auto_update_manga_sync">Update progress after reading/watching</string>
<string name="pref_track_on_add_library">Open track menu on adding to library</string>
<string name="pref_show_next_episode_airing_time">Show next episode\'s airing time </string>
<string name="pref_backup_flags_summary">What information to include in the backup file</string>
<string name="pref_clear_chapter_cache">Clear chapter and episode cache</string>
<string name="used_cache_both">Used by anime: %1$s, used by manga: %2$s</string>
Expand Down

0 comments on commit fe09078

Please sign in to comment.