From 3776dda710a7780717b7e6f2cdc1333ab67b92fc Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Tue, 16 Sep 2025 15:59:32 +0400 Subject: [PATCH] fix(YouTube - Spoof video streams): Show settings summary if `Force original audio` is enabled --- .../SpoofAudioSelectorListPreference.java | 57 +++++++++++++++++++ .../misc/spoof/SpoofVideoStreamsPatch.kt | 2 +- .../resources/addresources/values/strings.xml | 2 + 3 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/SpoofAudioSelectorListPreference.java diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/SpoofAudioSelectorListPreference.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/SpoofAudioSelectorListPreference.java new file mode 100644 index 000000000..d27230421 --- /dev/null +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/SpoofAudioSelectorListPreference.java @@ -0,0 +1,57 @@ +package app.revanced.extension.youtube.settings.preference; + +import static app.revanced.extension.shared.StringRef.str; + +import android.content.Context; +import android.util.AttributeSet; + +import app.revanced.extension.shared.settings.preference.SortedListPreference; +import app.revanced.extension.shared.spoof.SpoofVideoStreamsPatch; + +@SuppressWarnings({"deprecation", "unused"}) +public class SpoofAudioSelectorListPreference extends SortedListPreference { + + private final boolean available; + + { + if (SpoofVideoStreamsPatch.getLanguageOverride() != null) { + available = false; + super.setEnabled(false); + super.setSummary(str("revanced_spoof_video_streams_language_not_available")); + } else { + available = true; + } + } + + public SpoofAudioSelectorListPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { + super(context, attrs, defStyleAttr, defStyleRes); + } + public SpoofAudioSelectorListPreference(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + public SpoofAudioSelectorListPreference(Context context, AttributeSet attrs) { + super(context, attrs); + } + public SpoofAudioSelectorListPreference(Context context) { + super(context); + } + + @Override + public void setEnabled(boolean enabled) { + if (!available) { + return; + } + + super.setEnabled(enabled); + } + + @Override + public void setSummary(CharSequence summary) { + if (!available) { + return; + } + + super.setSummary(summary); + } +} + diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/spoof/SpoofVideoStreamsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/spoof/SpoofVideoStreamsPatch.kt index 4a971e079..3981e7db1 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/spoof/SpoofVideoStreamsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/spoof/SpoofVideoStreamsPatch.kt @@ -67,7 +67,7 @@ val spoofVideoStreamsPatch = spoofVideoStreamsPatch( // Language strings are declared in Setting patch. entriesKey = "revanced_language_entries", entryValuesKey = "revanced_language_entry_values", - tag = "app.revanced.extension.shared.settings.preference.SortedListPreference" + tag = "app.revanced.extension.youtube.settings.preference.SpoofAudioSelectorListPreference" ), SwitchPreference("revanced_spoof_streaming_data_stats_for_nerds"), ) diff --git a/patches/src/main/resources/addresources/values/strings.xml b/patches/src/main/resources/addresources/values/strings.xml index c4d072888..6a9c1c06b 100644 --- a/patches/src/main/resources/addresources/values/strings.xml +++ b/patches/src/main/resources/addresources/values/strings.xml @@ -1637,6 +1637,8 @@ Enabling this can unlock higher video qualities" Client type is shown in Stats for nerds Client is hidden in Stats for nerds Audio stream language + + To select a specific audio language, turn off \'Force original audio language\'