diff --git a/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt index c99129746..0c86be3e7 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt @@ -82,6 +82,7 @@ import com.github.libretube.ui.sheets.CommentsSheet import com.github.libretube.ui.sheets.PlayingQueueSheet import com.github.libretube.util.BackgroundHelper import com.github.libretube.util.DashHelper +import com.github.libretube.util.DataSaverMode import com.github.libretube.util.ImageHelper import com.github.libretube.util.NowPlayingNotification import com.github.libretube.util.PlayerHelper @@ -651,13 +652,7 @@ class PlayerFragment : BaseFragment(), OnlinePlayerOptions { setupSeekbarPreview() if (!isLive) seekToWatchPosition() exoPlayer.prepare() - if (!PreferenceHelper.getBoolean( - PreferenceKeys.DATA_SAVER_MODE, - false - ) - ) { - exoPlayer.play() - } + if (!DataSaverMode.isEnabled(requireContext())) exoPlayer.play() if (binding.playerMotionLayout.progress != 1.0f) { // show controllers when not in picture in picture mode diff --git a/app/src/main/java/com/github/libretube/util/DataSaverMode.kt b/app/src/main/java/com/github/libretube/util/DataSaverMode.kt new file mode 100644 index 000000000..620dbc5d9 --- /dev/null +++ b/app/src/main/java/com/github/libretube/util/DataSaverMode.kt @@ -0,0 +1,16 @@ +package com.github.libretube.util + +import android.content.Context +import com.github.libretube.constants.PreferenceKeys + +object DataSaverMode { + fun isEnabled(context: Context): Boolean { + val pref = PreferenceHelper.getString(PreferenceKeys.DATA_SAVER_MODE, "disabled") + return when (pref) { + "enabled" -> true + "disabled" -> false + "metered"-> NetworkHelper.isNetworkMobile(context) + else -> throw IllegalArgumentException() + } + } +} diff --git a/app/src/main/java/com/github/libretube/util/ImageHelper.kt b/app/src/main/java/com/github/libretube/util/ImageHelper.kt index 02315d8b2..f8662f0c3 100644 --- a/app/src/main/java/com/github/libretube/util/ImageHelper.kt +++ b/app/src/main/java/com/github/libretube/util/ImageHelper.kt @@ -52,11 +52,7 @@ object ImageHelper { */ fun loadImage(url: String?, target: ImageView) { // only load the image if the data saver mode is disabled - val dataSaverModeEnabled = PreferenceHelper.getBoolean( - PreferenceKeys.DATA_SAVER_MODE, - false - ) - if (!dataSaverModeEnabled) target.load(url, imageLoader) + if (!DataSaverMode.isEnabled(target.context)) target.load(url, imageLoader) } fun downloadImage(context: Context, url: String, fileName: String) { diff --git a/app/src/main/java/com/github/libretube/util/NowPlayingNotification.kt b/app/src/main/java/com/github/libretube/util/NowPlayingNotification.kt index 28e23fa96..1f05ba6db 100644 --- a/app/src/main/java/com/github/libretube/util/NowPlayingNotification.kt +++ b/app/src/main/java/com/github/libretube/util/NowPlayingNotification.kt @@ -109,7 +109,7 @@ class NowPlayingNotification( player: Player, callback: PlayerNotificationManager.BitmapCallback ): Bitmap? { - if (PreferenceHelper.getBoolean(PreferenceKeys.DATA_SAVER_MODE, false)) return null + if (DataSaverMode.isEnabled(context)) return null var bitmap: Bitmap? = null diff --git a/app/src/main/res/values/array.xml b/app/src/main/res/values/array.xml index 1263cb75e..14006255b 100644 --- a/app/src/main/res/values/array.xml +++ b/app/src/main/res/values/array.xml @@ -425,4 +425,16 @@ name_reversed + + @string/disabled + @string/network_metered + @string/enabled + + + + disabled + metered + enabled + + diff --git a/app/src/main/res/xml/advanced_settings.xml b/app/src/main/res/xml/advanced_settings.xml index cf028a26d..69ab34666 100644 --- a/app/src/main/res/xml/advanced_settings.xml +++ b/app/src/main/res/xml/advanced_settings.xml @@ -4,7 +4,10 @@ -