* Going over 8x does not increase the actual playback speed any higher,
* and the UI selector starts flickering and acting weird.
* Over 10x and the speeds show up out of order in the UI selector.
@@ -157,11 +157,10 @@ public class CustomPlaybackSpeedPatch {
}
View firstChild = recyclerView.getChildAt(0);
- if (!(firstChild instanceof ViewGroup)) {
+ if (!(firstChild instanceof ViewGroup PlaybackSpeedParentView)) {
return false;
}
- ViewGroup PlaybackSpeedParentView = (ViewGroup) firstChild;
if (PlaybackSpeedParentView.getChildCount() != expectedChildCount) {
return false;
}
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/patches/playback/speed/RememberPlaybackSpeedPatch.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/playback/speed/RememberPlaybackSpeedPatch.java
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/patches/playback/speed/RememberPlaybackSpeedPatch.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/playback/speed/RememberPlaybackSpeedPatch.java
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/patches/spoof/ClientType.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/spoof/ClientType.java
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/patches/spoof/ClientType.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/spoof/ClientType.java
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/patches/spoof/DeviceHardwareSupport.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/spoof/DeviceHardwareSupport.java
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/patches/spoof/DeviceHardwareSupport.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/spoof/DeviceHardwareSupport.java
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/patches/spoof/SpoofAppVersionPatch.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/spoof/SpoofAppVersionPatch.java
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/patches/spoof/SpoofAppVersionPatch.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/spoof/SpoofAppVersionPatch.java
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/patches/spoof/SpoofDeviceDimensionsPatch.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/spoof/SpoofDeviceDimensionsPatch.java
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/patches/spoof/SpoofDeviceDimensionsPatch.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/spoof/SpoofDeviceDimensionsPatch.java
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/patches/spoof/SpoofVideoStreamsPatch.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/spoof/SpoofVideoStreamsPatch.java
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/patches/spoof/SpoofVideoStreamsPatch.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/spoof/SpoofVideoStreamsPatch.java
diff --git a/extensions/shared/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
similarity index 86%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/patches/spoof/requests/PlayerRoutes.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/spoof/requests/PlayerRoutes.java
index 3388892cc..f77288ccc 100644
--- a/extensions/shared/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,9 +7,10 @@ import java.io.IOException;
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;
-import app.revanced.extension.youtube.requests.Requester;
-import app.revanced.extension.youtube.requests.Route;
final class PlayerRoutes {
static final Route.CompiledRoute GET_STREAMING_DATA = new Route(
@@ -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 @@ final class PlayerRoutes {
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 @@ final class PlayerRoutes {
if (clientType.androidSdkVersion != null) {
client.put("androidSdkVersion", clientType.androidSdkVersion);
}
-
context.put("client", client);
innerTubeBody.put("context", context);
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/patches/spoof/requests/StreamingDataRequest.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/spoof/requests/StreamingDataRequest.java
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/patches/spoof/requests/StreamingDataRequest.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/spoof/requests/StreamingDataRequest.java
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/patches/theme/ProgressBarDrawable.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/theme/ProgressBarDrawable.java
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/patches/theme/ProgressBarDrawable.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/theme/ProgressBarDrawable.java
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/patches/theme/SeekbarColorPatch.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/theme/SeekbarColorPatch.java
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/patches/theme/SeekbarColorPatch.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/theme/SeekbarColorPatch.java
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/patches/theme/ThemePatch.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/theme/ThemePatch.java
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/patches/theme/ThemePatch.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/theme/ThemePatch.java
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/returnyoutubedislike/ReturnYouTubeDislike.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/returnyoutubedislike/ReturnYouTubeDislike.java
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/returnyoutubedislike/ReturnYouTubeDislike.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/returnyoutubedislike/ReturnYouTubeDislike.java
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/returnyoutubedislike/requests/RYDVoteData.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/returnyoutubedislike/requests/RYDVoteData.java
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/returnyoutubedislike/requests/RYDVoteData.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/returnyoutubedislike/requests/RYDVoteData.java
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/returnyoutubedislike/requests/ReturnYouTubeDislikeApi.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/returnyoutubedislike/requests/ReturnYouTubeDislikeApi.java
similarity index 99%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/returnyoutubedislike/requests/ReturnYouTubeDislikeApi.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/returnyoutubedislike/requests/ReturnYouTubeDislikeApi.java
index 0ccb87d32..1ebeea223 100644
--- a/extensions/shared/src/main/java/app/revanced/extension/youtube/returnyoutubedislike/requests/ReturnYouTubeDislikeApi.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/returnyoutubedislike/requests/ReturnYouTubeDislikeApi.java
@@ -24,7 +24,7 @@ import java.util.Objects;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
-import app.revanced.extension.youtube.requests.Requester;
+import app.revanced.extension.shared.requests.Requester;
import app.revanced.extension.youtube.returnyoutubedislike.ReturnYouTubeDislike;
import app.revanced.extension.youtube.settings.Settings;
@@ -147,6 +147,7 @@ public class ReturnYouTubeDislikeApi {
*/
private static void randomlyWaitIfLocallyDebugging() {
final boolean DEBUG_RANDOMLY_DELAY_NETWORK_CALLS = false; // set true to debug UI
+
//noinspection ConstantValue
if (DEBUG_RANDOMLY_DELAY_NETWORK_CALLS) {
final long amountOfTimeToWaste = (long) (Math.random()
@@ -188,6 +189,7 @@ public class ReturnYouTubeDislikeApi {
*/
private static boolean checkIfRateLimitWasHit(int httpResponseCode) {
final boolean DEBUG_RATE_LIMIT = false; // set to true, to verify rate limit works
+
//noinspection ConstantValue
if (DEBUG_RATE_LIMIT) {
final double RANDOM_RATE_LIMIT_PERCENTAGE = 0.2; // 20% chance of a triggering a rate limit
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/returnyoutubedislike/requests/ReturnYouTubeDislikeRoutes.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/returnyoutubedislike/requests/ReturnYouTubeDislikeRoutes.java
similarity index 78%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/returnyoutubedislike/requests/ReturnYouTubeDislikeRoutes.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/returnyoutubedislike/requests/ReturnYouTubeDislikeRoutes.java
index 2c2ae7255..e4de849b0 100644
--- a/extensions/shared/src/main/java/app/revanced/extension/youtube/returnyoutubedislike/requests/ReturnYouTubeDislikeRoutes.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/returnyoutubedislike/requests/ReturnYouTubeDislikeRoutes.java
@@ -1,13 +1,13 @@
package app.revanced.extension.youtube.returnyoutubedislike.requests;
-import static app.revanced.extension.youtube.requests.Route.Method.GET;
-import static app.revanced.extension.youtube.requests.Route.Method.POST;
+import static app.revanced.extension.shared.requests.Route.Method.GET;
+import static app.revanced.extension.shared.requests.Route.Method.POST;
import java.io.IOException;
import java.net.HttpURLConnection;
-import app.revanced.extension.youtube.requests.Requester;
-import app.revanced.extension.youtube.requests.Route;
+import app.revanced.extension.shared.requests.Requester;
+import app.revanced.extension.shared.requests.Route;
class ReturnYouTubeDislikeRoutes {
static final String RYD_API_URL = "https://returnyoutubedislikeapi.com/";
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/settings/LicenseActivityHook.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/LicenseActivityHook.java
similarity index 96%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/settings/LicenseActivityHook.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/LicenseActivityHook.java
index 51409e2e4..1ca0f5c19 100644
--- a/extensions/shared/src/main/java/app/revanced/extension/youtube/settings/LicenseActivityHook.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/LicenseActivityHook.java
@@ -7,7 +7,6 @@ import android.view.ViewGroup;
import android.widget.ImageButton;
import android.widget.TextView;
import app.revanced.extension.shared.Logger;
-import app.revanced.extension.shared.settings.preference.AbstractPreferenceFragment;
import app.revanced.extension.youtube.ThemeHelper;
import app.revanced.extension.youtube.settings.preference.ReVancedPreferenceFragment;
import app.revanced.extension.youtube.settings.preference.ReturnYouTubeDislikePreferenceFragment;
@@ -83,7 +82,7 @@ public class LicenseActivityHook {
ViewGroup toolbar = activity.findViewById(getToolbarResourceId());
ImageButton imageButton = Objects.requireNonNull(getChildView(toolbar, false,
view -> view instanceof ImageButton));
- imageButton.setImageDrawable(AbstractPreferenceFragment.getBackButtonDrawable());
+ imageButton.setImageDrawable(ReVancedPreferenceFragment.getBackButtonDrawable());
imageButton.setOnClickListener(view -> activity.onBackPressed());
}
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/settings/Settings.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java
similarity index 99%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/settings/Settings.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java
index 1a62b6df3..4f11de928 100644
--- a/extensions/shared/src/main/java/app/revanced/extension/youtube/settings/Settings.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java
@@ -279,7 +279,6 @@ public class Settings extends BaseSettings {
public static final IntegerSetting ANNOUNCEMENT_LAST_ID = new IntegerSetting("revanced_announcement_last_id", -1, false, false);
public static final BooleanSetting CHECK_WATCH_HISTORY_DOMAIN_NAME = new BooleanSetting("revanced_check_watch_history_domain_name", TRUE, false, false);
public static final BooleanSetting REMOVE_TRACKING_QUERY_PARAMETER = new BooleanSetting("revanced_remove_tracking_query_parameter", TRUE);
- public static final IntegerSetting CHECK_ENVIRONMENT_WARNINGS_ISSUED = new IntegerSetting("revanced_check_environment_warnings_issued", 0, true, false);
// Debugging
/**
@@ -384,12 +383,18 @@ public class Settings extends BaseSettings {
SPOOF_APP_VERSION_TARGET.resetToDefault();
}
- // Migrate renamed enum type.
+ // Migrate renamed enum.
if (MINIPLAYER_TYPE.get() == PHONE) {
MINIPLAYER_TYPE.save(MINIMAL);
}
// endregion
+
+ // region SB import/export callbacks
+
+ Setting.addImportExportCallback(SponsorBlockSettings.SB_IMPORT_EXPORT_CALLBACK);
+
+ // endregion
}
}
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/settings/preference/AlternativeThumbnailsAboutDeArrowPreference.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/AlternativeThumbnailsAboutDeArrowPreference.java
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/settings/preference/AlternativeThumbnailsAboutDeArrowPreference.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/AlternativeThumbnailsAboutDeArrowPreference.java
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/settings/preference/ForceAVCSpoofingPreference.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/ForceAVCSpoofingPreference.java
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/settings/preference/ForceAVCSpoofingPreference.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/ForceAVCSpoofingPreference.java
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/settings/preference/HtmlPreference.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/HtmlPreference.java
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/settings/preference/HtmlPreference.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/HtmlPreference.java
diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/ReVancedPreferenceFragment.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/ReVancedPreferenceFragment.java
new file mode 100644
index 000000000..9e6cdeeeb
--- /dev/null
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/ReVancedPreferenceFragment.java
@@ -0,0 +1,113 @@
+package app.revanced.extension.youtube.settings.preference;
+
+import static app.revanced.extension.shared.Utils.getResourceIdentifier;
+
+import android.annotation.SuppressLint;
+import android.app.Dialog;
+import android.graphics.Insets;
+import android.graphics.drawable.Drawable;
+import android.os.Build;
+import android.preference.ListPreference;
+import android.preference.Preference;
+import android.preference.PreferenceScreen;
+import android.util.TypedValue;
+import android.view.ViewGroup;
+import android.view.WindowInsets;
+import android.widget.TextView;
+import android.widget.Toolbar;
+
+import androidx.annotation.RequiresApi;
+
+import app.revanced.extension.shared.Logger;
+import app.revanced.extension.shared.Utils;
+import app.revanced.extension.shared.settings.preference.AbstractPreferenceFragment;
+import app.revanced.extension.youtube.ThemeHelper;
+import app.revanced.extension.youtube.patches.playback.speed.CustomPlaybackSpeedPatch;
+import app.revanced.extension.youtube.settings.Settings;
+
+/**
+ * Preference fragment for ReVanced settings.
+ *
+ * @noinspection deprecation
+ */
+public class ReVancedPreferenceFragment extends AbstractPreferenceFragment {
+
+ @SuppressLint("UseCompatLoadingForDrawables")
+ public static Drawable getBackButtonDrawable() {
+ final int backButtonResource = getResourceIdentifier(ThemeHelper.isDarkTheme()
+ ? "yt_outline_arrow_left_white_24"
+ : "yt_outline_arrow_left_black_24",
+ "drawable");
+ return Utils.getContext().getResources().getDrawable(backButtonResource);
+ }
+
+ @RequiresApi(api = Build.VERSION_CODES.O)
+ @Override
+ protected void initialize() {
+ super.initialize();
+
+ try {
+ setPreferenceScreenToolbar(getPreferenceScreen());
+
+ // If the preference was included, then initialize it based on the available playback speed.
+ Preference defaultSpeedPreference = findPreference(Settings.PLAYBACK_SPEED_DEFAULT.key);
+ if (defaultSpeedPreference instanceof ListPreference) {
+ CustomPlaybackSpeedPatch.initializeListPreference((ListPreference) defaultSpeedPreference);
+ }
+ } catch (Exception ex) {
+ Logger.printException(() -> "initialize failure", ex);
+ }
+ }
+
+ private void setPreferenceScreenToolbar(PreferenceScreen parentScreen) {
+ for (int i = 0, preferenceCount = parentScreen.getPreferenceCount(); i < preferenceCount; i++) {
+ Preference childPreference = parentScreen.getPreference(i);
+ if (childPreference instanceof PreferenceScreen) {
+ // Recursively set sub preferences.
+ setPreferenceScreenToolbar((PreferenceScreen) childPreference);
+
+ childPreference.setOnPreferenceClickListener(
+ childScreen -> {
+ Dialog preferenceScreenDialog = ((PreferenceScreen) childScreen).getDialog();
+ ViewGroup rootView = (ViewGroup) preferenceScreenDialog
+ .findViewById(android.R.id.content)
+ .getParent();
+
+ // Fix required for Android 15 and YT 19.45+
+ // FIXME:
+ // On Android 15 the text layout is not aligned the same as the parent
+ // screen and it looks a little off. Otherwise this works.
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
+ rootView.setOnApplyWindowInsetsListener((v, insets) -> {
+ Insets statusInsets = insets.getInsets(WindowInsets.Type.statusBars());
+ v.setPadding(0, statusInsets.top, 0, 0);
+ return insets;
+ });
+ }
+
+ Toolbar toolbar = new Toolbar(childScreen.getContext());
+ toolbar.setTitle(childScreen.getTitle());
+ toolbar.setNavigationIcon(getBackButtonDrawable());
+ toolbar.setNavigationOnClickListener(view -> preferenceScreenDialog.dismiss());
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
+ final int margin = (int) TypedValue.applyDimension(
+ TypedValue.COMPLEX_UNIT_DIP, 16, getResources().getDisplayMetrics()
+ );
+ toolbar.setTitleMargin(margin, 0, margin, 0);
+ }
+
+ TextView toolbarTextView = Utils.getChildView(toolbar,
+ true, TextView.class::isInstance);
+ if (toolbarTextView != null) {
+ toolbarTextView.setTextColor(ThemeHelper.getForegroundColor());
+ }
+
+ rootView.addView(toolbar, 0);
+ return false;
+ }
+ );
+ }
+ }
+ }
+}
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/settings/preference/ReVancedYouTubeAboutPreference.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/ReVancedYouTubeAboutPreference.java
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/settings/preference/ReVancedYouTubeAboutPreference.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/ReVancedYouTubeAboutPreference.java
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/settings/preference/ReturnYouTubeDislikePreferenceFragment.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/ReturnYouTubeDislikePreferenceFragment.java
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/settings/preference/ReturnYouTubeDislikePreferenceFragment.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/ReturnYouTubeDislikePreferenceFragment.java
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/settings/preference/SponsorBlockPreferenceFragment.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/SponsorBlockPreferenceFragment.java
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/settings/preference/SponsorBlockPreferenceFragment.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/SponsorBlockPreferenceFragment.java
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/shared/NavigationBar.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/shared/NavigationBar.java
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/shared/NavigationBar.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/shared/NavigationBar.java
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/shared/PlayerControlsVisibilityObserver.kt b/extensions/youtube/src/main/java/app/revanced/extension/youtube/shared/PlayerControlsVisibilityObserver.kt
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/shared/PlayerControlsVisibilityObserver.kt
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/shared/PlayerControlsVisibilityObserver.kt
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/shared/PlayerOverlays.kt b/extensions/youtube/src/main/java/app/revanced/extension/youtube/shared/PlayerOverlays.kt
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/shared/PlayerOverlays.kt
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/shared/PlayerOverlays.kt
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/shared/PlayerType.kt b/extensions/youtube/src/main/java/app/revanced/extension/youtube/shared/PlayerType.kt
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/shared/PlayerType.kt
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/shared/PlayerType.kt
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/shared/VideoState.kt b/extensions/youtube/src/main/java/app/revanced/extension/youtube/shared/VideoState.kt
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/shared/VideoState.kt
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/shared/VideoState.kt
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/sponsorblock/SegmentPlaybackController.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/SegmentPlaybackController.java
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/sponsorblock/SegmentPlaybackController.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/SegmentPlaybackController.java
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/sponsorblock/SponsorBlockSettings.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/SponsorBlockSettings.java
similarity index 95%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/sponsorblock/SponsorBlockSettings.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/SponsorBlockSettings.java
index 0edc054c7..45739f267 100644
--- a/extensions/shared/src/main/java/app/revanced/extension/youtube/sponsorblock/SponsorBlockSettings.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/SponsorBlockSettings.java
@@ -27,6 +27,17 @@ public class SponsorBlockSettings {
*/
private static final int SB_PRIVATE_USER_ID_MINIMUM_LENGTH = 30;
+ public static final Setting.ImportExportCallback SB_IMPORT_EXPORT_CALLBACK = new Setting.ImportExportCallback() {
+ @Override
+ public void settingsImported(@Nullable Context context) {
+ SegmentCategory.loadAllCategoriesFromSettings();
+ }
+ @Override
+ public void settingsExported(@Nullable Context context) {
+ showExportWarningIfNeeded(context);
+ }
+ };
+
public static void importDesktopSettings(@NonNull String json) {
Utils.verifyOnMainThread();
try {
@@ -161,7 +172,7 @@ public class SponsorBlockSettings {
/**
* 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();
@@ -234,11 +245,4 @@ public class SponsorBlockSettings {
SegmentCategory.updateEnabledCategories();
}
-
- /**
- * Updates internal data based on {@link Setting} values.
- */
- public static void updateFromImportedSettings() {
- SegmentCategory.loadAllCategoriesFromSettings();
- }
}
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/sponsorblock/SponsorBlockUtils.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/SponsorBlockUtils.java
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/sponsorblock/SponsorBlockUtils.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/SponsorBlockUtils.java
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/sponsorblock/objects/CategoryBehaviour.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/objects/CategoryBehaviour.java
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/sponsorblock/objects/CategoryBehaviour.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/objects/CategoryBehaviour.java
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/sponsorblock/objects/SegmentCategory.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/objects/SegmentCategory.java
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/sponsorblock/objects/SegmentCategory.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/objects/SegmentCategory.java
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/sponsorblock/objects/SegmentCategoryListPreference.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/objects/SegmentCategoryListPreference.java
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/sponsorblock/objects/SegmentCategoryListPreference.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/objects/SegmentCategoryListPreference.java
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/sponsorblock/objects/SponsorSegment.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/objects/SponsorSegment.java
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/sponsorblock/objects/SponsorSegment.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/objects/SponsorSegment.java
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/sponsorblock/objects/UserStats.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/objects/UserStats.java
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/sponsorblock/objects/UserStats.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/objects/UserStats.java
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/sponsorblock/requests/SBRequester.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/requests/SBRequester.java
similarity index 99%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/sponsorblock/requests/SBRequester.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/requests/SBRequester.java
index 0f0a93afc..f67489850 100644
--- a/extensions/shared/src/main/java/app/revanced/extension/youtube/sponsorblock/requests/SBRequester.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/requests/SBRequester.java
@@ -17,14 +17,14 @@ import java.util.List;
import java.util.Locale;
import java.util.concurrent.TimeUnit;
-import app.revanced.extension.youtube.requests.Requester;
-import app.revanced.extension.youtube.requests.Route;
import app.revanced.extension.youtube.settings.Settings;
import app.revanced.extension.youtube.sponsorblock.SponsorBlockSettings;
import app.revanced.extension.youtube.sponsorblock.objects.SegmentCategory;
import app.revanced.extension.youtube.sponsorblock.objects.SponsorSegment;
import app.revanced.extension.youtube.sponsorblock.objects.SponsorSegment.SegmentVote;
import app.revanced.extension.youtube.sponsorblock.objects.UserStats;
+import app.revanced.extension.shared.requests.Route;
+import app.revanced.extension.shared.requests.Requester;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/sponsorblock/requests/SBRoutes.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/requests/SBRoutes.java
similarity index 86%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/sponsorblock/requests/SBRoutes.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/requests/SBRoutes.java
index fe3403e56..0f7b54c90 100644
--- a/extensions/shared/src/main/java/app/revanced/extension/youtube/sponsorblock/requests/SBRoutes.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/requests/SBRoutes.java
@@ -1,9 +1,9 @@
package app.revanced.extension.youtube.sponsorblock.requests;
-import static app.revanced.extension.youtube.requests.Route.Method.GET;
-import static app.revanced.extension.youtube.requests.Route.Method.POST;
+import static app.revanced.extension.shared.requests.Route.Method.GET;
+import static app.revanced.extension.shared.requests.Route.Method.POST;
-import app.revanced.extension.youtube.requests.Route;
+import app.revanced.extension.shared.requests.Route;
class SBRoutes {
static final Route IS_USER_VIP = new Route(GET, "/api/isUserVIP?userID={user_id}");
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/sponsorblock/ui/CreateSegmentButtonController.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/ui/CreateSegmentButtonController.java
similarity index 98%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/sponsorblock/ui/CreateSegmentButtonController.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/ui/CreateSegmentButtonController.java
index e19d3273c..4ec6c35b7 100644
--- a/extensions/shared/src/main/java/app/revanced/extension/youtube/sponsorblock/ui/CreateSegmentButtonController.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/ui/CreateSegmentButtonController.java
@@ -1,5 +1,7 @@
package app.revanced.extension.youtube.sponsorblock.ui;
+import static app.revanced.extension.shared.Utils.getResourceIdentifier;
+
import android.view.View;
import android.widget.ImageView;
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/sponsorblock/ui/NewSegmentLayout.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/ui/NewSegmentLayout.java
similarity index 98%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/sponsorblock/ui/NewSegmentLayout.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/ui/NewSegmentLayout.java
index 9499d98ea..1f8d80c50 100644
--- a/extensions/shared/src/main/java/app/revanced/extension/youtube/sponsorblock/ui/NewSegmentLayout.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/ui/NewSegmentLayout.java
@@ -109,12 +109,11 @@ public final class NewSegmentLayout extends FrameLayout {
final ButtonOnClickHandlerFunction handler, final String debugMessage) {
ImageButton button = findViewById(getResourceIdentifier(context, resourceIdentifierName, "id"));
- button.setBackgroundResource(rippleEffectId);
+ // Add ripple effect
RippleDrawable rippleDrawable = new RippleDrawable(
rippleColorStateList, null, null
);
button.setBackground(rippleDrawable);
-
button.setOnClickListener((v) -> {
handler.apply();
Logger.printDebug(() -> debugMessage);
@@ -125,4 +124,4 @@ public final class NewSegmentLayout extends FrameLayout {
private interface ButtonOnClickHandlerFunction {
void apply();
}
-}
\ No newline at end of file
+}
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/sponsorblock/ui/SkipSponsorButton.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/ui/SkipSponsorButton.java
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/sponsorblock/ui/SkipSponsorButton.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/ui/SkipSponsorButton.java
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/sponsorblock/ui/SponsorBlockViewController.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/ui/SponsorBlockViewController.java
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/sponsorblock/ui/SponsorBlockViewController.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/ui/SponsorBlockViewController.java
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/sponsorblock/ui/VotingButtonController.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/ui/VotingButtonController.java
similarity index 98%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/sponsorblock/ui/VotingButtonController.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/ui/VotingButtonController.java
index 8609dd004..bad5f2484 100644
--- a/extensions/shared/src/main/java/app/revanced/extension/youtube/sponsorblock/ui/VotingButtonController.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/ui/VotingButtonController.java
@@ -1,5 +1,7 @@
package app.revanced.extension.youtube.sponsorblock.ui;
+import static app.revanced.extension.shared.Utils.getResourceIdentifier;
+
import android.view.View;
import android.widget.ImageView;
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/swipecontrols/SwipeControlsConfigurationProvider.kt b/extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/SwipeControlsConfigurationProvider.kt
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/swipecontrols/SwipeControlsConfigurationProvider.kt
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/SwipeControlsConfigurationProvider.kt
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/swipecontrols/SwipeControlsHostActivity.kt b/extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/SwipeControlsHostActivity.kt
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/swipecontrols/SwipeControlsHostActivity.kt
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/SwipeControlsHostActivity.kt
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/swipecontrols/controller/AudioVolumeController.kt b/extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/controller/AudioVolumeController.kt
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/swipecontrols/controller/AudioVolumeController.kt
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/controller/AudioVolumeController.kt
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/swipecontrols/controller/ScreenBrightnessController.kt b/extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/controller/ScreenBrightnessController.kt
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/swipecontrols/controller/ScreenBrightnessController.kt
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/controller/ScreenBrightnessController.kt
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/swipecontrols/controller/SwipeZonesController.kt b/extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/controller/SwipeZonesController.kt
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/swipecontrols/controller/SwipeZonesController.kt
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/controller/SwipeZonesController.kt
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/swipecontrols/controller/VolumeKeysController.kt b/extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/controller/VolumeKeysController.kt
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/swipecontrols/controller/VolumeKeysController.kt
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/controller/VolumeKeysController.kt
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/swipecontrols/controller/gesture/ClassicSwipeController.kt b/extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/controller/gesture/ClassicSwipeController.kt
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/swipecontrols/controller/gesture/ClassicSwipeController.kt
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/controller/gesture/ClassicSwipeController.kt
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/swipecontrols/controller/gesture/PressToSwipeController.kt b/extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/controller/gesture/PressToSwipeController.kt
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/swipecontrols/controller/gesture/PressToSwipeController.kt
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/controller/gesture/PressToSwipeController.kt
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/swipecontrols/controller/gesture/core/BaseGestureController.kt b/extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/controller/gesture/core/BaseGestureController.kt
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/swipecontrols/controller/gesture/core/BaseGestureController.kt
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/controller/gesture/core/BaseGestureController.kt
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/swipecontrols/controller/gesture/core/GestureController.kt b/extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/controller/gesture/core/GestureController.kt
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/swipecontrols/controller/gesture/core/GestureController.kt
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/controller/gesture/core/GestureController.kt
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/swipecontrols/controller/gesture/core/SwipeDetector.kt b/extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/controller/gesture/core/SwipeDetector.kt
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/swipecontrols/controller/gesture/core/SwipeDetector.kt
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/controller/gesture/core/SwipeDetector.kt
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/swipecontrols/controller/gesture/core/VolumeAndBrightnessScroller.kt b/extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/controller/gesture/core/VolumeAndBrightnessScroller.kt
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/swipecontrols/controller/gesture/core/VolumeAndBrightnessScroller.kt
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/controller/gesture/core/VolumeAndBrightnessScroller.kt
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/swipecontrols/misc/Point.kt b/extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/misc/Point.kt
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/swipecontrols/misc/Point.kt
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/misc/Point.kt
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/swipecontrols/misc/Rectangle.kt b/extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/misc/Rectangle.kt
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/swipecontrols/misc/Rectangle.kt
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/misc/Rectangle.kt
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/swipecontrols/misc/ScrollDistanceHelper.kt b/extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/misc/ScrollDistanceHelper.kt
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/swipecontrols/misc/ScrollDistanceHelper.kt
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/misc/ScrollDistanceHelper.kt
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/swipecontrols/misc/SwipeControlsOverlay.kt b/extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/misc/SwipeControlsOverlay.kt
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/swipecontrols/misc/SwipeControlsOverlay.kt
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/misc/SwipeControlsOverlay.kt
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/swipecontrols/misc/SwipeControlsUtils.kt b/extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/misc/SwipeControlsUtils.kt
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/swipecontrols/misc/SwipeControlsUtils.kt
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/misc/SwipeControlsUtils.kt
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/swipecontrols/views/SwipeControlsOverlayLayout.kt b/extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/views/SwipeControlsOverlayLayout.kt
similarity index 98%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/swipecontrols/views/SwipeControlsOverlayLayout.kt
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/views/SwipeControlsOverlayLayout.kt
index fa30d5994..b3422d7bd 100644
--- a/extensions/shared/src/main/java/app/revanced/extension/youtube/swipecontrols/views/SwipeControlsOverlayLayout.kt
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/views/SwipeControlsOverlayLayout.kt
@@ -7,6 +7,8 @@ import android.os.Handler
import android.os.Looper
import android.util.TypedValue
import android.view.HapticFeedbackConstants
+import android.view.View
+import android.view.ViewGroup
import android.widget.RelativeLayout
import android.widget.TextView
import app.revanced.extension.shared.StringRef.str
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/videoplayer/CopyVideoUrlButton.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/videoplayer/CopyVideoUrlButton.java
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/videoplayer/CopyVideoUrlButton.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/videoplayer/CopyVideoUrlButton.java
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/videoplayer/CopyVideoUrlTimestampButton.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/videoplayer/CopyVideoUrlTimestampButton.java
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/videoplayer/CopyVideoUrlTimestampButton.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/videoplayer/CopyVideoUrlTimestampButton.java
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/videoplayer/ExternalDownloadButton.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/videoplayer/ExternalDownloadButton.java
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/videoplayer/ExternalDownloadButton.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/videoplayer/ExternalDownloadButton.java
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/videoplayer/PlaybackSpeedDialogButton.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/videoplayer/PlaybackSpeedDialogButton.java
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/videoplayer/PlaybackSpeedDialogButton.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/videoplayer/PlaybackSpeedDialogButton.java
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/videoplayer/PlayerControlButton.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/videoplayer/PlayerControlButton.java
similarity index 100%
rename from extensions/shared/src/main/java/app/revanced/extension/youtube/videoplayer/PlayerControlButton.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/videoplayer/PlayerControlButton.java
diff --git a/extensions/youtube/stub/build.gradle.kts b/extensions/youtube/stub/build.gradle.kts
new file mode 100644
index 000000000..c1cc5794c
--- /dev/null
+++ b/extensions/youtube/stub/build.gradle.kts
@@ -0,0 +1,17 @@
+plugins {
+ id(libs.plugins.android.library.get().pluginId)
+}
+
+android {
+ namespace = "app.revanced.extension"
+ compileSdk = 33
+
+ defaultConfig {
+ minSdk = 24
+ }
+
+ compileOptions {
+ sourceCompatibility = JavaVersion.VERSION_11
+ targetCompatibility = JavaVersion.VERSION_11
+ }
+}
diff --git a/extensions/youtube/stub/src/main/AndroidManifest.xml b/extensions/youtube/stub/src/main/AndroidManifest.xml
new file mode 100644
index 000000000..15e7c2ae6
--- /dev/null
+++ b/extensions/youtube/stub/src/main/AndroidManifest.xml
@@ -0,0 +1 @@
+
* This class will not be included and "replaced" by the real package's class.
*/
public class ConstraintLayout extends ViewGroup {
diff --git a/extensions/shared/stub/src/main/java/com/google/android/apps/youtube/app/ui/SlimMetadataScrollableButtonContainerLayout.java b/extensions/youtube/stub/src/main/java/com/google/android/apps/youtube/app/ui/SlimMetadataScrollableButtonContainerLayout.java
similarity index 100%
rename from extensions/shared/stub/src/main/java/com/google/android/apps/youtube/app/ui/SlimMetadataScrollableButtonContainerLayout.java
rename to extensions/youtube/stub/src/main/java/com/google/android/apps/youtube/app/ui/SlimMetadataScrollableButtonContainerLayout.java
diff --git a/extensions/shared/stub/src/main/java/com/google/android/libraries/youtube/rendering/ui/pivotbar/PivotBar.java b/extensions/youtube/stub/src/main/java/com/google/android/libraries/youtube/rendering/ui/pivotbar/PivotBar.java
similarity index 100%
rename from extensions/shared/stub/src/main/java/com/google/android/libraries/youtube/rendering/ui/pivotbar/PivotBar.java
rename to extensions/youtube/stub/src/main/java/com/google/android/libraries/youtube/rendering/ui/pivotbar/PivotBar.java
diff --git a/extensions/shared/stub/src/main/java/com/google/protos/youtube/api/innertube/InnertubeContext$ClientInfo.java b/extensions/youtube/stub/src/main/java/com/google/protos/youtube/api/innertube/InnertubeContext$ClientInfo.java
similarity index 100%
rename from extensions/shared/stub/src/main/java/com/google/protos/youtube/api/innertube/InnertubeContext$ClientInfo.java
rename to extensions/youtube/stub/src/main/java/com/google/protos/youtube/api/innertube/InnertubeContext$ClientInfo.java
diff --git a/extensions/shared/stub/src/main/java/org/chromium/net/UrlRequest.java b/extensions/youtube/stub/src/main/java/org/chromium/net/UrlRequest.java
similarity index 100%
rename from extensions/shared/stub/src/main/java/org/chromium/net/UrlRequest.java
rename to extensions/youtube/stub/src/main/java/org/chromium/net/UrlRequest.java
diff --git a/extensions/shared/stub/src/main/java/org/chromium/net/UrlResponseInfo.java b/extensions/youtube/stub/src/main/java/org/chromium/net/UrlResponseInfo.java
similarity index 100%
rename from extensions/shared/stub/src/main/java/org/chromium/net/UrlResponseInfo.java
rename to extensions/youtube/stub/src/main/java/org/chromium/net/UrlResponseInfo.java
diff --git a/extensions/shared/stub/src/main/java/org/chromium/net/impl/CronetUrlRequest.java b/extensions/youtube/stub/src/main/java/org/chromium/net/impl/CronetUrlRequest.java
similarity index 100%
rename from extensions/shared/stub/src/main/java/org/chromium/net/impl/CronetUrlRequest.java
rename to extensions/youtube/stub/src/main/java/org/chromium/net/impl/CronetUrlRequest.java
diff --git a/gradle.properties b/gradle.properties
index 36764a035..48d87ebcf 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -3,4 +3,4 @@ org.gradle.jvmargs = -Xms512M -Xmx2048M
org.gradle.parallel = true
android.useAndroidX = true
kotlin.code.style = official
-version = 5.2.1-dev.2
+version = 5.2.2-dev.1
diff --git a/patches/api/patches.api b/patches/api/patches.api
index dc5e67d40..c0c73d74f 100644
--- a/patches/api/patches.api
+++ b/patches/api/patches.api
@@ -547,6 +547,7 @@ public final class app/revanced/patches/shared/misc/extension/ExtensionHook {
public final class app/revanced/patches/shared/misc/extension/SharedExtensionPatchKt {
public static final fun extensionHook (Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Lapp/revanced/patches/shared/misc/extension/ExtensionHook;
public static synthetic fun extensionHook$default (Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lapp/revanced/patches/shared/misc/extension/ExtensionHook;
+ public static final fun sharedExtensionPatch (Ljava/lang/String;[Lapp/revanced/patches/shared/misc/extension/ExtensionHook;)Lapp/revanced/patcher/patch/BytecodePatch;
public static final fun sharedExtensionPatch ([Lapp/revanced/patches/shared/misc/extension/ExtensionHook;)Lapp/revanced/patcher/patch/BytecodePatch;
}
@@ -1204,10 +1205,6 @@ public final class app/revanced/patches/youtube/layout/startupshortsreset/Disabl
public static final fun getDisableResumingShortsOnStartupPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
-public final class app/revanced/patches/youtube/layout/startupshortsreset/FingerprintsKt {
- public static final fun indexOfOptionalInstruction (Lcom/android/tools/smali/dexlib2/iface/Method;)I
-}
-
public final class app/revanced/patches/youtube/layout/tablet/EnableTabletLayoutPatchKt {
public static final field EXTENSION_CLASS_DESCRIPTOR Ljava/lang/String;
public static final fun getEnableTabletLayoutPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
@@ -1333,6 +1330,7 @@ public final class app/revanced/patches/youtube/misc/playservice/VersionCheckPat
public static final fun is_19_41_or_greater ()Z
public static final fun is_19_43_or_greater ()Z
public static final fun is_19_46_or_greater ()Z
+ public static final fun is_19_47_or_greater ()Z
}
public final class app/revanced/patches/youtube/misc/privacy/RemoveTrackingQueryParameterPatchKt {
diff --git a/patches/src/main/kotlin/app/revanced/patches/all/misc/connectivity/wifi/spoof/SpoofWifiPatch.kt b/patches/src/main/kotlin/app/revanced/patches/all/misc/connectivity/wifi/spoof/SpoofWifiPatch.kt
index 3e086f95c..ede9eb1dc 100644
--- a/patches/src/main/kotlin/app/revanced/patches/all/misc/connectivity/wifi/spoof/SpoofWifiPatch.kt
+++ b/patches/src/main/kotlin/app/revanced/patches/all/misc/connectivity/wifi/spoof/SpoofWifiPatch.kt
@@ -5,7 +5,8 @@ import app.revanced.patches.all.misc.transformation.IMethodCall
import app.revanced.patches.all.misc.transformation.filterMapInstruction35c
import app.revanced.patches.all.misc.transformation.transformInstructionsPatch
-internal const val EXTENSION_CLASS_DESCRIPTOR_PREFIX = "Lapp/revanced/extension/all/connectivity/wifi/spoof/SpoofWifiPatch"
+internal const val EXTENSION_CLASS_DESCRIPTOR_PREFIX =
+ "Lapp/revanced/extension/all/connectivity/wifi/spoof/SpoofWifiPatch"
internal const val EXTENSION_CLASS_DESCRIPTOR = "$EXTENSION_CLASS_DESCRIPTOR_PREFIX;"
@@ -15,7 +16,7 @@ val spoofWifiPatch = bytecodePatch(
description = "Spoofs an existing Wi-Fi connection.",
use = false,
) {
- extendWith("extensions/all/connectivity/wifi/spoof/spoof-wifi.rve")
+ extendWith("extensions/all/misc/connectivity/wifi/spoof/spoof-wifi.rve")
dependsOn(
transformInstructionsPatch(
diff --git a/patches/src/main/kotlin/app/revanced/patches/all/misc/screencapture/RemoveScreenCaptureRestrictionPatch.kt b/patches/src/main/kotlin/app/revanced/patches/all/misc/screencapture/RemoveScreenCaptureRestrictionPatch.kt
index 5eef83ac0..4b5955d87 100644
--- a/patches/src/main/kotlin/app/revanced/patches/all/misc/screencapture/RemoveScreenCaptureRestrictionPatch.kt
+++ b/patches/src/main/kotlin/app/revanced/patches/all/misc/screencapture/RemoveScreenCaptureRestrictionPatch.kt
@@ -34,7 +34,7 @@ val removeScreenCaptureRestrictionPatch = bytecodePatch(
description = "Removes the restriction of capturing audio from apps that normally wouldn't allow it.",
use = false,
) {
- extendWith("extensions/all/screencapture/remove-screen-capture-restriction.rve")
+ extendWith("extensions/all/misc/screencapture/remove-screen-capture-restriction.rve")
dependsOn(
removeCaptureRestrictionResourcePatch,
diff --git a/patches/src/main/kotlin/app/revanced/patches/all/misc/screenshot/RemoveScreenshotRestrictionPatch.kt b/patches/src/main/kotlin/app/revanced/patches/all/misc/screenshot/RemoveScreenshotRestrictionPatch.kt
index af689f5ed..19c4ba05f 100644
--- a/patches/src/main/kotlin/app/revanced/patches/all/misc/screenshot/RemoveScreenshotRestrictionPatch.kt
+++ b/patches/src/main/kotlin/app/revanced/patches/all/misc/screenshot/RemoveScreenshotRestrictionPatch.kt
@@ -19,7 +19,7 @@ val removeScreenshotRestrictionPatch = bytecodePatch(
description = "Removes the restriction of taking screenshots in apps that normally wouldn't allow it.",
use = false,
) {
- extendWith("extensions/all/screenshot/remove-screenshot-restriction.rve")
+ extendWith("extensions/all/misc/screenshot/remove-screenshot-restriction.rve")
dependsOn(
// Remove the restriction of taking screenshots.
diff --git a/patches/src/main/kotlin/app/revanced/patches/googlephotos/misc/extension/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/googlephotos/misc/extension/Hooks.kt
similarity index 100%
rename from patches/src/main/kotlin/app/revanced/patches/googlephotos/misc/extension/Fingerprints.kt
rename to patches/src/main/kotlin/app/revanced/patches/googlephotos/misc/extension/Hooks.kt
diff --git a/patches/src/main/kotlin/app/revanced/patches/music/misc/extension/SharedExtensionPatch.kt b/patches/src/main/kotlin/app/revanced/patches/music/misc/extension/SharedExtensionPatch.kt
index e6c1c69fe..9351b600e 100644
--- a/patches/src/main/kotlin/app/revanced/patches/music/misc/extension/SharedExtensionPatch.kt
+++ b/patches/src/main/kotlin/app/revanced/patches/music/misc/extension/SharedExtensionPatch.kt
@@ -3,4 +3,7 @@ package app.revanced.patches.music.misc.extension
import app.revanced.patches.music.misc.extension.hooks.applicationInitHook
import app.revanced.patches.shared.misc.extension.sharedExtensionPatch
-val sharedExtensionPatch = sharedExtensionPatch(applicationInitHook)
+val sharedExtensionPatch = sharedExtensionPatch(
+ "music",
+ applicationInitHook,
+)
diff --git a/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/boostforreddit/misc/extension/SharedExtensionPatch.kt b/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/boostforreddit/misc/extension/SharedExtensionPatch.kt
index 3d92d142b..9f85643f4 100644
--- a/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/boostforreddit/misc/extension/SharedExtensionPatch.kt
+++ b/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/boostforreddit/misc/extension/SharedExtensionPatch.kt
@@ -3,4 +3,4 @@ package app.revanced.patches.reddit.customclients.boostforreddit.misc.extension
import app.revanced.patches.reddit.customclients.boostforreddit.misc.extension.hooks.initHook
import app.revanced.patches.shared.misc.extension.sharedExtensionPatch
-val sharedExtensionPatch = sharedExtensionPatch(initHook)
+val sharedExtensionPatch = sharedExtensionPatch("boostforreddit", initHook)
diff --git a/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/sync/syncforreddit/extension/SharedExtensionPatch.kt b/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/sync/syncforreddit/extension/SharedExtensionPatch.kt
index 67f02676f..7f50bdf7e 100644
--- a/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/sync/syncforreddit/extension/SharedExtensionPatch.kt
+++ b/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/sync/syncforreddit/extension/SharedExtensionPatch.kt
@@ -3,4 +3,4 @@ package app.revanced.patches.reddit.customclients.sync.syncforreddit.extension
import app.revanced.patches.reddit.customclients.sync.syncforreddit.extension.hooks.initHook
import app.revanced.patches.shared.misc.extension.sharedExtensionPatch
-val sharedExtensionPatch = sharedExtensionPatch(initHook)
+val sharedExtensionPatch = sharedExtensionPatch("sync", initHook)
diff --git a/patches/src/main/kotlin/app/revanced/patches/reddit/misc/extension/ExtensionPatch.kt b/patches/src/main/kotlin/app/revanced/patches/reddit/misc/extension/ExtensionPatch.kt
index db449a93e..5633647ed 100644
--- a/patches/src/main/kotlin/app/revanced/patches/reddit/misc/extension/ExtensionPatch.kt
+++ b/patches/src/main/kotlin/app/revanced/patches/reddit/misc/extension/ExtensionPatch.kt
@@ -2,4 +2,4 @@ package app.revanced.patches.reddit.misc.extension
import app.revanced.patches.shared.misc.extension.sharedExtensionPatch
-val sharedExtensionPatch = sharedExtensionPatch()
+val sharedExtensionPatch = sharedExtensionPatch("reddit")
diff --git a/patches/src/main/kotlin/app/revanced/patches/shared/misc/extension/SharedExtensionPatch.kt b/patches/src/main/kotlin/app/revanced/patches/shared/misc/extension/SharedExtensionPatch.kt
index 7460ddd11..cfcf9d0b1 100644
--- a/patches/src/main/kotlin/app/revanced/patches/shared/misc/extension/SharedExtensionPatch.kt
+++ b/patches/src/main/kotlin/app/revanced/patches/shared/misc/extension/SharedExtensionPatch.kt
@@ -14,6 +14,26 @@ import java.util.jar.JarFile
internal const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/shared/Utils;"
+/**
+ * A patch to extend with an extension shared with multiple patches.
+ *
+ * @param extensionName The name of the extension to extend with.
+ */
+fun sharedExtensionPatch(
+ extensionName: String,
+ vararg hooks: ExtensionHook,
+) = bytecodePatch {
+ dependsOn(sharedExtensionPatch(*hooks))
+
+ extendWith("extensions/$extensionName.rve")
+}
+
+/**
+ * A patch to extend with the "shared" extension.
+ *
+ * @param hooks The hooks to get the application context for use in the extension,
+ * commonly for the onCreate method of exported activities.
+ */
fun sharedExtensionPatch(
vararg hooks: ExtensionHook,
) = bytecodePatch {
diff --git a/patches/src/main/kotlin/app/revanced/patches/shared/misc/mapping/ResourceMappingPatch.kt b/patches/src/main/kotlin/app/revanced/patches/shared/misc/mapping/ResourceMappingPatch.kt
index 4368bace0..8a9e499dd 100644
--- a/patches/src/main/kotlin/app/revanced/patches/shared/misc/mapping/ResourceMappingPatch.kt
+++ b/patches/src/main/kotlin/app/revanced/patches/shared/misc/mapping/ResourceMappingPatch.kt
@@ -12,12 +12,12 @@ lateinit var resourceMappings: List