diff --git a/extensions/music/build.gradle.kts b/extensions/music/build.gradle.kts new file mode 100644 index 000000000..a12d4c1f1 --- /dev/null +++ b/extensions/music/build.gradle.kts @@ -0,0 +1,4 @@ +dependencies { + compileOnly(project(":extensions:shared:library")) + compileOnly(libs.annotation) +} diff --git a/extensions/music/src/main/AndroidManifest.xml b/extensions/music/src/main/AndroidManifest.xml new file mode 100644 index 000000000..9b65eb06c --- /dev/null +++ b/extensions/music/src/main/AndroidManifest.xml @@ -0,0 +1 @@ + diff --git a/extensions/music/src/main/java/app/revanced/extension/music/announcements/AnnouncementsPatch.java b/extensions/music/src/main/java/app/revanced/extension/music/announcements/AnnouncementsPatch.java new file mode 100644 index 000000000..7366dee1a --- /dev/null +++ b/extensions/music/src/main/java/app/revanced/extension/music/announcements/AnnouncementsPatch.java @@ -0,0 +1,20 @@ +package app.revanced.extension.music.announcements; + +import android.app.Activity; +import android.os.Build; +import androidx.annotation.RequiresApi; +import app.revanced.extension.shared.announcements.BaseAnnouncementsPatch; + +@SuppressWarnings("unused") +public class AnnouncementsPatch extends BaseAnnouncementsPatch { + private static final AnnouncementsPatch INSTANCE = new AnnouncementsPatch(); + + private AnnouncementsPatch() { + super("music"); + } + + @RequiresApi(api = Build.VERSION_CODES.O) + public static void showAnnouncement(final Activity context) { + INSTANCE._showAnnouncement(context); + } +} diff --git a/extensions/shared/library/src/main/java/app/revanced/extension/shared/announcements/AnnouncementsPatch.java b/extensions/shared/library/src/main/java/app/revanced/extension/shared/announcements/BaseAnnouncementsPatch.java similarity index 89% rename from extensions/shared/library/src/main/java/app/revanced/extension/shared/announcements/AnnouncementsPatch.java rename to extensions/shared/library/src/main/java/app/revanced/extension/shared/announcements/BaseAnnouncementsPatch.java index 5f5c93887..4e23214a8 100644 --- a/extensions/shared/library/src/main/java/app/revanced/extension/shared/announcements/AnnouncementsPatch.java +++ b/extensions/shared/library/src/main/java/app/revanced/extension/shared/announcements/BaseAnnouncementsPatch.java @@ -2,8 +2,6 @@ package app.revanced.extension.shared.announcements; import static android.text.Html.FROM_HTML_MODE_COMPACT; import static app.revanced.extension.shared.StringRef.str; -import static app.revanced.extension.shared.announcements.requests.AnnouncementsRoutes.GET_LATEST_ANNOUNCEMENTS; -import static app.revanced.extension.shared.announcements.requests.AnnouncementsRoutes.GET_LATEST_ANNOUNCEMENT_IDS; import android.app.Activity; import android.app.AlertDialog; @@ -26,15 +24,17 @@ import app.revanced.extension.shared.requests.Requester; import app.revanced.extension.shared.announcements.requests.AnnouncementsRoutes; import app.revanced.extension.shared.settings.BaseSettings; -@SuppressWarnings("unused") -public final class AnnouncementsPatch { - private AnnouncementsPatch() { +public abstract class BaseAnnouncementsPatch { + private final AnnouncementsRoutes announcementsRoutes; + + public BaseAnnouncementsPatch(String tag) { + this.announcementsRoutes = new AnnouncementsRoutes(tag); } @RequiresApi(api = Build.VERSION_CODES.O) - private static boolean isLatestAlready() throws IOException { + private boolean isLatestAlready() throws IOException { HttpURLConnection connection = - AnnouncementsRoutes.getAnnouncementsConnectionFromRoute(GET_LATEST_ANNOUNCEMENT_IDS); + announcementsRoutes.getAnnouncementsConnectionFromRoute(announcementsRoutes.GET_LATEST_ANNOUNCEMENT_IDS); Logger.printDebug(() -> "Get latest announcement IDs route connection url: " + connection.getURL()); @@ -71,7 +71,7 @@ public final class AnnouncementsPatch { } @RequiresApi(api = Build.VERSION_CODES.O) - public static void showAnnouncement(final Activity context) { + public void _showAnnouncement(final Activity context) { if (!BaseSettings.ANNOUNCEMENTS.get()) return; // Check if there is internet connection @@ -81,8 +81,8 @@ public final class AnnouncementsPatch { try { if (isLatestAlready()) return; - HttpURLConnection connection = AnnouncementsRoutes - .getAnnouncementsConnectionFromRoute(GET_LATEST_ANNOUNCEMENTS); + HttpURLConnection connection = announcementsRoutes + .getAnnouncementsConnectionFromRoute(announcementsRoutes.GET_LATEST_ANNOUNCEMENTS); Logger.printDebug(() -> "Get latest announcements route connection url: " + connection.getURL()); diff --git a/extensions/shared/library/src/main/java/app/revanced/extension/shared/announcements/requests/AnnouncementsRoutes.java b/extensions/shared/library/src/main/java/app/revanced/extension/shared/announcements/requests/AnnouncementsRoutes.java index 2d43a7920..f0fb20553 100644 --- a/extensions/shared/library/src/main/java/app/revanced/extension/shared/announcements/requests/AnnouncementsRoutes.java +++ b/extensions/shared/library/src/main/java/app/revanced/extension/shared/announcements/requests/AnnouncementsRoutes.java @@ -9,14 +9,15 @@ import java.net.HttpURLConnection; import static app.revanced.extension.shared.requests.Route.Method.GET; public class AnnouncementsRoutes { - public static final Route GET_LATEST_ANNOUNCEMENT_IDS = new Route(GET, "/announcements/latest/id?tag=youtube"); - public static final Route GET_LATEST_ANNOUNCEMENTS = new Route(GET, "/announcements/latest?tag=youtube"); - private static final String ANNOUNCEMENTS_PROVIDER = "https://api.revanced.app/v4"; + public final Route GET_LATEST_ANNOUNCEMENTS; + public final Route GET_LATEST_ANNOUNCEMENT_IDS; - private AnnouncementsRoutes() { + public AnnouncementsRoutes(String tag) { + this.GET_LATEST_ANNOUNCEMENTS = new Route(GET, "/announcements/latest?tag=" + tag); + this.GET_LATEST_ANNOUNCEMENT_IDS = new Route(GET, "/announcements/latest/ids?tag=" + tag); } - public static HttpURLConnection getAnnouncementsConnectionFromRoute(Route route, String... params) throws IOException { - return Requester.getConnectionFromRoute(ANNOUNCEMENTS_PROVIDER, route, params); + public HttpURLConnection getAnnouncementsConnectionFromRoute(Route route, String... params) throws IOException { + return Requester.getConnectionFromRoute("https://api.revanced.app/v4", route, params); } -} \ No newline at end of file +} diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/announcements/AnnouncementsPatch.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/announcements/AnnouncementsPatch.java new file mode 100644 index 000000000..5012820f6 --- /dev/null +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/announcements/AnnouncementsPatch.java @@ -0,0 +1,20 @@ +package app.revanced.extension.youtube.patches.announcements; + +import android.app.Activity; +import android.os.Build; +import androidx.annotation.RequiresApi; +import app.revanced.extension.shared.announcements.BaseAnnouncementsPatch; + +@SuppressWarnings("unused") +public class AnnouncementsPatch extends BaseAnnouncementsPatch { + private static final AnnouncementsPatch INSTANCE = new AnnouncementsPatch(); + + private AnnouncementsPatch() { + super("youtube"); + } + + @RequiresApi(api = Build.VERSION_CODES.O) + public static void showAnnouncement(final Activity context) { + INSTANCE._showAnnouncement(context); + } +} diff --git a/patches/src/main/kotlin/app/revanced/patches/all/misc/announcements/AnnouncementsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/all/misc/announcements/AnnouncementsPatch.kt index 604f3440a..712286b1f 100644 --- a/patches/src/main/kotlin/app/revanced/patches/all/misc/announcements/AnnouncementsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/all/misc/announcements/AnnouncementsPatch.kt @@ -6,17 +6,15 @@ import app.revanced.patcher.patch.* import app.revanced.patches.all.misc.resources.addResources import app.revanced.patches.all.misc.resources.addResourcesPatch -private const val EXTENSION_CLASS_DESCRIPTOR = - "Lapp/revanced/extension/shared/announcements/AnnouncementsPatch;" - fun announcementsPatch( mainActivityOnCreateFingerprint: Fingerprint, extensionPatch: Patch<*>, + extensionClassDescriptor: String, block: BytecodePatchBuilder.() -> Unit = {}, executeBlock: BytecodePatchContext.() -> Unit = {}, ) = bytecodePatch( name = "Announcements", - description = "Adds an option to show announcements from ReVanced on app startup.", + description = "Shows announcements from ReVanced on app startup.", ) { block() @@ -30,7 +28,7 @@ fun announcementsPatch( mainActivityOnCreateFingerprint.method.addInstructions( 0, - "invoke-static/range { p0 .. p0 }, $EXTENSION_CLASS_DESCRIPTOR->showAnnouncement(Landroid/app/Activity;)V", + "invoke-static/range { p0 .. p0 }, $extensionClassDescriptor->showAnnouncement(Landroid/app/Activity;)V", ) executeBlock() diff --git a/patches/src/main/kotlin/app/revanced/patches/music/misc/announcements/AnnouncementsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/music/misc/announcements/AnnouncementsPatch.kt index 3bea44160..8ac342224 100644 --- a/patches/src/main/kotlin/app/revanced/patches/music/misc/announcements/AnnouncementsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/music/misc/announcements/AnnouncementsPatch.kt @@ -1,12 +1,13 @@ package app.revanced.patches.music.misc.announcements import app.revanced.patches.all.misc.announcements.announcementsPatch +import app.revanced.patches.music.misc.extension.sharedExtensionPatch import app.revanced.patches.music.shared.musicActivityOnCreateFingerprint -import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch val announcementsPatch = announcementsPatch( musicActivityOnCreateFingerprint, sharedExtensionPatch, + "Lapp/revanced/extension/music/announcements/AnnouncementsPatch;", { compatibleWith("com.google.android.apps.music") }, 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 5b25a006a..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 @@ -4,5 +4,6 @@ import app.revanced.patches.music.misc.extension.hooks.applicationInitHook import app.revanced.patches.shared.misc.extension.sharedExtensionPatch val sharedExtensionPatch = sharedExtensionPatch( + "music", applicationInitHook, ) diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/announcements/AnnouncementsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/announcements/AnnouncementsPatch.kt index 971adecff..23e378ea5 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/announcements/AnnouncementsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/announcements/AnnouncementsPatch.kt @@ -11,6 +11,7 @@ import app.revanced.patches.youtube.shared.mainActivityOnCreateFingerprint val announcementsPatch = announcementsPatch( mainActivityOnCreateFingerprint, sharedExtensionPatch, + "Lapp/revanced/extension/youtube/patches/announcements/AnnouncementsPatch;", { dependsOn(settingsPatch)