Compare commits

...

2 Commits

Author SHA1 Message Date
semantic-release-bot
0d1ab25cb5 chore(release): 2.195.0-dev.5 [skip ci]
# [2.195.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v2.195.0-dev.4...v2.195.0-dev.5) (2023-10-20)

### Features

* **YouTube:** Add `Announcements` patch ([#3166](https://github.com/ReVanced/revanced-patches/issues/3166)) ([8718517](87185171da))
2023-10-20 01:17:24 +00:00
oSumAtrIX
87185171da feat(YouTube): Add Announcements patch (#3166) 2023-10-20 03:13:52 +02:00
4 changed files with 70 additions and 2 deletions

View File

@@ -1,3 +1,10 @@
# [2.195.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v2.195.0-dev.4...v2.195.0-dev.5) (2023-10-20)
### Features
* **YouTube:** Add `Announcements` patch ([#3166](https://github.com/ReVanced/revanced-patches/issues/3166)) ([f977983](https://github.com/ReVanced/revanced-patches/commit/f97798391ffc3477f781d43817664d31cfcd209a))
# [2.195.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v2.195.0-dev.3...v2.195.0-dev.4) (2023-10-19)

View File

@@ -1,4 +1,4 @@
org.gradle.parallel = true
org.gradle.caching = true
kotlin.code.style = official
version = 2.195.0-dev.4
version = 2.195.0-dev.5

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,61 @@
package app.revanced.patches.youtube.misc.announcements
import app.revanced.extensions.exception
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.extensions.InstructionExtensions.getInstructions
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patches.shared.fingerprints.WatchWhileActivityFingerprint
import app.revanced.patches.shared.settings.preference.impl.StringResource
import app.revanced.patches.shared.settings.preference.impl.SwitchPreference
import app.revanced.patches.youtube.misc.settings.SettingsPatch
import com.android.tools.smali.dexlib2.Opcode
@Patch(
name = "Announcements",
description = "Shows announcements on startup.",
compatiblePackages = [CompatiblePackage("com.google.android.youtube")],
dependencies = [SettingsPatch::class]
)
@Suppress("unused")
object AnnouncementsPatch : BytecodePatch(
setOf(WatchWhileActivityFingerprint)
) {
private const val INTEGRATIONS_CLASS_DESCRIPTOR =
"Lapp/revanced/integrations/patches/announcements/AnnouncementsPatch;"
override fun execute(context: BytecodeContext) {
val onCreateMethod = WatchWhileActivityFingerprint.result?.let {
it.mutableClass.methods.find { method -> method.name == "onCreate" }
} ?: throw WatchWhileActivityFingerprint.exception
val superCallIndex = onCreateMethod.getInstructions().indexOfFirst { it.opcode == Opcode.INVOKE_SUPER_RANGE }
onCreateMethod.addInstructions(
superCallIndex + 1,
"invoke-static { v1 }, $INTEGRATIONS_CLASS_DESCRIPTOR->showAnnouncement(Landroid/app/Activity;)V"
)
SettingsPatch.PreferenceScreen.MISC.addPreferences(
SwitchPreference(
"revanced_announcements",
StringResource(
"revanced_announcements_title",
"Show announcements"
),
StringResource(
"revanced_announcements_summary_on",
"Announcements are shown on startup."
), StringResource(
"revanced_announcements_summary_off",
"Announcements are not shown on startup."
), StringResource(
"revanced_announcements_enabled_summary",
"Show announcements on startup."
),
)
)
}
}