diff --git a/app/src/main/java/org/mosad/teapod/parser/crunchyroll/Crunchyroll.kt b/app/src/main/java/org/mosad/teapod/parser/crunchyroll/Crunchyroll.kt index c1e9992..6c288ce 100644 --- a/app/src/main/java/org/mosad/teapod/parser/crunchyroll/Crunchyroll.kt +++ b/app/src/main/java/org/mosad/teapod/parser/crunchyroll/Crunchyroll.kt @@ -500,6 +500,12 @@ object Crunchyroll { } } + /** + * Post the playhead to crunchy (playhead position,watched state) + * + * @param episodeId A episode ID as strings. + * @param playhead The episodes playhead in seconds. + */ suspend fun postPlayheads(episodeId: String, playhead: Int) { val playheadsEndpoint = "/content/v1/playheads/$accountID" val parameters = listOf("locale" to Preferences.preferredLocale.toLanguageTag()) diff --git a/app/src/main/java/org/mosad/teapod/preferences/Preferences.kt b/app/src/main/java/org/mosad/teapod/preferences/Preferences.kt index ff09a97..92e7799 100644 --- a/app/src/main/java/org/mosad/teapod/preferences/Preferences.kt +++ b/app/src/main/java/org/mosad/teapod/preferences/Preferences.kt @@ -19,6 +19,10 @@ object Preferences { var theme = DataTypes.Theme.DARK internal set + // dev settings + var updatePlayhead = true + internal set + private fun getSharedPref(context: Context): SharedPreferences { return context.getSharedPreferences( context.getString(R.string.preference_file_key), @@ -71,6 +75,15 @@ object Preferences { this.theme = theme } + fun saveUpdatePlayhead(context: Context, updatePlayhead: Boolean) { + with(getSharedPref(context).edit()) { + putBoolean(context.getString(R.string.save_key_update_playhead), updatePlayhead) + apply() + } + + this.updatePlayhead = updatePlayhead + } + /** * initially load the stored values */ @@ -96,6 +109,11 @@ object Preferences { context.getString(R.string.save_key_theme), DataTypes.Theme.DARK.toString() ) ?: DataTypes.Theme.DARK.toString() ) + + // dev settings + updatePlayhead = sharedPref.getBoolean( + context.getString(R.string.save_key_update_playhead), true + ) } diff --git a/app/src/main/java/org/mosad/teapod/ui/activity/main/fragments/AccountFragment.kt b/app/src/main/java/org/mosad/teapod/ui/activity/main/fragments/AccountFragment.kt index d9c05cc..ca0ca11 100644 --- a/app/src/main/java/org/mosad/teapod/ui/activity/main/fragments/AccountFragment.kt +++ b/app/src/main/java/org/mosad/teapod/ui/activity/main/fragments/AccountFragment.kt @@ -93,6 +93,7 @@ class AccountFragment : Fragment() { } binding.linearDevSettings.isVisible = Preferences.devSettings + binding.switchUpdatePlayhead.isChecked = Preferences.updatePlayhead binding.textInfoAboutDesc.text = getString(R.string.info_about_desc, BuildConfig.VERSION_NAME, getString(R.string.build_time)) @@ -130,6 +131,10 @@ class AccountFragment : Fragment() { activity?.showFragment(AboutFragment()) } + binding.switchUpdatePlayhead.setOnClickListener { + Preferences.saveUpdatePlayhead(requireContext(), binding.switchUpdatePlayhead.isChecked) + } + binding.linearExportData.setOnClickListener { val i = Intent(Intent.ACTION_CREATE_DOCUMENT).apply { addCategory(Intent.CATEGORY_OPENABLE) diff --git a/app/src/main/java/org/mosad/teapod/ui/activity/player/PlayerViewModel.kt b/app/src/main/java/org/mosad/teapod/ui/activity/player/PlayerViewModel.kt index 5417cde..9553211 100644 --- a/app/src/main/java/org/mosad/teapod/ui/activity/player/PlayerViewModel.kt +++ b/app/src/main/java/org/mosad/teapod/ui/activity/player/PlayerViewModel.kt @@ -292,7 +292,7 @@ class PlayerViewModel(application: Application) : AndroidViewModel(application) private fun updatePlayhead() { val playhead = (player.currentPosition / 1000) - if (playhead > 0) { + if (playhead > 0 && Preferences.updatePlayhead) { viewModelScope.launch { Crunchyroll.postPlayheads(currentEpisode.id, playhead.toInt()) } Log.i(javaClass.name, "Set playhead for episode ${currentEpisode.id} to $playhead sec.") } diff --git a/app/src/main/res/layout/fragment_account.xml b/app/src/main/res/layout/fragment_account.xml index 197b241..4f3c904 100644 --- a/app/src/main/res/layout/fragment_account.xml +++ b/app/src/main/res/layout/fragment_account.xml @@ -378,6 +378,68 @@ android:textSize="16sp" android:textStyle="bold" /> + + + + + + + + + + + + + + + + + + + Hell Dunkel Entwickler Einstellungen + Playhead Updates + Fortschritt bei Episoden auf cr updaten Daten exportieren Speichere "Meine Liste" in eine Datei Daten importieren diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 796017e..fabe099 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -59,6 +59,8 @@ Light Dark Developer Settings + Playhead updates + Update episode playhead on cr export data export "My list" to a file import data @@ -137,6 +139,8 @@ org.mosad.teapod.autoplay org.mosad.teapod.dev.settings org.mosad.teapod.theme + + org.mosad.teapod.update_playhead intent_media_id