feat(YouTube Music): Add Announcements patch
This commit is contained in:
parent
6a44e75203
commit
470feb6967
11 changed files with 649 additions and 255 deletions
|
|
@ -1,9 +1,9 @@
|
|||
package app.revanced.extension.youtube.patches.announcements;
|
||||
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.youtube.patches.announcements.requests.AnnouncementsRoutes.GET_LATEST_ANNOUNCEMENTS;
|
||||
import static app.revanced.extension.youtube.patches.announcements.requests.AnnouncementsRoutes.GET_LATEST_ANNOUNCEMENT_IDS;
|
||||
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;
|
||||
|
|
@ -23,8 +23,8 @@ import java.time.LocalDateTime;
|
|||
import app.revanced.extension.shared.Logger;
|
||||
import app.revanced.extension.shared.Utils;
|
||||
import app.revanced.extension.shared.requests.Requester;
|
||||
import app.revanced.extension.youtube.patches.announcements.requests.AnnouncementsRoutes;
|
||||
import app.revanced.extension.youtube.settings.Settings;
|
||||
import app.revanced.extension.shared.announcements.requests.AnnouncementsRoutes;
|
||||
import app.revanced.extension.shared.settings.BaseSettings;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public final class AnnouncementsPatch {
|
||||
|
|
@ -41,10 +41,10 @@ public final class AnnouncementsPatch {
|
|||
try {
|
||||
// Do not show the announcement if the request failed.
|
||||
if (connection.getResponseCode() != 200) {
|
||||
if (Settings.ANNOUNCEMENT_LAST_ID.isSetToDefault())
|
||||
if (BaseSettings.ANNOUNCEMENT_LAST_ID.isSetToDefault())
|
||||
return true;
|
||||
|
||||
Settings.ANNOUNCEMENT_LAST_ID.resetToDefault();
|
||||
BaseSettings.ANNOUNCEMENT_LAST_ID.resetToDefault();
|
||||
Utils.showToastLong(str("revanced_announcements_connection_failed"));
|
||||
|
||||
return true;
|
||||
|
|
@ -57,7 +57,7 @@ public final class AnnouncementsPatch {
|
|||
var jsonString = Requester.parseStringAndDisconnect(connection);
|
||||
|
||||
// Parse the ID. Fall-back to raw string if it fails.
|
||||
int id = Settings.ANNOUNCEMENT_LAST_ID.defaultValue;
|
||||
int id = BaseSettings.ANNOUNCEMENT_LAST_ID.defaultValue;
|
||||
try {
|
||||
final var announcementIds = new JSONArray(jsonString);
|
||||
id = announcementIds.getJSONObject(0).getInt("id");
|
||||
|
|
@ -67,12 +67,12 @@ public final class AnnouncementsPatch {
|
|||
}
|
||||
|
||||
// Do not show the announcement, if the last announcement id is the same as the current one.
|
||||
return Settings.ANNOUNCEMENT_LAST_ID.get() == id;
|
||||
return BaseSettings.ANNOUNCEMENT_LAST_ID.get() == id;
|
||||
}
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.O)
|
||||
public static void showAnnouncement(final Activity context) {
|
||||
if (!Settings.ANNOUNCEMENTS.get()) return;
|
||||
if (!BaseSettings.ANNOUNCEMENTS.get()) return;
|
||||
|
||||
// Check if there is internet connection
|
||||
if (!Utils.isNetworkConnected()) return;
|
||||
|
|
@ -89,7 +89,7 @@ public final class AnnouncementsPatch {
|
|||
var jsonString = Requester.parseStringAndDisconnect(connection);
|
||||
|
||||
// Parse the announcement. Fall-back to raw string if it fails.
|
||||
int id = Settings.ANNOUNCEMENT_LAST_ID.defaultValue;
|
||||
int id = BaseSettings.ANNOUNCEMENT_LAST_ID.defaultValue;
|
||||
String title;
|
||||
String message;
|
||||
LocalDateTime archivedAt = LocalDateTime.MAX;
|
||||
|
|
@ -115,7 +115,7 @@ public final class AnnouncementsPatch {
|
|||
|
||||
// If the announcement is archived, do not show it.
|
||||
if (archivedAt.isBefore(LocalDateTime.now())) {
|
||||
Settings.ANNOUNCEMENT_LAST_ID.save(id);
|
||||
BaseSettings.ANNOUNCEMENT_LAST_ID.save(id);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -131,7 +131,7 @@ public final class AnnouncementsPatch {
|
|||
.setMessage(finalMessage)
|
||||
.setIcon(finalLevel.icon)
|
||||
.setPositiveButton(android.R.string.ok, (dialog, which) -> {
|
||||
Settings.ANNOUNCEMENT_LAST_ID.save(finalId);
|
||||
BaseSettings.ANNOUNCEMENT_LAST_ID.save(finalId);
|
||||
dialog.dismiss();
|
||||
}).setNegativeButton(str("revanced_announcements_dialog_dismiss"), (dialog, which) -> {
|
||||
dialog.dismiss();
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package app.revanced.extension.youtube.patches.announcements.requests;
|
||||
package app.revanced.extension.shared.announcements.requests;
|
||||
|
||||
import app.revanced.extension.shared.requests.Requester;
|
||||
import app.revanced.extension.shared.requests.Route;
|
||||
|
|
@ -9,9 +9,9 @@ import java.net.HttpURLConnection;
|
|||
import static app.revanced.extension.shared.requests.Route.Method.GET;
|
||||
|
||||
public class AnnouncementsRoutes {
|
||||
private static final String ANNOUNCEMENTS_PROVIDER = "https://api.revanced.app/v4";
|
||||
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";
|
||||
|
||||
private AnnouncementsRoutes() {
|
||||
}
|
||||
|
|
@ -16,4 +16,7 @@ public class BaseSettings {
|
|||
public static final BooleanSetting DEBUG_TOAST_ON_ERROR = new BooleanSetting("revanced_debug_toast_on_error", TRUE, "revanced_debug_toast_on_error_user_dialog_message");
|
||||
|
||||
public static final IntegerSetting CHECK_ENVIRONMENT_WARNINGS_ISSUED = new IntegerSetting("revanced_check_environment_warnings_issued", 0, true, false);
|
||||
|
||||
public static final BooleanSetting ANNOUNCEMENTS = new BooleanSetting("revanced_announcements", TRUE);
|
||||
public static final IntegerSetting ANNOUNCEMENT_LAST_ID = new IntegerSetting("revanced_announcement_last_id", -1, false, false);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -271,12 +271,10 @@ public class Settings extends BaseSettings {
|
|||
public static final BooleanSetting SPOOF_DEVICE_DIMENSIONS = new BooleanSetting("revanced_spoof_device_dimensions", FALSE, true,
|
||||
"revanced_spoof_device_dimensions_user_dialog_message");
|
||||
public static final BooleanSetting BYPASS_URL_REDIRECTS = new BooleanSetting("revanced_bypass_url_redirects", TRUE);
|
||||
public static final BooleanSetting ANNOUNCEMENTS = new BooleanSetting("revanced_announcements", TRUE);
|
||||
public static final BooleanSetting SPOOF_VIDEO_STREAMS = new BooleanSetting("revanced_spoof_video_streams", TRUE, true,"revanced_spoof_video_streams_user_dialog_message");
|
||||
public static final BooleanSetting SPOOF_VIDEO_STREAMS_IOS_FORCE_AVC = new BooleanSetting("revanced_spoof_video_streams_ios_force_avc", FALSE, true,
|
||||
"revanced_spoof_video_streams_ios_force_avc_user_dialog_message", new SpoofVideoStreamsPatch.ForceiOSAVCAvailability());
|
||||
public static final EnumSetting<ClientType> SPOOF_VIDEO_STREAMS_CLIENT_TYPE = new EnumSetting<>("revanced_spoof_video_streams_client", ClientType.ANDROID_VR, true, parent(SPOOF_VIDEO_STREAMS));
|
||||
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);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue