diff --git a/app/src/main/java/com/github/libretube/api/MediaServiceRepository.kt b/app/src/main/java/com/github/libretube/api/MediaServiceRepository.kt
index 9212a5136..c3123e2ae 100644
--- a/app/src/main/java/com/github/libretube/api/MediaServiceRepository.kt
+++ b/app/src/main/java/com/github/libretube/api/MediaServiceRepository.kt
@@ -39,13 +39,11 @@ interface MediaServiceRepository {
suspend fun getPlaylistNextPage(playlistId: String, nextPage: String): Playlist
companion object {
- val instance by lazy {
- if (PlayerHelper.disablePipedProxy && PlayerHelper.localStreamExtraction) {
- // TODO: LocalStreamsExtractionPipedMediaServiceRepository()
- NewPipeMediaServiceRepository()
- } else {
- PipedMediaServiceRepository()
+ val instance: MediaServiceRepository
+ get() = when {
+ PlayerHelper.fullLocalMode -> NewPipeMediaServiceRepository()
+ PlayerHelper.localStreamExtraction -> LocalStreamsExtractionPipedMediaServiceRepository()
+ else -> PipedMediaServiceRepository()
}
- }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/github/libretube/constants/PreferenceKeys.kt b/app/src/main/java/com/github/libretube/constants/PreferenceKeys.kt
index 04ee5ef80..48be21253 100644
--- a/app/src/main/java/com/github/libretube/constants/PreferenceKeys.kt
+++ b/app/src/main/java/com/github/libretube/constants/PreferenceKeys.kt
@@ -133,6 +133,7 @@ object PreferenceKeys {
const val MAX_CONCURRENT_DOWNLOADS = "max_parallel_downloads"
const val EXTERNAL_DOWNLOAD_PROVIDER = "external_download_provider"
const val DISABLE_VIDEO_IMAGE_PROXY = "disable_video_image_proxy"
+ const val FULL_LOCAL_MODE = "full_local_mode"
const val LOCAL_RYD = "local_return_youtube_dislikes"
const val LOCAL_STREAM_EXTRACTION = "local_stream_extraction"
diff --git a/app/src/main/java/com/github/libretube/helpers/PlayerHelper.kt b/app/src/main/java/com/github/libretube/helpers/PlayerHelper.kt
index 0969e1a01..fce7521de 100644
--- a/app/src/main/java/com/github/libretube/helpers/PlayerHelper.kt
+++ b/app/src/main/java/com/github/libretube/helpers/PlayerHelper.kt
@@ -357,6 +357,12 @@ object PlayerHelper {
false
)
+ val fullLocalMode: Boolean
+ get() = PreferenceHelper.getBoolean(
+ PreferenceKeys.FULL_LOCAL_MODE,
+ false
+ )
+
val localStreamExtraction: Boolean
get() = PreferenceHelper.getBoolean(
PreferenceKeys.LOCAL_STREAM_EXTRACTION,
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 9253d5048..8821649c1 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -472,6 +472,7 @@
Crashlog
Never show this again
Update information
+ Mode of operation
Import subscriptions from
@@ -532,6 +533,9 @@
Directly fetch the feed from YouTube. This may be significantly slower.
Show upcoming videos
Updating feed …
+ Full local mode
+ Directly fetch everything from YouTube, without using Piped.
+ Authentication
Download Service
diff --git a/app/src/main/res/xml/instance_settings.xml b/app/src/main/res/xml/instance_settings.xml
index 4e5a14562..fd70d0c5e 100644
--- a/app/src/main/res/xml/instance_settings.xml
+++ b/app/src/main/res/xml/instance_settings.xml
@@ -2,6 +2,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+ android:icon="@drawable/ic_list"
+ android:summary="@string/hls_instead_of_dash_summary"
+ android:title="@string/hls_instead_of_dash"
+ app:key="use_hls" />
-
+
+
+
-
-
-
-
-
-
\ No newline at end of file