Compare commits

..

8 Commits

Author SHA1 Message Date
semantic-release-bot
a96572001b chore(release): 2.201.2-dev.1 [skip ci]
## [2.201.2-dev.1](https://github.com/ReVanced/revanced-patches/compare/v2.201.1...v2.201.2-dev.1) (2023-11-29)

### Bug Fixes

* **YouTube - Restore old seekbar thumbnails:** Move setting into 'Seekbar' submenu ([#3344](https://github.com/ReVanced/revanced-patches/issues/3344)) ([a6267fd](a6267fd00f))
2023-11-29 12:35:50 +00:00
LisoUseInAIKyrios
a6267fd00f fix(YouTube - Restore old seekbar thumbnails): Move setting into 'Seekbar' submenu (#3344) 2023-11-29 14:33:56 +02:00
oSumAtrIX
35ac0913c9 build: Add manifest headers 2023-11-28 00:04:39 +01:00
oSumAtrIX
240696d573 build: Remove unnecessary Maven repository 2023-11-27 22:42:22 +01:00
semantic-release-bot
b16d64dd58 chore(release): 2.201.1 [skip ci]
## [2.201.1](https://github.com/ReVanced/revanced-patches/compare/v2.201.0...v2.201.1) (2023-11-27)

### Bug Fixes

* **Spotify - Hide premium navbar:** Support latest version ([15702c9](15702c92b3))
* **YouTube - Hide layout components:** Clarify custom filter usage ([45e55b4](45e55b48e5))
2023-11-27 19:09:29 +00:00
oSumAtrIX
d271ee40ad chore: Merge branch dev to main (#3325) 2023-11-27 20:07:20 +01:00
semantic-release-bot
8f49b7ecf5 chore(release): 2.201.1-dev.2 [skip ci]
## [2.201.1-dev.2](https://github.com/ReVanced/revanced-patches/compare/v2.201.1-dev.1...v2.201.1-dev.2) (2023-11-23)

### Bug Fixes

* **Spotify - Hide premium navbar:** Support latest version ([15702c9](15702c92b3))
2023-11-23 18:37:50 +00:00
oSumAtrIX
15702c92b3 fix(Spotify - Hide premium navbar): Support latest version 2023-11-23 19:35:51 +01:00
9 changed files with 94 additions and 62 deletions

View File

@@ -1,3 +1,25 @@
## [2.201.2-dev.1](https://github.com/ReVanced/revanced-patches/compare/v2.201.1...v2.201.2-dev.1) (2023-11-29)
### Bug Fixes
* **YouTube - Restore old seekbar thumbnails:** Move setting into 'Seekbar' submenu ([#3344](https://github.com/ReVanced/revanced-patches/issues/3344)) ([880091a](https://github.com/ReVanced/revanced-patches/commit/880091a96d1a628520732367c96c4c11fb93b72d))
## [2.201.1](https://github.com/ReVanced/revanced-patches/compare/v2.201.0...v2.201.1) (2023-11-27)
### Bug Fixes
* **Spotify - Hide premium navbar:** Support latest version ([b87005d](https://github.com/ReVanced/revanced-patches/commit/b87005de0c40293f85d3997f43b353a87a925156))
* **YouTube - Hide layout components:** Clarify custom filter usage ([cc16db5](https://github.com/ReVanced/revanced-patches/commit/cc16db56d1c9925852265fcebb459d9620cd1b92))
## [2.201.1-dev.2](https://github.com/ReVanced/revanced-patches/compare/v2.201.1-dev.1...v2.201.1-dev.2) (2023-11-23)
### Bug Fixes
* **Spotify - Hide premium navbar:** Support latest version ([b87005d](https://github.com/ReVanced/revanced-patches/commit/b87005de0c40293f85d3997f43b353a87a925156))
## [2.201.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v2.201.0...v2.201.1-dev.1) (2023-11-23)

View File

@@ -12,13 +12,6 @@ repositories {
mavenLocal()
google()
maven { url = uri("https://jitpack.io") }
// Required for FlexVer-Java
maven {
url = uri("https://repo.sleeping.town")
content {
includeGroup("com.unascribed")
}
}
}
dependencies {
@@ -37,6 +30,22 @@ kotlin {
jvmToolchain(11)
}
tasks.withType(Jar::class) {
exclude("app/revanced/meta")
manifest {
attributes["Name"] = "ReVanced Patches"
attributes["Description"] = "Patches for ReVanced."
attributes["Version"] = version
attributes["Timestamp"] = System.currentTimeMillis().toString()
attributes["Source"] = "git@github.com:revanced/revanced-patches.git"
attributes["Author"] = "ReVanced"
attributes["Contact"] = "contact@revanced.app"
attributes["Origin"] = "https://revanced.app"
attributes["License"] = "GNU General Public License v3.0"
}
}
tasks {
register<DefaultTask>("generateBundle") {
description = "Generate dex files from build and bundle them in the jar file"

View File

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

View File

@@ -1,51 +1,32 @@
package app.revanced.patches.spotify.navbar
import app.revanced.extensions.exception
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.removeInstruction
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
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.mapping.misc.ResourceMappingPatch
import app.revanced.patches.spotify.navbar.fingerprints.AddPremiumNavbarTabFingerprint
import app.revanced.patches.spotify.navbar.fingerprints.AddPremiumNavbarTabParentFingerprint
import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.instruction.WideLiteralInstruction
import app.revanced.patches.spotify.navbar.fingerprints.AddNavBarItemFingerprint
@Patch(
name = "Hide premium navbar",
description = "Removes the premium tab from the navbar.",
dependencies = [ResourceMappingPatch::class],
dependencies = [PremiumNavbarTabResourcePatch::class],
compatiblePackages = [CompatiblePackage("com.spotify.music")]
)
@Suppress("unused")
object PremiumNavbarTabPatch : BytecodePatch(setOf(AddPremiumNavbarTabParentFingerprint)) {
override fun execute(context: BytecodeContext) {
val parentResult = AddPremiumNavbarTabParentFingerprint.result!!
AddPremiumNavbarTabFingerprint.resolve(context, parentResult.classDef)
val result = AddPremiumNavbarTabFingerprint.result!!
val method = result.mutableMethod
val methodInstructions = method.implementation!!.instructions
val lastInstructionIdx = methodInstructions.size - 1
val premiumTabId =
ResourceMappingPatch.resourceMappings.single { it.type == "id" && it.name == "premium_tab" }.id
var removeAmount = 2
// 2nd const remove method
for ((i, instruction) in methodInstructions.asReversed().withIndex()) {
if (instruction.opcode.ordinal != Opcode.CONST.ordinal) continue
if ((instruction as WideLiteralInstruction).wideLiteral != premiumTabId) continue
val findThreshold = 10
val constIndex = lastInstructionIdx - i
val invokeInstruction = methodInstructions.subList(constIndex, constIndex + findThreshold).first {
it.opcode.ordinal == Opcode.INVOKE_VIRTUAL_RANGE.ordinal
}
method.removeInstruction(methodInstructions.indexOf(invokeInstruction))
if (--removeAmount == 0) break
}
}
}
object PremiumNavbarTabPatch : BytecodePatch(
setOf(AddNavBarItemFingerprint)
) {
// If the navigation bar item is the premium tab, do not add it.
override fun execute(context: BytecodeContext) = AddNavBarItemFingerprint.result?.mutableMethod?.addInstructions(
0,
"""
const v1, ${PremiumNavbarTabResourcePatch.premiumTabId}
if-ne p5, v1, :continue
return-void
:continue
nop
"""
) ?: throw AddNavBarItemFingerprint.exception
}

View File

@@ -0,0 +1,22 @@
package app.revanced.patches.spotify.navbar
import app.revanced.patcher.data.ResourceContext
import app.revanced.patcher.patch.ResourcePatch
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patches.shared.mapping.misc.ResourceMappingPatch
@Patch(dependencies = [ResourceMappingPatch::class])
object PremiumNavbarTabResourcePatch : ResourcePatch() {
internal var showBottomNavigationItemsTextId = -1L
internal var premiumTabId = -1L
override fun execute(context: ResourceContext) {
premiumTabId = ResourceMappingPatch.resourceMappings.single {
it.type == "id" && it.name == "premium_tab"
}.id
showBottomNavigationItemsTextId = ResourceMappingPatch.resourceMappings.single {
it.type == "bool" && it.name == "show_bottom_navigation_items_text"
}.id
}
}

View File

@@ -0,0 +1,12 @@
package app.revanced.patches.spotify.navbar.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.patches.spotify.navbar.PremiumNavbarTabResourcePatch
import app.revanced.util.patch.LiteralValueFingerprint
import com.android.tools.smali.dexlib2.AccessFlags
object AddNavBarItemFingerprint : LiteralValueFingerprint(
returnType = "V",
accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL,
literalSupplier = { PremiumNavbarTabResourcePatch.showBottomNavigationItemsTextId },
)

View File

@@ -1,7 +0,0 @@
package app.revanced.patches.spotify.navbar.fingerprints
import app.revanced.patcher.fingerprint.MethodFingerprint
object AddPremiumNavbarTabFingerprint : MethodFingerprint(
parameters = listOf("L", "L", "L", "L", "L", "L")
)

View File

@@ -1,7 +0,0 @@
package app.revanced.patches.spotify.navbar.fingerprints
import app.revanced.patcher.fingerprint.MethodFingerprint
object AddPremiumNavbarTabParentFingerprint : MethodFingerprint(
strings = listOf("com.samsung.android.samsungaccount.action.REQUEST_AUTHCODE")
)

View File

@@ -16,7 +16,7 @@ import app.revanced.patches.youtube.misc.settings.SettingsPatch
@Patch(
name = "Restore old seekbar thumbnails",
description = "Restores the old seekbar thumbnails that appear above the seekbar instead of fullscreen thumbnails.",
dependencies = [IntegrationsPatch::class, SettingsPatch::class],
dependencies = [IntegrationsPatch::class, SeekbarPreferencesPatch::class],
compatiblePackages = [
CompatiblePackage(
"com.google.android.youtube", [
@@ -37,7 +37,7 @@ object RestoreOldSeekbarThumbnailsPatch : BytecodePatch(
"Lapp/revanced/integrations/patches/RestoreOldSeekbarThumbnailsPatch;"
override fun execute(context: BytecodeContext) {
SettingsPatch.PreferenceScreen.LAYOUT.addPreferences(
SeekbarPreferencesPatch.addPreferences(
SwitchPreference(
"revanced_restore_old_seekbar_thumbnails",
StringResource(