feat(YouTube Music/Settings): move SponsorBlock settings and Return YouTube Dislike settings to RVX Settings

This commit is contained in:
inotia00 2024-04-07 16:08:07 +09:00
parent 0bb9e1904a
commit a03ed95af6
52 changed files with 531 additions and 391 deletions

View File

@ -42,17 +42,17 @@ object MenuComponentPatch : BaseBytecodePatch(
}
}
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.ACCOUNT,
"revanced_hide_account_menu",
"false"
)
SettingsPatch.addMusicPreferenceWithIntent(
SettingsPatch.addPreferenceWithIntent(
CategoryType.ACCOUNT,
"revanced_hide_account_menu_filter_strings",
"revanced_hide_account_menu"
)
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.ACCOUNT,
"revanced_hide_account_menu_empty_component",
"false",

View File

@ -67,7 +67,7 @@ object HandlePatch : BaseBytecodePatch(
}
}
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.ACCOUNT,
"revanced_hide_handle",
"true"

View File

@ -47,7 +47,7 @@ object TermsContainerPatch : BaseBytecodePatch(
}
}
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.ACCOUNT,
"revanced_hide_terms_container",
"false"

View File

@ -153,47 +153,47 @@ object ActionBarComponentPatch : BaseBytecodePatch(
}
}
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.ACTION_BAR,
"revanced_hide_action_button_add_to_playlist",
"false"
)
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.ACTION_BAR,
"revanced_hide_action_button_comment",
"false"
)
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.ACTION_BAR,
"revanced_hide_action_button_download",
"false"
)
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.ACTION_BAR,
"revanced_hide_action_button_label",
"false"
)
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.ACTION_BAR,
"revanced_hide_action_button_like_dislike",
"false"
)
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.ACTION_BAR,
"revanced_hide_action_button_radio",
"false"
)
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.ACTION_BAR,
"revanced_hide_action_button_share",
"false"
)
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.ACTION_BAR,
"revanced_hook_action_button_download",
"false"
)
SettingsPatch.addMusicPreferenceWithIntent(
SettingsPatch.addPreferenceWithIntent(
CategoryType.ACTION_BAR,
"revanced_external_downloader_package_name",
"revanced_hook_action_button_download"

View File

@ -158,32 +158,32 @@ object GeneralAdsPatch : BaseBytecodePatch(
}
}
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.ADS,
"revanced_hide_fullscreen_ads",
"true"
)
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.ADS,
"revanced_hide_general_ads",
"true"
)
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.ADS,
"revanced_hide_music_ads",
"true"
)
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.ADS,
"revanced_hide_paid_promotion",
"true"
)
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.ADS,
"revanced_hide_premium_promotion",
"true"
)
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.ADS,
"revanced_hide_premium_renewal",
"true"

View File

@ -34,7 +34,7 @@ object CompactDialogPatch : BaseBytecodePatch(
)
}
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.FLYOUT,
"revanced_enable_compact_dialog",
"true"

View File

