add option to disable playhead updates/reporting

This commit is contained in:
2022-03-20 12:38:49 +01:00
parent cd4cfb7a0c
commit 72280f29d8
7 changed files with 98 additions and 1 deletions

View File

@ -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())

View File

@ -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
)
}

View File

@ -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)

View File

@ -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.")
}