mirror of
https://github.com/ReVanced/revanced-patches.git
synced 2026-01-23 02:31:03 +00:00
Compare commits
18 Commits
v2.189.0-d
...
v2.190.1-d
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6c8d545c6e | ||
|
|
6b3bde3bda | ||
|
|
a6e032d447 | ||
|
|
728d49ddb5 | ||
|
|
4dc9a7f6e1 | ||
|
|
1f9683849f | ||
|
|
4f7506ba21 | ||
|
|
c0163c122c | ||
|
|
b0875a168d | ||
|
|
bb3a32a407 | ||
|
|
f27af6fdfa | ||
|
|
a478db3cca | ||
|
|
dc6fa70d6f | ||
|
|
3d93a9d851 | ||
|
|
426c4c2600 | ||
|
|
8bcbd8443d | ||
|
|
1d01155b47 | ||
|
|
bada0ea50f |
69
CHANGELOG.md
69
CHANGELOG.md
@@ -1,3 +1,72 @@
|
|||||||
|
## [2.190.1-dev.4](https://github.com/ReVanced/revanced-patches/compare/v2.190.1-dev.3...v2.190.1-dev.4) (2023-09-07)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **YouTube - Custom filter:** Use new lines between components instead of commas ([#2952](https://github.com/ReVanced/revanced-patches/issues/2952)) ([ecb2e32](https://github.com/ReVanced/revanced-patches/commit/ecb2e32b1e296590d150bdd3f8bea2665b19a84d))
|
||||||
|
|
||||||
|
## [2.190.1-dev.3](https://github.com/ReVanced/revanced-patches/compare/v2.190.1-dev.2...v2.190.1-dev.3) (2023-09-07)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **Infinity for Reddit - Spoof client:** Constrain patch to last working versions ([#2944](https://github.com/ReVanced/revanced-patches/issues/2944)) ([ee975de](https://github.com/ReVanced/revanced-patches/commit/ee975dea846c77af0efe608e647075f4055af320))
|
||||||
|
|
||||||
|
## [2.190.1-dev.2](https://github.com/ReVanced/revanced-patches/compare/v2.190.1-dev.1...v2.190.1-dev.2) (2023-09-07)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **YouTube - Hide layout components:** Always hide redundant 'player audio track' button ([#2951](https://github.com/ReVanced/revanced-patches/issues/2951)) ([ca632bd](https://github.com/ReVanced/revanced-patches/commit/ca632bd2cc74f0ce5ccb948e902445de3ab893cf))
|
||||||
|
|
||||||
|
## [2.190.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v2.190.0...v2.190.1-dev.1) (2023-09-03)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **Twitch - Audio ads:** Support missing version `16.1.0` ([#2928](https://github.com/ReVanced/revanced-patches/issues/2928)) ([688d8fa](https://github.com/ReVanced/revanced-patches/commit/688d8fa7e86862e03d8336af5f6cb207c4b72593))
|
||||||
|
|
||||||
|
# [2.190.0](https://github.com/ReVanced/revanced-patches/compare/v2.189.0...v2.190.0) (2023-09-03)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **Infinity for Reddit - Spoof client:** Support latest version ([8a5311b](https://github.com/ReVanced/revanced-patches/commit/8a5311b1e645ca2aab1e416d647cf52bf0be6e7f))
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* **Photomath:** Support latest version ([5a2cad0](https://github.com/ReVanced/revanced-patches/commit/5a2cad077f03880ee1417c5cfd448bbdea4c07e2))
|
||||||
|
* **Twitch:** Support version `16.1.0` ([#2923](https://github.com/ReVanced/revanced-patches/issues/2923)) ([d9834a9](https://github.com/ReVanced/revanced-patches/commit/d9834a9abb43390af4cb33f5dd5a0e2d3b7060e2))
|
||||||
|
|
||||||
|
# [2.190.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v2.190.0-dev.2...v2.190.0-dev.3) (2023-09-02)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* **Twitch:** Support version `16.1.0` ([#2923](https://github.com/ReVanced/revanced-patches/issues/2923)) ([d9834a9](https://github.com/ReVanced/revanced-patches/commit/d9834a9abb43390af4cb33f5dd5a0e2d3b7060e2))
|
||||||
|
|
||||||
|
# [2.190.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v2.190.0-dev.1...v2.190.0-dev.2) (2023-08-28)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **Infinity for Reddit - Spoof client:** Support latest version ([8a5311b](https://github.com/ReVanced/revanced-patches/commit/8a5311b1e645ca2aab1e416d647cf52bf0be6e7f))
|
||||||
|
|
||||||
|
# [2.190.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v2.189.0...v2.190.0-dev.1) (2023-08-28)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* **Photomath:** Support latest version ([5a2cad0](https://github.com/ReVanced/revanced-patches/commit/5a2cad077f03880ee1417c5cfd448bbdea4c07e2))
|
||||||
|
|
||||||
|
# [2.189.0](https://github.com/ReVanced/revanced-patches/compare/v2.188.1...v2.189.0) (2023-08-27)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* Restore previous release ([f7352fe](https://github.com/ReVanced/revanced-patches/commit/f7352feb6e9604162b52072d74310b9e3067bc69))
|
||||||
|
|
||||||
# [2.189.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v2.188.1...v2.189.0-dev.1) (2023-08-27)
|
# [2.189.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v2.188.1...v2.189.0-dev.1) (2023-08-27)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
org.gradle.parallel = true
|
org.gradle.parallel = true
|
||||||
org.gradle.caching = true
|
org.gradle.caching = true
|
||||||
kotlin.code.style = official
|
kotlin.code.style = official
|
||||||
version = 2.189.0-dev.1
|
version = 2.190.1-dev.4
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,9 @@
|
|||||||
|
package app.revanced.patches.photomath.detection.deviceid.fingerprints
|
||||||
|
|
||||||
|
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
|
||||||
|
|
||||||
|
object GetDeviceIdFingerprint : MethodFingerprint(
|
||||||
|
returnType = "Ljava/lang/String;",
|
||||||
|
strings = listOf("androidId", "android_id"),
|
||||||
|
parameters = listOf()
|
||||||
|
)
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
package app.revanced.patches.photomath.detection.deviceid.patch
|
||||||
|
|
||||||
|
import app.revanced.extensions.exception
|
||||||
|
import app.revanced.patcher.annotation.Compatibility
|
||||||
|
import app.revanced.patcher.annotation.Description
|
||||||
|
import app.revanced.patcher.annotation.Name
|
||||||
|
import app.revanced.patcher.annotation.Package
|
||||||
|
import app.revanced.patcher.data.BytecodeContext
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstructions
|
||||||
|
import app.revanced.patcher.patch.BytecodePatch
|
||||||
|
import app.revanced.patcher.patch.annotations.DependsOn
|
||||||
|
import app.revanced.patcher.patch.annotations.Patch
|
||||||
|
import app.revanced.patches.photomath.detection.deviceid.fingerprints.GetDeviceIdFingerprint
|
||||||
|
import app.revanced.patches.photomath.detection.signature.patch.SignatureDetectionPatch
|
||||||
|
import kotlin.random.Random
|
||||||
|
|
||||||
|
@Patch
|
||||||
|
@DependsOn([SignatureDetectionPatch::class])
|
||||||
|
@Name("Spoof device ID")
|
||||||
|
@Description("Spoofs device ID to mitigate manual bans by developers.")
|
||||||
|
@Compatibility([Package("com.microblink.photomath")])
|
||||||
|
class SpoofDeviceIdPatch : BytecodePatch(
|
||||||
|
listOf(GetDeviceIdFingerprint)
|
||||||
|
) {
|
||||||
|
override fun execute(context: BytecodeContext) = GetDeviceIdFingerprint.result?.mutableMethod?.replaceInstructions(
|
||||||
|
0,
|
||||||
|
"""
|
||||||
|
const-string v0, "${Random.nextLong().toString(16)}"
|
||||||
|
return-object v0
|
||||||
|
"""
|
||||||
|
) ?: throw GetDeviceIdFingerprint.exception
|
||||||
|
}
|
||||||
@@ -1,19 +1,11 @@
|
|||||||
package app.revanced.patches.photomath.detection.signature.fingerprints
|
package app.revanced.patches.photomath.detection.signature.fingerprints
|
||||||
|
|
||||||
import app.revanced.patcher.extensions.or
|
|
||||||
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
|
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
|
||||||
import com.android.tools.smali.dexlib2.AccessFlags
|
|
||||||
import com.android.tools.smali.dexlib2.Opcode
|
import com.android.tools.smali.dexlib2.Opcode
|
||||||
|
|
||||||
object CheckSignatureFingerprint : MethodFingerprint(
|
object CheckSignatureFingerprint : MethodFingerprint(
|
||||||
returnType = "V",
|
|
||||||
accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL,
|
|
||||||
customFingerprint = { methodDef, _ ->
|
|
||||||
(methodDef.definingClass == "Lcom/microblink/photomath/main/activity/LauncherActivity;" ||
|
|
||||||
methodDef.definingClass == "Lcom/microblink/photomath/PhotoMath;") &&
|
|
||||||
methodDef.name == "onCreate"
|
|
||||||
},
|
|
||||||
strings = listOf(
|
strings = listOf(
|
||||||
|
"packageInfo.signatures",
|
||||||
"currentSignature"
|
"currentSignature"
|
||||||
),
|
),
|
||||||
opcodes = listOf(
|
opcodes = listOf(
|
||||||
|
|||||||
@@ -23,5 +23,4 @@ class SignatureDetectionPatch : BytecodePatch(
|
|||||||
mutableMethod.replaceInstruction(signatureCheckInstruction.location.index, "const/4 v$checkRegister, 0x1")
|
mutableMethod.replaceInstruction(signatureCheckInstruction.location.index, "const/4 v$checkRegister, 0x1")
|
||||||
} ?: throw CheckSignatureFingerprint.exception
|
} ?: throw CheckSignatureFingerprint.exception
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package app.revanced.patches.photomath.misc.bookpoint.fingerprints
|
||||||
|
|
||||||
|
import app.revanced.patcher.extensions.or
|
||||||
|
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
|
||||||
|
import com.android.tools.smali.dexlib2.AccessFlags
|
||||||
|
|
||||||
|
object IsBookpointEnabledFingerprint : MethodFingerprint(
|
||||||
|
returnType = "Z",
|
||||||
|
accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL,
|
||||||
|
parameters = listOf(),
|
||||||
|
strings = listOf(
|
||||||
|
"NoGeoData",
|
||||||
|
"NoCountryInGeo",
|
||||||
|
"RemoteConfig",
|
||||||
|
"GeoRCMismatch"
|
||||||
|
)
|
||||||
|
)
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
package app.revanced.patches.photomath.misc.bookpoint.patch
|
||||||
|
|
||||||
|
import app.revanced.extensions.exception
|
||||||
|
import app.revanced.patcher.annotation.Description
|
||||||
|
import app.revanced.patcher.data.BytecodeContext
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstructions
|
||||||
|
import app.revanced.patcher.patch.BytecodePatch
|
||||||
|
import app.revanced.patches.photomath.misc.bookpoint.fingerprints.IsBookpointEnabledFingerprint
|
||||||
|
|
||||||
|
@Description("Enables textbook access")
|
||||||
|
class EnableBookpointPatch : BytecodePatch(listOf(IsBookpointEnabledFingerprint)) {
|
||||||
|
override fun execute(context: BytecodeContext) =
|
||||||
|
IsBookpointEnabledFingerprint.result?.mutableMethod?.replaceInstructions(
|
||||||
|
0,
|
||||||
|
"""
|
||||||
|
const/4 v0, 0x1
|
||||||
|
return v0
|
||||||
|
"""
|
||||||
|
) ?: throw IsBookpointEnabledFingerprint.exception
|
||||||
|
}
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
package app.revanced.patches.photomath.misc.unlockplus.annotations
|
|
||||||
|
|
||||||
import app.revanced.patcher.annotation.Compatibility
|
|
||||||
import app.revanced.patcher.annotation.Package
|
|
||||||
|
|
||||||
@Compatibility([Package("com.microblink.photomath", arrayOf("8.20.0"))])
|
|
||||||
@Target(AnnotationTarget.CLASS)
|
|
||||||
internal annotation class UnlockPlusCompatibilty
|
|
||||||
@@ -1,37 +1,30 @@
|
|||||||
package app.revanced.patches.photomath.misc.unlockplus.patch
|
package app.revanced.patches.photomath.misc.unlockplus.patch
|
||||||
|
|
||||||
import app.revanced.extensions.exception
|
import app.revanced.extensions.exception
|
||||||
import app.revanced.patcher.annotation.Description
|
import app.revanced.patcher.annotation.Compatibility
|
||||||
import app.revanced.patcher.annotation.Name
|
import app.revanced.patcher.annotation.Name
|
||||||
|
import app.revanced.patcher.annotation.Package
|
||||||
import app.revanced.patcher.data.BytecodeContext
|
import app.revanced.patcher.data.BytecodeContext
|
||||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
||||||
import app.revanced.patcher.patch.BytecodePatch
|
import app.revanced.patcher.patch.BytecodePatch
|
||||||
import app.revanced.patcher.patch.annotations.DependsOn
|
import app.revanced.patcher.patch.annotations.DependsOn
|
||||||
import app.revanced.patcher.patch.annotations.Patch
|
import app.revanced.patcher.patch.annotations.Patch
|
||||||
import app.revanced.patches.photomath.detection.signature.patch.SignatureDetectionPatch
|
import app.revanced.patches.photomath.detection.signature.patch.SignatureDetectionPatch
|
||||||
import app.revanced.patches.photomath.misc.unlockplus.annotations.UnlockPlusCompatibilty
|
import app.revanced.patches.photomath.misc.bookpoint.patch.EnableBookpointPatch
|
||||||
import app.revanced.patches.photomath.misc.unlockplus.fingerprints.IsPlusUnlockedFingerprint
|
import app.revanced.patches.photomath.misc.unlockplus.fingerprints.IsPlusUnlockedFingerprint
|
||||||
|
|
||||||
@Patch
|
@Patch
|
||||||
@Name("Unlock plus")
|
@Name("Unlock plus")
|
||||||
@DependsOn([SignatureDetectionPatch::class])
|
@DependsOn([SignatureDetectionPatch::class, EnableBookpointPatch::class])
|
||||||
@Description("Unlocks plus features.")
|
@Compatibility([Package("com.microblink.photomath")])
|
||||||
@UnlockPlusCompatibilty
|
|
||||||
class UnlockPlusPatch : BytecodePatch(
|
class UnlockPlusPatch : BytecodePatch(
|
||||||
listOf(
|
listOf(IsPlusUnlockedFingerprint)
|
||||||
IsPlusUnlockedFingerprint
|
|
||||||
)
|
|
||||||
) {
|
) {
|
||||||
override fun execute(context: BytecodeContext) {
|
override fun execute(context: BytecodeContext) = IsPlusUnlockedFingerprint.result?.mutableMethod?.addInstructions(
|
||||||
IsPlusUnlockedFingerprint.result?.mutableMethod?.apply {
|
0,
|
||||||
addInstructions(
|
"""
|
||||||
0,
|
const/4 v0, 0x1
|
||||||
"""
|
return v0
|
||||||
const/4 v0, 0x1
|
"""
|
||||||
return v0
|
) ?: throw IsPlusUnlockedFingerprint.exception
|
||||||
"""
|
|
||||||
)
|
|
||||||
} ?: throw IsPlusUnlockedFingerprint.exception
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,12 +1,17 @@
|
|||||||
package app.revanced.patches.reddit.customclients.infinityforreddit.api.fingerprints
|
package app.revanced.patches.reddit.customclients.infinityforreddit.api.fingerprints
|
||||||
|
|
||||||
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
|
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
|
||||||
|
import com.android.tools.smali.dexlib2.iface.ClassDef
|
||||||
|
import com.android.tools.smali.dexlib2.iface.Method
|
||||||
|
|
||||||
abstract class AbstractClientIdFingerprint(classTypeSuffix: String, methodName: String) : MethodFingerprint(
|
/**
|
||||||
strings = listOf("NOe2iKrPPzwscA"),
|
* Fingerprint for a method that has the client id hardcoded in it.
|
||||||
customFingerprint = custom@{ methodDef, classDef ->
|
* The first string in the fingerprint is the client id.
|
||||||
if (!classDef.type.endsWith(classTypeSuffix)) return@custom false
|
*
|
||||||
|
* @param customFingerprint A custom fingerprint.
|
||||||
methodDef.name == methodName
|
* @param additionalStrings Additional strings to add to the fingerprint.
|
||||||
}
|
*/
|
||||||
)
|
abstract class AbstractClientIdFingerprint(
|
||||||
|
customFingerprint: ((methodDef: Method, classDef: ClassDef) -> Boolean)? = null,
|
||||||
|
vararg additionalStrings: String
|
||||||
|
) : MethodFingerprint(strings = listOf("NOe2iKrPPzwscA", *additionalStrings), customFingerprint = customFingerprint)
|
||||||
@@ -1,6 +1,3 @@
|
|||||||
package app.revanced.patches.reddit.customclients.infinityforreddit.api.fingerprints
|
package app.revanced.patches.reddit.customclients.infinityforreddit.api.fingerprints
|
||||||
|
|
||||||
object GetHttpBasicAuthHeaderFingerprint : AbstractClientIdFingerprint(
|
object GetHttpBasicAuthHeaderFingerprint : AbstractClientIdFingerprint(additionalStrings = arrayOf("Authorization"))
|
||||||
"APIUtils;",
|
|
||||||
"getHttpBasicAuthHeader"
|
|
||||||
)
|
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
package app.revanced.patches.reddit.customclients.infinityforreddit.api.fingerprints
|
package app.revanced.patches.reddit.customclients.infinityforreddit.api.fingerprints
|
||||||
|
|
||||||
object LoginActivityOnCreateFingerprint : AbstractClientIdFingerprint(
|
object LoginActivityOnCreateFingerprint : AbstractClientIdFingerprint(custom@{ methodDef, classDef ->
|
||||||
"LoginActivity;",
|
methodDef.name == "onCreate" && classDef.type.endsWith("LoginActivity;")
|
||||||
"onCreate"
|
})
|
||||||
)
|
|
||||||
@@ -17,7 +17,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
|||||||
@Description("Spoofs the client in order to allow logging in. " +
|
@Description("Spoofs the client in order to allow logging in. " +
|
||||||
"The OAuth application type has to be \"Installed app\" " +
|
"The OAuth application type has to be \"Installed app\" " +
|
||||||
"and the redirect URI has to be set to \"infinity://localhost\".")
|
"and the redirect URI has to be set to \"infinity://localhost\".")
|
||||||
@Compatibility([Package("ml.docilealligator.infinityforreddit")])
|
@Compatibility([Package("ml.docilealligator.infinityforreddit", arrayOf("5.4.0", "5.4.1", "5.4.2", "6.0.1", "6.0.2", "6.0.4", "6.0.6", "6.1.1"))])
|
||||||
class SpoofClientPatch : AbstractSpoofClientPatch(
|
class SpoofClientPatch : AbstractSpoofClientPatch(
|
||||||
"infinity://localhost",
|
"infinity://localhost",
|
||||||
Options,
|
Options,
|
||||||
@@ -25,6 +25,7 @@ class SpoofClientPatch : AbstractSpoofClientPatch(
|
|||||||
) {
|
) {
|
||||||
override fun List<MethodFingerprintResult>.patchClientId(context: BytecodeContext) {
|
override fun List<MethodFingerprintResult>.patchClientId(context: BytecodeContext) {
|
||||||
forEach {
|
forEach {
|
||||||
|
// First is index of the clientId string.
|
||||||
val clientIdIndex = it.scanResult.stringsScanResult!!.matches.first().index
|
val clientIdIndex = it.scanResult.stringsScanResult!!.matches.first().index
|
||||||
it.mutableMethod.apply {
|
it.mutableMethod.apply {
|
||||||
val oAuthClientIdRegister = getInstruction<OneRegisterInstruction>(clientIdIndex).registerA
|
val oAuthClientIdRegister = getInstruction<OneRegisterInstruction>(clientIdIndex).registerA
|
||||||
@@ -38,4 +39,4 @@ class SpoofClientPatch : AbstractSpoofClientPatch(
|
|||||||
}
|
}
|
||||||
|
|
||||||
companion object Options : AbstractSpoofClientPatch.Options.SpoofClientOptionsContainer()
|
companion object Options : AbstractSpoofClientPatch.Options.SpoofClientOptionsContainer()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package app.revanced.patches.twitch.ad.audio.annotations
|
|||||||
import app.revanced.patcher.annotation.Compatibility
|
import app.revanced.patcher.annotation.Compatibility
|
||||||
import app.revanced.patcher.annotation.Package
|
import app.revanced.patcher.annotation.Package
|
||||||
|
|
||||||
@Compatibility([Package("tv.twitch.android.app", arrayOf("15.4.1"))])
|
@Compatibility([Package("tv.twitch.android.app", arrayOf("15.4.1", "16.1.0"))])
|
||||||
@Target(AnnotationTarget.CLASS)
|
@Target(AnnotationTarget.CLASS)
|
||||||
internal annotation class AudioAdsCompatibility
|
internal annotation class AudioAdsCompatibility
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package app.revanced.patches.twitch.ad.embedded.annotations
|
|||||||
import app.revanced.patcher.annotation.Compatibility
|
import app.revanced.patcher.annotation.Compatibility
|
||||||
import app.revanced.patcher.annotation.Package
|
import app.revanced.patcher.annotation.Package
|
||||||
|
|
||||||
@Compatibility([Package("tv.twitch.android.app", arrayOf("15.4.1"))])
|
@Compatibility([Package("tv.twitch.android.app", arrayOf("15.4.1", "16.1.0"))])
|
||||||
@Target(AnnotationTarget.CLASS)
|
@Target(AnnotationTarget.CLASS)
|
||||||
internal annotation class EmbeddedAdsCompatibility
|
internal annotation class EmbeddedAdsCompatibility
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package app.revanced.patches.twitch.ad.video.annotations
|
|||||||
import app.revanced.patcher.annotation.Compatibility
|
import app.revanced.patcher.annotation.Compatibility
|
||||||
import app.revanced.patcher.annotation.Package
|
import app.revanced.patcher.annotation.Package
|
||||||
|
|
||||||
@Compatibility([Package("tv.twitch.android.app", arrayOf("15.4.1"))])
|
@Compatibility([Package("tv.twitch.android.app", arrayOf("15.4.1", "16.1.0"))])
|
||||||
@Target(AnnotationTarget.CLASS)
|
@Target(AnnotationTarget.CLASS)
|
||||||
internal annotation class VideoAdsCompatibility
|
internal annotation class VideoAdsCompatibility
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package app.revanced.patches.twitch.chat.antidelete.annotations
|
|||||||
import app.revanced.patcher.annotation.Compatibility
|
import app.revanced.patcher.annotation.Compatibility
|
||||||
import app.revanced.patcher.annotation.Package
|
import app.revanced.patcher.annotation.Package
|
||||||
|
|
||||||
@Compatibility([Package("tv.twitch.android.app", arrayOf("15.4.1"))])
|
@Compatibility([Package("tv.twitch.android.app", arrayOf("15.4.1", "16.1.0"))])
|
||||||
@Target(AnnotationTarget.CLASS)
|
@Target(AnnotationTarget.CLASS)
|
||||||
internal annotation class ShowDeletedMessagesCompatibility
|
internal annotation class ShowDeletedMessagesCompatibility
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,6 @@ package app.revanced.patches.twitch.chat.autoclaim.annotations
|
|||||||
import app.revanced.patcher.annotation.Compatibility
|
import app.revanced.patcher.annotation.Compatibility
|
||||||
import app.revanced.patcher.annotation.Package
|
import app.revanced.patcher.annotation.Package
|
||||||
|
|
||||||
@Compatibility([Package("tv.twitch.android.app", arrayOf("15.4.1"))])
|
@Compatibility([Package("tv.twitch.android.app", arrayOf("15.4.1", "16.1.0"))])
|
||||||
@Target(AnnotationTarget.CLASS)
|
@Target(AnnotationTarget.CLASS)
|
||||||
internal annotation class AutoClaimChannelPointsCompatibility
|
internal annotation class AutoClaimChannelPointsCompatibility
|
||||||
@@ -11,6 +11,7 @@ import app.revanced.patcher.patch.BytecodePatch
|
|||||||
import app.revanced.patcher.patch.annotations.DependsOn
|
import app.revanced.patcher.patch.annotations.DependsOn
|
||||||
import app.revanced.patcher.patch.annotations.Patch
|
import app.revanced.patcher.patch.annotations.Patch
|
||||||
import app.revanced.patcher.util.smali.ExternalLabel
|
import app.revanced.patcher.util.smali.ExternalLabel
|
||||||
|
import app.revanced.patches.shared.settings.preference.impl.InputType
|
||||||
import app.revanced.patches.shared.settings.preference.impl.StringResource
|
import app.revanced.patches.shared.settings.preference.impl.StringResource
|
||||||
import app.revanced.patches.shared.settings.preference.impl.SwitchPreference
|
import app.revanced.patches.shared.settings.preference.impl.SwitchPreference
|
||||||
import app.revanced.patches.shared.settings.preference.impl.TextPreference
|
import app.revanced.patches.shared.settings.preference.impl.TextPreference
|
||||||
@@ -185,12 +186,6 @@ class HideLayoutComponentsPatch : BytecodePatch(
|
|||||||
StringResource("revanced_hide_image_shelf_summary_on", "Image shelf is hidden"),
|
StringResource("revanced_hide_image_shelf_summary_on", "Image shelf is hidden"),
|
||||||
StringResource("revanced_hide_image_shelf_summary_off", "Image shelf is shown")
|
StringResource("revanced_hide_image_shelf_summary_off", "Image shelf is shown")
|
||||||
),
|
),
|
||||||
SwitchPreference(
|
|
||||||
"revanced_hide_audio_track_button",
|
|
||||||
StringResource("revanced_hide_audio_track_button_title", "Hide audio track button"),
|
|
||||||
StringResource("revanced_hide_audio_track_button_on", "Audio track button is hidden"),
|
|
||||||
StringResource("revanced_hide_audio_track_button_off", "Audio track button is shown")
|
|
||||||
),
|
|
||||||
SwitchPreference(
|
SwitchPreference(
|
||||||
"revanced_hide_latest_posts_ads",
|
"revanced_hide_latest_posts_ads",
|
||||||
StringResource("revanced_hide_latest_posts_ads_title", "Hide latest posts"),
|
StringResource("revanced_hide_latest_posts_ads_title", "Hide latest posts"),
|
||||||
@@ -240,8 +235,9 @@ class HideLayoutComponentsPatch : BytecodePatch(
|
|||||||
StringResource("revanced_custom_filter_strings_title", "Custom filter"),
|
StringResource("revanced_custom_filter_strings_title", "Custom filter"),
|
||||||
StringResource(
|
StringResource(
|
||||||
"revanced_custom_filter_strings_summary",
|
"revanced_custom_filter_strings_summary",
|
||||||
"Filter components by their name separated by a comma"
|
"List of components to filter separated by new line"
|
||||||
)
|
),
|
||||||
|
inputType = InputType.TEXT_MULTI_LINE
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user