From 4017185e760c0569e6644b94bbe66a84fa245b4b Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Thu, 5 Dec 2024 19:42:08 +0400 Subject: [PATCH] fix(YouTube - Spoof video streams): Use system language as default iOS audio stream (#4042) --- .../revanced/extension/shared/settings/Setting.java | 2 +- .../settings/preference/ImportExportPreference.java | 6 +++--- .../youtube/patches/spoof/requests/PlayerRoutes.java | 7 ++++++- .../youtube/sponsorblock/SponsorBlockSettings.java | 11 ++--------- 4 files changed, 12 insertions(+), 14 deletions(-) diff --git a/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/Setting.java b/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/Setting.java index 5f5a974748..db5ecc844b 100644 --- a/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/Setting.java +++ b/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/Setting.java @@ -438,7 +438,7 @@ public static boolean importFromJSON(@NonNull Context alertDialogContext, @NonNu } for (ImportExportCallback callback : importExportCallbacks) { - callback.settingsExported(alertDialogContext); + callback.settingsImported(alertDialogContext); } Utils.showToastLong(numberOfSettingsImported == 0 diff --git a/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/preference/ImportExportPreference.java b/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/preference/ImportExportPreference.java index 4c06a97df0..a1d051c2b8 100644 --- a/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/preference/ImportExportPreference.java +++ b/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/preference/ImportExportPreference.java @@ -72,21 +72,21 @@ protected void onPrepareDialogBuilder(AlertDialog.Builder builder) { builder.setNeutralButton(str("revanced_settings_import_copy"), (dialog, which) -> { Utils.setClipboard(getEditText().getText().toString()); }).setPositiveButton(str("revanced_settings_import"), (dialog, which) -> { - importSettings(getEditText().getText().toString()); + importSettings(builder.getContext(), getEditText().getText().toString()); }); } catch (Exception ex) { Logger.printException(() -> "onPrepareDialogBuilder failure", ex); } } - private void importSettings(String replacementSettings) { + private void importSettings(Context context, String replacementSettings) { try { if (replacementSettings.equals(existingSettings)) { return; } AbstractPreferenceFragment.settingImportInProgress = true; - final boolean rebootNeeded = Setting.importFromJSON(Utils.getContext(), replacementSettings); + final boolean rebootNeeded = Setting.importFromJSON(context, replacementSettings); if (rebootNeeded) { AbstractPreferenceFragment.showRestartDialog(getContext()); } diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/spoof/requests/PlayerRoutes.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/spoof/requests/PlayerRoutes.java index 8d6782cb31..f77288ccc3 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/spoof/requests/PlayerRoutes.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/spoof/requests/PlayerRoutes.java @@ -7,6 +7,7 @@ import java.net.HttpURLConnection; import app.revanced.extension.shared.Logger; +import app.revanced.extension.shared.Utils; import app.revanced.extension.shared.requests.Requester; import app.revanced.extension.shared.requests.Route; import app.revanced.extension.youtube.patches.spoof.ClientType; @@ -24,6 +25,9 @@ final class PlayerRoutes { */ private static final int CONNECTION_TIMEOUT_MILLISECONDS = 10 * 1000; // 10 Seconds. + private static final String LOCALE_LANGUAGE = Utils.getContext().getResources() + .getConfiguration().locale.getLanguage(); + private PlayerRoutes() { } @@ -34,6 +38,8 @@ static String createInnertubeBody(ClientType clientType) { JSONObject context = new JSONObject(); JSONObject client = new JSONObject(); + // Required to use correct default audio channel with iOS. + client.put("hl", LOCALE_LANGUAGE); client.put("clientName", clientType.name()); client.put("clientVersion", clientType.clientVersion); client.put("deviceModel", clientType.deviceModel); @@ -41,7 +47,6 @@ static String createInnertubeBody(ClientType clientType) { if (clientType.androidSdkVersion != null) { client.put("androidSdkVersion", clientType.androidSdkVersion); } - context.put("client", client); innerTubeBody.put("context", context); diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/SponsorBlockSettings.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/SponsorBlockSettings.java index 00ecfacf98..45739f267f 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/SponsorBlockSettings.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/SponsorBlockSettings.java @@ -30,7 +30,7 @@ public class SponsorBlockSettings { public static final Setting.ImportExportCallback SB_IMPORT_EXPORT_CALLBACK = new Setting.ImportExportCallback() { @Override public void settingsImported(@Nullable Context context) { - updateFromImportedSettings(); + SegmentCategory.loadAllCategoriesFromSettings(); } @Override public void settingsExported(@Nullable Context context) { @@ -172,7 +172,7 @@ public static String exportDesktopSettings() { /** * Export the categories using flatten json (no embedded dictionaries or arrays). */ - public static void showExportWarningIfNeeded(@Nullable Context dialogContext) { + private static void showExportWarningIfNeeded(@Nullable Context dialogContext) { Utils.verifyOnMainThread(); initialize(); @@ -245,11 +245,4 @@ public static void initialize() { SegmentCategory.updateEnabledCategories(); } - - /** - * Updates internal data based on {@link Setting} values. - */ - public static void updateFromImportedSettings() { - SegmentCategory.loadAllCategoriesFromSettings(); - } }