@ -75,147 +75,174 @@ object FlyoutPanelPatch : BaseBytecodePatch(
if (SettingsPatch.upward0636) {
LithoFilterPatch.addFilter(FILTER_CLASS_DESCRIPTOR)
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.FLYOUT,
"revanced_hide_flyout_panel_3_column_component",
"false"
)
}
SettingsPatch.addMusicPreferenceWithoutSummary(
SettingsPatch.addSwitchPreference(
CategoryType.FLYOUT,
"revanced_hide_flyout_panel_add_to_queue",
"false"
"false",
false
)
SettingsPatch.addMusicPreferenceWithoutSummary(
SettingsPatch.addSwitchPreference(
CategoryType.FLYOUT,
"revanced_hide_flyout_panel_captions",
"false"
"false",
false
)
SettingsPatch.addMusicPreferenceWithoutSummary(
SettingsPatch.addSwitchPreference(
CategoryType.FLYOUT,
"revanced_hide_flyout_panel_delete_playlist",
"false"
"false",
false
)
SettingsPatch.addMusicPreferenceWithoutSummary(
SettingsPatch.addSwitchPreference(
CategoryType.FLYOUT,
"revanced_hide_flyout_panel_dismiss_queue",
"false"
"false",
false
)
SettingsPatch.addMusicPreferenceWithoutSummary(
SettingsPatch.addSwitchPreference(
CategoryType.FLYOUT,
"revanced_hide_flyout_panel_download",
"false"
"false",
false
)
SettingsPatch.addMusicPreferenceWithoutSummary(
SettingsPatch.addSwitchPreference(
CategoryType.FLYOUT,
"revanced_hide_flyout_panel_edit_playlist",
"false"
"false",
false
)
SettingsPatch.addMusicPreferenceWithoutSummary(
SettingsPatch.addSwitchPreference(
CategoryType.FLYOUT,
"revanced_hide_flyout_panel_go_to_album",
"false"
"false",
false
)
SettingsPatch.addMusicPreferenceWithoutSummary(
SettingsPatch.addSwitchPreference(
CategoryType.FLYOUT,
"revanced_hide_flyout_panel_go_to_artist",
"false"
"false",
false
)
SettingsPatch.addMusicPreferenceWithoutSummary(
SettingsPatch.addSwitchPreference(
CategoryType.FLYOUT,
"revanced_hide_flyout_panel_go_to_episode",
"false"
"false",
false
)
SettingsPatch.addMusicPreferenceWithoutSummary(
SettingsPatch.addSwitchPreference(
CategoryType.FLYOUT,
"revanced_hide_flyout_panel_go_to_podcast",
"false"
"false",
false
)
SettingsPatch.addMusicPreferenceWithoutSummary(
SettingsPatch.addSwitchPreference(
CategoryType.FLYOUT,
"revanced_hide_flyout_panel_help",
"false"
"false",
false
)
SettingsPatch.addMusicPreferenceWithoutSummary(
SettingsPatch.addSwitchPreference(
CategoryType.FLYOUT,
"revanced_hide_flyout_panel_like_dislike",
"false"
"false",
false
)
SettingsPatch.addMusicPreferenceWithoutSummary(
SettingsPatch.addSwitchPreference(
CategoryType.FLYOUT,
"revanced_hide_flyout_panel_play_next",
"false"
"false",
false
)
SettingsPatch.addMusicPreferenceWithoutSummary(
SettingsPatch.addSwitchPreference(
CategoryType.FLYOUT,
"revanced_hide_flyout_panel_quality",
"false"
"false",
false
)
SettingsPatch.addMusicPreferenceWithoutSummary(
SettingsPatch.addSwitchPreference(
CategoryType.FLYOUT,
"revanced_hide_flyout_panel_remove_from_library",
"false"
"false",
false
)
SettingsPatch.addMusicPreferenceWithoutSummary(
SettingsPatch.addSwitchPreference(
CategoryType.FLYOUT,
"revanced_hide_flyout_panel_remove_from_playlist",
"false"
"false",
false
)
SettingsPatch.addMusicPreferenceWithoutSummary(
SettingsPatch.addSwitchPreference(
CategoryType.FLYOUT,
"revanced_hide_flyout_panel_report",
"false"
"false",
false
)
SettingsPatch.addMusicPreferenceWithoutSummary(
SettingsPatch.addSwitchPreference(
CategoryType.FLYOUT,
"revanced_hide_flyout_panel_save_episode_for_later",
"false"
"false",
false
)
SettingsPatch.addMusicPreferenceWithoutSummary(
SettingsPatch.addSwitchPreference(
CategoryType.FLYOUT,
"revanced_hide_flyout_panel_save_to_library",
"false"
"false",
false
)
SettingsPatch.addMusicPreferenceWithoutSummary(
SettingsPatch.addSwitchPreference(
CategoryType.FLYOUT,
"revanced_hide_flyout_panel_save_to_playlist",
"false"
"false",
false
)
SettingsPatch.addMusicPreferenceWithoutSummary(
SettingsPatch.addSwitchPreference(
CategoryType.FLYOUT,
"revanced_hide_flyout_panel_share",
"false"
"false",
false
)
SettingsPatch.addMusicPreferenceWithoutSummary(
SettingsPatch.addSwitchPreference(
CategoryType.FLYOUT,
"revanced_hide_flyout_panel_shuffle_play",
"false"
"false",
false
)
SettingsPatch.addMusicPreferenceWithoutSummary(
SettingsPatch.addSwitchPreference(
CategoryType.FLYOUT,
"revanced_hide_flyout_panel_sleep_timer",
"false"
"false",
false
)
SettingsPatch.addMusicPreferenceWithoutSummary(
SettingsPatch.addSwitchPreference(
CategoryType.FLYOUT,
"revanced_hide_flyout_panel_start_radio",
"false"
"false",
false
)
SettingsPatch.addMusicPreferenceWithoutSummary(
SettingsPatch.addSwitchPreference(
CategoryType.FLYOUT,
"revanced_hide_flyout_panel_stats_for_nerds",
"false"
"false",
false
)
SettingsPatch.addMusicPreferenceWithoutSummary(
SettingsPatch.addSwitchPreference(
CategoryType.FLYOUT,
"revanced_hide_flyout_panel_subscribe",
"false"
"false",
false
)
SettingsPatch.addMusicPreferenceWithoutSummary(
SettingsPatch.addSwitchPreference(
CategoryType.FLYOUT,
"revanced_hide_flyout_panel_view_song_credit",
"false"
"false",
false
)
}
}

View File

@ -22,12 +22,12 @@ object ReplaceDismissQueuePatch : BaseBytecodePatch(
override fun execute(context: BytecodeContext) {
FlyoutPanelMenuItemPatch.replaceComponents()
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.FLYOUT,
"revanced_replace_flyout_panel_dismiss_queue",
"false"
)
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.FLYOUT,
"revanced_replace_flyout_panel_dismiss_queue_continue_watch",
"true",

View File

@ -45,12 +45,12 @@ object ReplaceReportPatch : BaseBytecodePatch(
}
}
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.FLYOUT,
"revanced_replace_flyout_panel_report",
"true"
)
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.FLYOUT,
"revanced_replace_flyout_panel_report_only_player",
"true",

View File

@ -23,7 +23,7 @@ object AutoCaptionsPatch : BaseResourcePatch(
VideoIdPatch.hookBackgroundPlayVideoId("$GENERAL_CLASS_DESCRIPTOR->newVideoStarted(Ljava/lang/String;)V")
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.GENERAL,
"revanced_disable_auto_captions",
"false"

View File

@ -24,7 +24,7 @@ object ButtonShelfPatch : BaseResourcePatch(
override fun execute(context: ResourceContext) {
LithoFilterPatch.addFilter(FILTER_CLASS_DESCRIPTOR)
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.GENERAL,
"revanced_hide_button_shelf",
"false"

View File

@ -24,7 +24,7 @@ object CarouselShelfPatch : BaseResourcePatch(
override fun execute(context: ResourceContext) {
LithoFilterPatch.addFilter(FILTER_CLASS_DESCRIPTOR)
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.GENERAL,
"revanced_hide_carousel_shelf",
"false"

View File

@ -66,7 +66,7 @@ object CastButtonPatch : BaseBytecodePatch(
}
}
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.GENERAL,
"revanced_hide_cast_button",
"true"

View File

@ -37,7 +37,7 @@ object CategoryBarPatch : BaseBytecodePatch(
}
}
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.GENERAL,
"revanced_hide_category_bar",
"false"

View File

@ -24,7 +24,7 @@ object ChannelGuidelinesPatch : BaseResourcePatch(
override fun execute(context: ResourceContext) {
LithoFilterPatch.addFilter(FILTER_CLASS_DESCRIPTOR)
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.GENERAL,
"revanced_hide_channel_guidelines",
"true"

View File

@ -24,12 +24,12 @@ object CustomFilterPatch : BaseResourcePatch(
override fun execute(context: ResourceContext) {
LithoFilterPatch.addFilter(FILTER_CLASS_DESCRIPTOR)
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.GENERAL,
"revanced_custom_filter",
"false"
)
SettingsPatch.addMusicPreferenceWithIntent(
SettingsPatch.addPreferenceWithIntent(
CategoryType.GENERAL,
"revanced_custom_filter_strings",
"revanced_custom_filter"

View File

@ -19,7 +19,7 @@ object ViewerDiscretionDialogPatch : BaseResourcePatch(
) {
override fun execute(context: ResourceContext) {
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.GENERAL,
"revanced_remove_viewer_discretion_dialog",
"false"

View File

@ -24,7 +24,7 @@ object EmojiPickerPatch : BaseResourcePatch(
override fun execute(context: ResourceContext) {
LithoFilterPatch.addFilter(FILTER_CLASS_DESCRIPTOR)
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.GENERAL,
"revanced_hide_emoji_picker",
"false"

View File

@ -47,7 +47,7 @@ object FloatingButtonPatch : BaseBytecodePatch(
}
}
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.GENERAL,
"revanced_hide_new_playlist_button",
"false"

View File

@ -49,7 +49,7 @@ object HistoryButtonPatch : BaseBytecodePatch(
}
}
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.GENERAL,
"revanced_hide_history_button",
"false"

View File

@ -39,7 +39,7 @@ object LandScapeModePatch : BaseBytecodePatch(
}
}
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.GENERAL,
"revanced_enable_landscape_mode",
"true"

View File

@ -40,7 +40,7 @@ object OldStyleLibraryShelfPatch : BaseBytecodePatch(
}
}
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.GENERAL,
"revanced_enable_old_style_library_shelf",
"false"

View File

@ -24,7 +24,7 @@ object PlaylistCardPatch : BaseResourcePatch(
override fun execute(context: ResourceContext) {
LithoFilterPatch.addFilter(FILTER_CLASS_DESCRIPTOR)
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.GENERAL,
"revanced_hide_playlist_card",
"false"

View File

@ -72,7 +72,7 @@ object DislikeRedirectionPatch : BaseBytecodePatch(
}
}
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.GENERAL,
"revanced_disable_dislike_redirection",
"false"

View File

@ -24,7 +24,7 @@ object SampleShelfPatch : BaseResourcePatch(
override fun execute(context: ResourceContext) {
LithoFilterPatch.addFilter(FILTER_CLASS_DESCRIPTOR)
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.GENERAL,
"revanced_hide_samples_shelf",
"false"

View File

@ -46,7 +46,7 @@ object ChangeStartPagePatch : BaseBytecodePatch(
*/
contexts.copyXmlNode("music/startpage/host", "values/arrays.xml", "resources")
SettingsPatch.addMusicPreferenceWithIntent(
SettingsPatch.addPreferenceWithIntent(
CategoryType.GENERAL,
"revanced_change_start_page"
)

View File

@ -36,7 +36,7 @@ object TapToUpdateButtonPatch : BaseBytecodePatch(
}
}
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.GENERAL,
"revanced_hide_tap_to_update_button",
"false"

View File

@ -19,7 +19,7 @@ object ForceOpusCodecPatch : BaseResourcePatch(
) {
override fun execute(context: ResourceContext) {
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.MISC,
"revanced_enable_opus_codec",
"true"

View File

@ -16,12 +16,12 @@ object DebuggingPatch : BaseResourcePatch(
) {
override fun execute(context: ResourceContext) {
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.MISC,
"revanced_enable_debug_logging",
"false"
)
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.MISC,
"revanced_enable_debug_buffer_logging",
"false",

View File

@ -25,12 +25,12 @@ object SpoofAppVersionPatch : BaseResourcePatch(
*/
context.copyXmlNode("music/spoofappversion/host", "values/arrays.xml", "resources")
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.MISC,
"revanced_spoof_app_version",
"false"
)
SettingsPatch.addMusicPreferenceWithIntent(
SettingsPatch.addPreferenceWithIntent(
CategoryType.MISC,
"revanced_spoof_app_version_target",
"revanced_spoof_app_version"

View File

@ -18,7 +18,7 @@ object SanitizeUrlQueryPatch : BaseResourcePatch(
) {
override fun execute(context: ResourceContext) {
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.MISC,
"revanced_sanitize_sharing_links",
"true"

View File

@ -40,7 +40,7 @@ object BlackNavigationBarPatch : BaseBytecodePatch(
}
}
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.NAVIGATION,
"revanced_enable_black_navigation_bar",
"true"

View File

@ -92,37 +92,37 @@ object NavigationBarComponentPatch : BaseBytecodePatch(
}
}
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.NAVIGATION,
"revanced_hide_explore_button",
"false"
)
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.NAVIGATION,
"revanced_hide_home_button",
"false"
)
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.NAVIGATION,
"revanced_hide_library_button",
"false"
)
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.NAVIGATION,
"revanced_hide_navigation_bar",
"false"
)
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.NAVIGATION,
"revanced_hide_navigation_label",
"false"
)
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.NAVIGATION,
"revanced_hide_samples_button",
"false"
)
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.NAVIGATION,
"revanced_hide_upgrade_button",
"true"

View File

@ -97,7 +97,7 @@ object ColorMatchPlayerPatch : BaseBytecodePatch(
}
}
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.PLAYER,
"revanced_enable_color_match_player",
"true"

View File

@ -36,7 +36,7 @@ object MinimizedPlayerPatch : BaseBytecodePatch(
}
}
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.PLAYER,
"revanced_enable_force_minimized_player",
"true"

View File

@ -121,12 +121,12 @@ object MiniPlayerButtonPatch : BaseBytecodePatch(
mppWatchWhileLayoutMutableMethod.setViewArray()
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.PLAYER,
"revanced_enable_mini_player_next_button",
"true"
)
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.PLAYER,
"revanced_enable_mini_player_previous_button",
"false"

View File

@ -26,7 +26,7 @@ object OldPlayerBackgroundPatch : BaseBytecodePatch(
"Please use YT Music 6.33.52 or earlier."
)
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.PLAYER,
"revanced_enable_old_player_background",
"false"

View File

@ -26,7 +26,7 @@ object OldPlayerLayoutPatch : BaseBytecodePatch(
"Please use YT Music 6.29.58 or earlier."
)
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.PLAYER,
"revanced_enable_old_player_layout",
"false"

View File

@ -35,7 +35,7 @@ object RememberRepeatPatch : BaseBytecodePatch(
}
}
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.PLAYER,
"revanced_remember_repeat_state",
"true"

View File

@ -99,7 +99,7 @@ object ReplaceCastButtonPatch : BaseBytecodePatch(
contexts.copyResources("music/cast", resourceGroup)
}
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.PLAYER,
"revanced_replace_player_cast_button",
"false"

View File

@ -39,7 +39,7 @@ object ShareButtonPatch : BaseBytecodePatch(
}
}
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.PLAYER,
"revanced_hide_fullscreen_share_button",
"false"

View File

@ -160,7 +160,7 @@ object RememberShufflePatch : BaseBytecodePatch(
}
}
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.PLAYER,
"revanced_remember_shuffle_state",
"true"

View File

@ -199,7 +199,7 @@ object SwipeToDismissMiniPlayerPatch : BaseBytecodePatch(
}
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.PLAYER,
"revanced_enable_swipe_to_dismiss_mini_player",
"true"

View File

@ -73,12 +73,12 @@ object ZenModePatch : BaseBytecodePatch(
}
}
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.PLAYER,
"revanced_enable_zen_mode",
"false"
)
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.PLAYER,
"revanced_enable_zen_mode_podcast",
"false",

View File

@ -2,12 +2,14 @@ package app.revanced.patches.music.utils.returnyoutubedislike
import app.revanced.patcher.data.ResourceContext
import app.revanced.patches.music.utils.integrations.Constants.COMPATIBLE_PACKAGE
import app.revanced.patches.music.utils.settings.ResourceUtils.RETURN_YOUTUBE_DISLIKE_SETTINGS_KEY
import app.revanced.patches.music.utils.settings.ResourceUtils.addReVancedMusicPreference
import app.revanced.patches.music.utils.settings.CategoryType
import app.revanced.patches.music.utils.settings.ResourceUtils.PREFERENCE_CATEGORY_TAG_NAME
import app.revanced.patches.music.utils.settings.ResourceUtils.SETTINGS_HEADER_PATH
import app.revanced.patches.music.utils.settings.ResourceUtils.addPreferenceCategoryUnderPreferenceScreen
import app.revanced.patches.music.utils.settings.SettingsPatch
import app.revanced.util.adoptChild
import app.revanced.util.patch.BaseResourcePatch
import org.w3c.dom.Element
import org.w3c.dom.Node
@Suppress("DEPRECATION", "unused")
object ReturnYouTubeDislikePatch : BaseResourcePatch(
@ -19,45 +21,56 @@ object ReturnYouTubeDislikePatch : BaseResourcePatch(
),
compatiblePackages = COMPATIBLE_PACKAGE
) {
private const val ABOUT_CATEGORY_KEY = "revanced_ryd_about"
override fun execute(context: ResourceContext) {
context.addReVancedMusicPreference(RETURN_YOUTUBE_DISLIKE_SETTINGS_KEY)
context.addSwitchPreference("revanced_ryd_enabled", "true")
context.addSwitchPreference(
SettingsPatch.addSwitchPreference(
CategoryType.RETURN_YOUTUBE_DISLIKE,
"revanced_ryd_enabled",
"true"
)
SettingsPatch.addSwitchPreference(
CategoryType.RETURN_YOUTUBE_DISLIKE,
"revanced_ryd_dislike_percentage",
"false",
"revanced_ryd_enabled"
)
context.addSwitchPreference("revanced_ryd_compact_layout", "false", "revanced_ryd_enabled")
context.addSwitchPreference(
SettingsPatch.addSwitchPreference(
CategoryType.RETURN_YOUTUBE_DISLIKE,
"revanced_ryd_compact_layout",
"false",
"revanced_ryd_enabled"
)
SettingsPatch.addSwitchPreference(
CategoryType.RETURN_YOUTUBE_DISLIKE,
"revanced_ryd_toast_on_connection_error",
"false",
"revanced_ryd_enabled"
)
context.addPreferenceCategory("revanced_ryd_about")
context.addAboutPreference("revanced_ryd_attribution")
}
context.addPreferenceCategoryUnderPreferenceScreen(
CategoryType.RETURN_YOUTUBE_DISLIKE.value,
ABOUT_CATEGORY_KEY
)
private const val YOUTUBE_SETTINGS_PATH = "res/xml/settings_headers.xml"
private const val SWITCH_PREFERENCE_TAG_NAME =
"com.google.android.apps.youtube.music.ui.preference.SwitchCompatPreference"
private const val PREFERENCE_CATEGORY_TAG_NAME =
"com.google.android.apps.youtube.music.ui.preference.PreferenceCategoryCompat"
context.addAboutPreference(
ABOUT_CATEGORY_KEY,
"revanced_ryd_attribution",
"https://returnyoutubedislike.com"
)
private fun Node.adoptChild(tagName: String, block: Element.() -> Unit) {
val child = ownerDocument.createElement(tagName)
child.block()
appendChild(child)
}
private fun ResourceContext.addAboutPreference(
key: String
preferenceCategoryKey: String,
key: String,
data: String
) {
this.xmlEditor[YOUTUBE_SETTINGS_PATH].use { editor ->
this.xmlEditor[SETTINGS_HEADER_PATH].use { editor ->
val tags = editor.file.getElementsByTagName(PREFERENCE_CATEGORY_TAG_NAME)
List(tags.length) { tags.item(it) as Element }
.filter { it.getAttribute("android:key").contains("revanced_ryd_about") }
.filter { it.getAttribute("android:key").contains(preferenceCategoryKey) }
.forEach {
it.adoptChild("Preference") {
setAttribute("android:title", "@string/$key" + "_title")
@ -65,61 +78,11 @@ object ReturnYouTubeDislikePatch : BaseResourcePatch(
setAttribute("android:key", key)
this.adoptChild("intent") {
setAttribute("android:action", "android.intent.action.VIEW")
setAttribute("android:data", "https://returnyoutubedislike.com")
setAttribute("android:data", data)
}
}
}
}
}
private fun ResourceContext.addPreferenceCategory(
category: String
) {
this.xmlEditor[YOUTUBE_SETTINGS_PATH].use { editor ->
val tags = editor.file.getElementsByTagName("PreferenceScreen")
List(tags.length) { tags.item(it) as Element }
.filter {
it.getAttribute("android:key").contains(RETURN_YOUTUBE_DISLIKE_SETTINGS_KEY)
}
.forEach {
it.adoptChild(PREFERENCE_CATEGORY_TAG_NAME) {
setAttribute("android:title", "@string/$category")
setAttribute("android:key", category)
}
}
}
}
private fun ResourceContext.addSwitchPreference(
key: String,
defaultValue: String
) {
addSwitchPreference(key, defaultValue, "")
}
private fun ResourceContext.addSwitchPreference(
key: String,
defaultValue: String,
dependencyKey: String
) {
this.xmlEditor[YOUTUBE_SETTINGS_PATH].use { editor ->
val tags = editor.file.getElementsByTagName("PreferenceScreen")
List(tags.length) { tags.item(it) as Element }
.filter {
it.getAttribute("android:key").contains(RETURN_YOUTUBE_DISLIKE_SETTINGS_KEY)
}
.forEach {
it.adoptChild(SWITCH_PREFERENCE_TAG_NAME) {
setAttribute("android:title", "@string/$key" + "_title")
setAttribute("android:summary", "@string/$key" + "_summary")
setAttribute("android:key", key)
if (dependencyKey.isNotEmpty()) {
setAttribute("android:dependency", dependencyKey)
}
setAttribute("android:defaultValue", defaultValue)
}
}
}
}
}

View File

@ -9,5 +9,7 @@ enum class CategoryType(val value: String, var added: Boolean) {
MISC("misc", false),
NAVIGATION("navigation", false),
PLAYER("player", false),
RETURN_YOUTUBE_DISLIKE("ryd", false),
SPONSOR_BLOCK("sb", false),
VIDEO("video", false)
}

View File

@ -7,39 +7,28 @@ import app.revanced.util.doRecursively
import app.revanced.util.insertNode
import org.w3c.dom.Element
@Suppress("DEPRECATION", "MemberVisibilityCanBePrivate")
@Suppress("DEPRECATION")
object ResourceUtils {
const val YOUTUBE_MUSIC_SETTINGS_PATH = "res/xml/settings_headers.xml"
private const val RVX_SETTINGS_KEY = "revanced_extended_settings"
const val YOUTUBE_MUSIC_SETTINGS_KEY = "revanced_extended_settings"
const val SETTINGS_HEADER_PATH = "res/xml/settings_headers.xml"
const val RETURN_YOUTUBE_DISLIKE_SETTINGS_KEY = "revanced_ryd_settings"
const val YOUTUBE_MUSIC_PREFERENCE_SCREEN_TAG_NAME =
const val PREFERENCE_SCREEN_TAG_NAME =
"PreferenceScreen"
const val YOUTUBE_MUSIC_PREFERENCE_TAG_NAME =
const val PREFERENCE_CATEGORY_TAG_NAME =
"com.google.android.apps.youtube.music.ui.preference.PreferenceCategoryCompat"
const val SWITCH_PREFERENCE_TAG_NAME =
"com.google.android.apps.youtube.music.ui.preference.SwitchCompatPreference"
const val YOUTUBE_MUSIC_PREFERENCE_TARGET_CLASS =
const val ACTIVITY_HOOK_TARGET_CLASS =
"com.google.android.gms.common.api.GoogleApiActivity"
var musicPackageName = "com.google.android.apps.youtube.music"
fun ResourceContext.updatePackageName(newPackage: String) {
musicPackageName = newPackage
replacePackageName()
}
fun setMusicPreferenceCategory(newCategory: String) {
CategoryType.entries.forEach { preference ->
if (newCategory == preference.value)
preference.added = true
}
}
fun included(category: String): Boolean {
private fun isIncludedCategory(category: String): Boolean {
CategoryType.entries.forEach { preference ->
if (category == preference.value)
return preference.added
@ -47,29 +36,65 @@ object ResourceUtils {
return false
}
fun ResourceContext.addMusicPreferenceCategory(
private fun ResourceContext.replacePackageName() {
this[SETTINGS_HEADER_PATH].writeText(
this[SETTINGS_HEADER_PATH].readText()
.replace("\"com.google.android.apps.youtube.music\"", "\"" + musicPackageName + "\"")
)
}
private fun setPreferenceCategory(newCategory: String) {
CategoryType.entries.forEach { preference ->
if (newCategory == preference.value)
preference.added = true
}
}
fun ResourceContext.updatePackageName(newPackage: String) {
musicPackageName = newPackage
replacePackageName()
}
fun ResourceContext.addPreferenceCategory(
category: String
) {
this.xmlEditor[YOUTUBE_MUSIC_SETTINGS_PATH].use { editor ->
val tags = editor.file.getElementsByTagName("PreferenceScreen")
this.xmlEditor[SETTINGS_HEADER_PATH].use { editor ->
val tags = editor.file.getElementsByTagName(PREFERENCE_SCREEN_TAG_NAME)
List(tags.length) { tags.item(it) as Element }
.filter { it.getAttribute("android:key").contains(YOUTUBE_MUSIC_SETTINGS_KEY) }
.filter { it.getAttribute("android:key").contains(RVX_SETTINGS_KEY) }
.forEach {
if (!included(category)) {
it.adoptChild(YOUTUBE_MUSIC_PREFERENCE_SCREEN_TAG_NAME) {
if (!isIncludedCategory(category)) {
it.adoptChild(PREFERENCE_SCREEN_TAG_NAME) {
setAttribute("android:title", "@string/revanced_category_$category")
setAttribute("android:key", "revanced_settings_$category")
}
setMusicPreferenceCategory(category)
setPreferenceCategory(category)
}
}
}
}
fun ResourceContext.sortMusicPreferenceCategory(
fun ResourceContext.addPreferenceCategoryUnderPreferenceScreen(
preferenceScreenKey: String,
category: String
) {
this.xmlEditor[YOUTUBE_MUSIC_SETTINGS_PATH].use { editor ->
this.xmlEditor[SETTINGS_HEADER_PATH].use { editor ->
val tags = editor.file.getElementsByTagName(PREFERENCE_SCREEN_TAG_NAME)
List(tags.length) { tags.item(it) as Element }
.filter { it.getAttribute("android:key").contains(preferenceScreenKey) }
.forEach {
it.adoptChild(PREFERENCE_CATEGORY_TAG_NAME) {
setAttribute("android:title", "@string/$category")
setAttribute("android:key", category)
}
}
}
}
fun ResourceContext.sortPreferenceCategory(
category: String
) {
this.xmlEditor[SETTINGS_HEADER_PATH].use { editor ->
editor.file.doRecursively loop@{
if (it !is Element) return@loop
@ -83,21 +108,14 @@ object ResourceUtils {
replacePackageName()
}
fun ResourceContext.replacePackageName() {
this[YOUTUBE_MUSIC_SETTINGS_PATH].writeText(
this[YOUTUBE_MUSIC_SETTINGS_PATH].readText()
.replace("\"com.google.android.apps.youtube.music\"", "\"" + musicPackageName + "\"")
)
}
fun ResourceContext.addMicroGPreference(
category: String,
key: String,
packageName: String,
targetClassName: String
) {
this.xmlEditor[YOUTUBE_MUSIC_SETTINGS_PATH].use { editor ->
val tags = editor.file.getElementsByTagName(YOUTUBE_MUSIC_PREFERENCE_SCREEN_TAG_NAME)
this.xmlEditor[SETTINGS_HEADER_PATH].use { editor ->
val tags = editor.file.getElementsByTagName(PREFERENCE_SCREEN_TAG_NAME)
List(tags.length) { tags.item(it) as Element }
.filter { it.getAttribute("android:key").contains("revanced_settings_$category") }
.forEach {
@ -117,20 +135,23 @@ object ResourceUtils {
}
}
fun ResourceContext.addMusicPreference(
fun ResourceContext.addSwitchPreference(
category: String,
key: String,
defaultValue: String,
dependencyKey: String
dependencyKey: String,
setSummary: Boolean
) {
this.xmlEditor[YOUTUBE_MUSIC_SETTINGS_PATH].use { editor ->
val tags = editor.file.getElementsByTagName(YOUTUBE_MUSIC_PREFERENCE_SCREEN_TAG_NAME)
this.xmlEditor[SETTINGS_HEADER_PATH].use { editor ->
val tags = editor.file.getElementsByTagName(PREFERENCE_SCREEN_TAG_NAME)
List(tags.length) { tags.item(it) as Element }
.filter { it.getAttribute("android:key").contains("revanced_settings_$category") }
.forEach {
it.adoptChild(YOUTUBE_MUSIC_PREFERENCE_TAG_NAME) {
it.adoptChild(SWITCH_PREFERENCE_TAG_NAME) {
setAttribute("android:title", "@string/$key" + "_title")
setAttribute("android:summary", "@string/$key" + "_summary")
if (setSummary) {
setAttribute("android:summary", "@string/$key" + "_summary")
}
setAttribute("android:key", key)
setAttribute("android:defaultValue", defaultValue)
if (dependencyKey != "") {
@ -141,13 +162,13 @@ object ResourceUtils {
}
}
fun ResourceContext.addMusicPreferenceWithIntent(
fun ResourceContext.addPreferenceWithIntent(
category: String,
key: String,
dependencyKey: String
) {
this.xmlEditor[YOUTUBE_MUSIC_SETTINGS_PATH].use { editor ->
val tags = editor.file.getElementsByTagName(YOUTUBE_MUSIC_PREFERENCE_SCREEN_TAG_NAME)
this.xmlEditor[SETTINGS_HEADER_PATH].use { editor ->
val tags = editor.file.getElementsByTagName(PREFERENCE_SCREEN_TAG_NAME)
List(tags.length) { tags.item(it) as Element }
.filter { it.getAttribute("android:key").contains("revanced_settings_$category") }
.forEach {
@ -163,7 +184,7 @@ object ResourceUtils {
setAttribute("android:data", key)
setAttribute(
"android:targetClass",
YOUTUBE_MUSIC_PREFERENCE_TARGET_CLASS
ACTIVITY_HOOK_TARGET_CLASS
)
}
}
@ -171,29 +192,8 @@ object ResourceUtils {
}
}
fun ResourceContext.addMusicPreferenceWithoutSummary(
category: String,
key: String,
defaultValue: String
) {
this.xmlEditor[YOUTUBE_MUSIC_SETTINGS_PATH].use { editor ->
val tags = editor.file.getElementsByTagName(YOUTUBE_MUSIC_PREFERENCE_SCREEN_TAG_NAME)
List(tags.length) { tags.item(it) as Element }
.filter { it.getAttribute("android:key").contains("revanced_settings_$category") }
.forEach {
it.adoptChild(YOUTUBE_MUSIC_PREFERENCE_TAG_NAME) {
setAttribute("android:title", "@string/$key" + "_title")
setAttribute("android:key", key)
setAttribute("android:defaultValue", defaultValue)
}
}
}
}
fun ResourceContext.addReVancedMusicPreference(
key: String
) {
this.xmlEditor[YOUTUBE_MUSIC_SETTINGS_PATH].use { editor ->
fun ResourceContext.addRVXSettingsPreference() {
this.xmlEditor[SETTINGS_HEADER_PATH].use { editor ->
with(editor.file) {
doRecursively loop@{
if (it !is Element) return@loop
@ -202,54 +202,12 @@ object ResourceUtils {
"app:allowDividerBelow"
).textContent == "false"
) {
it.insertNode("PreferenceScreen", it) {
it.insertNode(PREFERENCE_SCREEN_TAG_NAME, it) {
setAttribute(
"android:title",
"@string/" + key + "_title"
"@string/revanced_extended_settings_title"
)
setAttribute("android:key", key)
setAttribute("app:allowDividerAbove", "false")
}
it.getAttributeNode("app:allowDividerBelow").textContent = "true"
return@loop
}
}
}
doRecursively loop@{
if (it !is Element) return@loop
it.getAttributeNode("app:allowDividerBelow")?.let { attribute ->
if (attribute.textContent == "true") {
attribute.textContent = "false"
}
}
}
}
}
}
fun ResourceContext.hookPreference(
key: String,
fragment: String
) {
this.xmlEditor[YOUTUBE_MUSIC_SETTINGS_PATH].use { editor ->
with(editor.file) {
doRecursively loop@{
if (it !is Element) return@loop
it.getAttributeNode("android:key")?.let { attribute ->
if (attribute.textContent == "settings_header_about_youtube_music" && it.getAttributeNode(
"app:allowDividerBelow"
).textContent == "false"
) {
it.insertNode("Preference", it) {
setAttribute("android:persistent", "false")
setAttribute(
"android:title",
"@string/" + key + "_title"
)
setAttribute("android:key", key)
setAttribute("android:fragment", fragment)
setAttribute("android:key", "revanced_extended_settings")
setAttribute("app:allowDividerAbove", "false")
}
it.getAttributeNode("app:allowDividerBelow").textContent = "true"

View File

@ -3,13 +3,11 @@ package app.revanced.patches.music.utils.settings
import app.revanced.patcher.data.ResourceContext
import app.revanced.patches.music.utils.fix.accessibility.AccessibilityNodeInfoPatch
import app.revanced.patches.music.utils.integrations.Constants.COMPATIBLE_PACKAGE
import app.revanced.patches.music.utils.settings.ResourceUtils.YOUTUBE_MUSIC_SETTINGS_KEY
import app.revanced.patches.music.utils.settings.ResourceUtils.addMusicPreference
import app.revanced.patches.music.utils.settings.ResourceUtils.addMusicPreferenceCategory
import app.revanced.patches.music.utils.settings.ResourceUtils.addMusicPreferenceWithIntent
import app.revanced.patches.music.utils.settings.ResourceUtils.addMusicPreferenceWithoutSummary
import app.revanced.patches.music.utils.settings.ResourceUtils.addReVancedMusicPreference
import app.revanced.patches.music.utils.settings.ResourceUtils.sortMusicPreferenceCategory
import app.revanced.patches.music.utils.settings.ResourceUtils.addPreferenceCategory
import app.revanced.patches.music.utils.settings.ResourceUtils.addPreferenceWithIntent
import app.revanced.patches.music.utils.settings.ResourceUtils.addRVXSettingsPreference
import app.revanced.patches.music.utils.settings.ResourceUtils.addSwitchPreference
import app.revanced.patches.music.utils.settings.ResourceUtils.sortPreferenceCategory
import app.revanced.util.ResourceGroup
import app.revanced.util.copyResources
import app.revanced.util.copyXmlNode
@ -19,7 +17,7 @@ import java.io.Closeable
import java.util.concurrent.Executors
import java.util.concurrent.TimeUnit
@Suppress("DEPRECATION", "SpellCheckingInspection", "unused")
@Suppress("DEPRECATION", "unused")
object SettingsPatch : BaseResourcePatch(
name = "Settings",
description = "Adds ReVanced Extended settings to YouTube Music.",
@ -129,53 +127,54 @@ object SettingsPatch : BaseResourcePatch(
}
}
context.addReVancedMusicPreference(YOUTUBE_MUSIC_SETTINGS_KEY)
context.addRVXSettingsPreference()
}
internal fun addMusicPreference(
internal fun addSwitchPreference(
category: CategoryType,
key: String,
defaultValue: String
) {
addMusicPreference(category, key, defaultValue, "")
}
) = addSwitchPreference(category, key, defaultValue, "")
internal fun addMusicPreference(
internal fun addSwitchPreference(
category: CategoryType,
key: String,
defaultValue: String,
setSummary: Boolean
) = addSwitchPreference(category, key, defaultValue, "", setSummary)
internal fun addSwitchPreference(
category: CategoryType,
key: String,
defaultValue: String,
dependencyKey: String
) {
val categoryValue = category.value
contexts.addMusicPreferenceCategory(categoryValue)
contexts.addMusicPreference(categoryValue, key, defaultValue, dependencyKey)
}
) = addSwitchPreference(category, key, defaultValue, dependencyKey, true)
internal fun addMusicPreferenceWithoutSummary(
internal fun addSwitchPreference(
category: CategoryType,
key: String,
defaultValue: String
defaultValue: String,
dependencyKey: String,
setSummary: Boolean
) {
val categoryValue = category.value
contexts.addMusicPreferenceCategory(categoryValue)
contexts.addMusicPreferenceWithoutSummary(categoryValue, key, defaultValue)
contexts.addPreferenceCategory(categoryValue)
contexts.addSwitchPreference(categoryValue, key, defaultValue, dependencyKey, setSummary)
}
internal fun addMusicPreferenceWithIntent(
internal fun addPreferenceWithIntent(
category: CategoryType,
key: String
) {
addMusicPreferenceWithIntent(category, key, "")
}
) = addPreferenceWithIntent(category, key, "")
internal fun addMusicPreferenceWithIntent(
internal fun addPreferenceWithIntent(
category: CategoryType,
key: String,
dependencyKey: String
) {
val categoryValue = category.value
contexts.addMusicPreferenceCategory(categoryValue)
contexts.addMusicPreferenceWithIntent(categoryValue, key, dependencyKey)
contexts.addPreferenceCategory(categoryValue)
contexts.addPreferenceWithIntent(categoryValue, key, dependencyKey)
}
override fun close() {
@ -184,14 +183,13 @@ object SettingsPatch : BaseResourcePatch(
*/
contexts.copyXmlNode("music/settings/host", "values/arrays.xml", "resources")
addMusicPreferenceWithIntent(
addPreferenceWithIntent(
CategoryType.MISC,
"revanced_extended_settings_import_export",
""
"revanced_extended_settings_import_export"
)
CategoryType.entries.sorted().forEach {
contexts.sortMusicPreferenceCategory(it.value)
contexts.sortPreferenceCategory(it.value)
}
}
}

View File

@ -2,14 +2,20 @@ package app.revanced.patches.music.utils.sponsorblock
import app.revanced.patcher.data.ResourceContext
import app.revanced.patches.music.utils.integrations.Constants.COMPATIBLE_PACKAGE
import app.revanced.patches.music.utils.settings.CategoryType
import app.revanced.patches.music.utils.settings.ResourceUtils
import app.revanced.patches.music.utils.settings.ResourceUtils.hookPreference
import app.revanced.patches.music.utils.settings.ResourceUtils.ACTIVITY_HOOK_TARGET_CLASS
import app.revanced.patches.music.utils.settings.ResourceUtils.PREFERENCE_CATEGORY_TAG_NAME
import app.revanced.patches.music.utils.settings.ResourceUtils.PREFERENCE_SCREEN_TAG_NAME
import app.revanced.patches.music.utils.settings.ResourceUtils.SETTINGS_HEADER_PATH
import app.revanced.patches.music.utils.settings.ResourceUtils.SWITCH_PREFERENCE_TAG_NAME
import app.revanced.patches.music.utils.settings.ResourceUtils.addPreferenceCategory
import app.revanced.patches.music.utils.settings.SettingsPatch
import app.revanced.util.ResourceGroup
import app.revanced.util.copyResources
import app.revanced.util.adoptChild
import app.revanced.util.patch.BaseResourcePatch
import org.w3c.dom.Element
@Suppress("DEPRECATION", "unused")
@Suppress("DEPRECATION", "SameParameterValue", "unused")
object SponsorBlockPatch : BaseResourcePatch(
name = "SponsorBlock",
description = "Adds options to enable and configure SponsorBlock, which can skip undesired video segments such as non-music sections.",
@ -19,46 +25,232 @@ object SponsorBlockPatch : BaseResourcePatch(
),
compatiblePackages = COMPATIBLE_PACKAGE
) {
override fun execute(context: ResourceContext) {
private const val SEGMENTS_CATEGORY_KEY = "sb_diff_segments"
private const val ABOUT_CATEGORY_KEY = "sb_about"
/**
* Copy preference
*/
arrayOf(
ResourceGroup(
"xml",
"sponsorblock_prefs.xml"
private var SPONSOR_BLOCK_CATEGORY = CategoryType.SPONSOR_BLOCK.value
lateinit var context: ResourceContext
override fun execute(context: ResourceContext) {
this.context = context
context.addPreferenceCategory(SPONSOR_BLOCK_CATEGORY)
addSwitchPreference(
SPONSOR_BLOCK_CATEGORY,
"sb_enabled",
"true"
)
addSwitchPreference(
SPONSOR_BLOCK_CATEGORY,
"sb_toast_on_skip",
"true",
"sb_enabled"
)
addSwitchPreference(
SPONSOR_BLOCK_CATEGORY,
"sb_toast_on_connection_error",
"false",
"sb_enabled"
)
addPreferenceWithIntent(
SPONSOR_BLOCK_CATEGORY,
"sb_api_url",
"sb_enabled"
)
addPreferenceCategoryUnderPreferenceScreen(
CategoryType.SPONSOR_BLOCK.value,
SEGMENTS_CATEGORY_KEY
)
addSegmentsPreference(
SEGMENTS_CATEGORY_KEY,
"sb_segments_sponsor",
"sb_enabled"
)
addSegmentsPreference(
SEGMENTS_CATEGORY_KEY,
"sb_segments_selfpromo",
"sb_enabled"
)
addSegmentsPreference(
SEGMENTS_CATEGORY_KEY,
"sb_segments_interaction",
"sb_enabled"
)
addSegmentsPreference(
SEGMENTS_CATEGORY_KEY,
"sb_segments_intro",
"sb_enabled"
)
addSegmentsPreference(
SEGMENTS_CATEGORY_KEY,
"sb_segments_outro",
"sb_enabled"
)
addSegmentsPreference(
SEGMENTS_CATEGORY_KEY,
"sb_segments_preview",
"sb_enabled"
)
addSegmentsPreference(
SEGMENTS_CATEGORY_KEY,
"sb_segments_filler",
"sb_enabled"
)
addSegmentsPreference(
SEGMENTS_CATEGORY_KEY,
"sb_segments_nomusic",
"sb_enabled"
)
addPreferenceCategoryUnderPreferenceScreen(
CategoryType.SPONSOR_BLOCK.value,
ABOUT_CATEGORY_KEY
)
addAboutPreference(
ABOUT_CATEGORY_KEY,
"sb_about_api",
"https://sponsor.ajay.app"
)
context[SETTINGS_HEADER_PATH].apply {
writeText(
readText()
.replace(
"\"sb_segments_nomusic",
"\"sb_segments_music_offtopic"
)
)
).forEach { resourceGroup ->
context.copyResources("music/sponsorblock", resourceGroup)
}
/**
* Hook SponsorBlock preference
*/
context.hookPreference(
"revanced_sponsorblock_settings",
"com.google.android.apps.youtube.music.settings.fragment.AdvancedPrefsFragmentCompat"
)
}
val publicFile = context["res/values/public.xml"]
val preferenceFile = context["res/xml/sponsorblock_prefs.xml"]
private fun addSwitchPreference(
category: String,
key: String,
defaultValue: String
) = addSwitchPreference(category, key, defaultValue, "")
publicFile.writeText(
publicFile.readText()
.replace(
"\"advanced_prefs_compat\"",
"\"sponsorblock_prefs\""
)
)
private fun addSwitchPreference(
category: String,
key: String,
defaultValue: String,
dependencyKey: String
) {
context.xmlEditor[SETTINGS_HEADER_PATH].use { editor ->
val tags = editor.file.getElementsByTagName(PREFERENCE_SCREEN_TAG_NAME)
List(tags.length) { tags.item(it) as Element }
.filter { it.getAttribute("android:key").contains("revanced_settings_$category") }
.forEach {
it.adoptChild(SWITCH_PREFERENCE_TAG_NAME) {
setAttribute("android:title", "@string/revanced_$key")
setAttribute("android:summary", "@string/revanced_$key" + "_sum")
setAttribute("android:key", key)
setAttribute("android:defaultValue", defaultValue)
if (dependencyKey != "") {
setAttribute("android:dependency", dependencyKey)
}
}
}
}
}
preferenceFile.writeText(
preferenceFile.readText()
.replace(
"\"com.google.android.apps.youtube.music\"",
"\"" + ResourceUtils.musicPackageName + "\""
)
)
private fun addPreferenceWithIntent(
category: String,
key: String,
dependencyKey: String
) {
context.xmlEditor[SETTINGS_HEADER_PATH].use { editor ->
val tags = editor.file.getElementsByTagName(PREFERENCE_SCREEN_TAG_NAME)
List(tags.length) { tags.item(it) as Element }
.filter { it.getAttribute("android:key").contains("revanced_settings_$category") }
.forEach {
it.adoptChild("Preference") {
setAttribute("android:title", "@string/revanced_$key")
setAttribute("android:summary", "@string/revanced_$key" + "_sum")
setAttribute("android:key", key)
setAttribute("android:dependency", dependencyKey)
this.adoptChild("intent") {
setAttribute("android:targetPackage", ResourceUtils.musicPackageName)
setAttribute("android:data", key)
setAttribute(
"android:targetClass",
ACTIVITY_HOOK_TARGET_CLASS
)
}
}
}
}
}
private fun addPreferenceCategoryUnderPreferenceScreen(
preferenceScreenKey: String,
category: String
) {
context.xmlEditor[SETTINGS_HEADER_PATH].use { editor ->
val tags = editor.file.getElementsByTagName(PREFERENCE_SCREEN_TAG_NAME)
List(tags.length) { tags.item(it) as Element }
.filter { it.getAttribute("android:key").contains(preferenceScreenKey) }
.forEach {
it.adoptChild(PREFERENCE_CATEGORY_TAG_NAME) {
setAttribute("android:title", "@string/revanced_$category")
setAttribute("android:key", category)
}
}
}
}
private fun addSegmentsPreference(
preferenceCategoryKey: String,
key: String,
dependencyKey: String
) {
context.xmlEditor[SETTINGS_HEADER_PATH].use { editor ->
val tags = editor.file.getElementsByTagName(PREFERENCE_CATEGORY_TAG_NAME)
List(tags.length) { tags.item(it) as Element }
.filter { it.getAttribute("android:key").contains(preferenceCategoryKey) }
.forEach {
it.adoptChild("Preference") {
setAttribute("android:title", "@string/revanced_$key")
setAttribute("android:summary", "@string/revanced_$key" + "_sum")
setAttribute("android:key", key)
setAttribute("android:dependency", dependencyKey)
this.adoptChild("intent") {
setAttribute("android:targetPackage", ResourceUtils.musicPackageName)
setAttribute("android:data", key)
setAttribute(
"android:targetClass",
ACTIVITY_HOOK_TARGET_CLASS
)
}
}
}
}
}
private fun addAboutPreference(
preferenceCategoryKey: String,
key: String,
data: String
) {
context.xmlEditor[SETTINGS_HEADER_PATH].use { editor ->
val tags = editor.file.getElementsByTagName(PREFERENCE_CATEGORY_TAG_NAME)
List(tags.length) { tags.item(it) as Element }
.filter { it.getAttribute("android:key").contains(preferenceCategoryKey) }
.forEach {
it.adoptChild("Preference") {
setAttribute("android:title", "@string/revanced_$key")
setAttribute("android:summary", "@string/revanced_$key" + "_sum")
setAttribute("android:key", key)
this.adoptChild("intent") {
setAttribute("android:action", "android.intent.action.VIEW")
setAttribute("android:data", data)
}
}
}
}
}
}

View File

@ -18,7 +18,7 @@ object CustomPlaybackSpeedPatch : BaseResourcePatch(
) {
override fun execute(context: ResourceContext) {
SettingsPatch.addMusicPreferenceWithIntent(
SettingsPatch.addPreferenceWithIntent(
CategoryType.VIDEO,
"revanced_custom_playback_speeds"
)

View File

@ -58,7 +58,7 @@ object VideoQualityPatch : BaseBytecodePatch(
VideoIdPatch.hookVideoId("$INTEGRATIONS_VIDEO_QUALITY_CLASS_DESCRIPTOR->newVideoStarted(Ljava/lang/String;)V")
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.VIDEO,
"revanced_enable_save_video_quality",
"true"

View File

@ -50,7 +50,7 @@ object PlaybackSpeedPatch : BaseBytecodePatch(
}
}
SettingsPatch.addMusicPreference(
SettingsPatch.addSwitchPreference(
CategoryType.VIDEO,
"revanced_enable_save_playback_speed",
"true"