Compare commits

..

22 Commits

Author SHA1 Message Date
semantic-release-bot
1f5c1d48a2 chore(release): 2.191.0-dev.33 [skip ci]
# [2.191.0-dev.33](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.32...v2.191.0-dev.33) (2023-10-04)

### Bug Fixes

* **TikTok - Hide ads:** Constrain to last working version ([7d9ddc9](7d9ddc9203))
2023-10-04 15:32:53 +00:00
oSumAtrIX
7d9ddc9203 fix(TikTok - Hide ads): Constrain to last working version 2023-10-04 17:30:00 +02:00
oSumAtrIX
0e0ea5d064 build: Bump dependencies 2023-10-04 04:19:22 +02:00
semantic-release-bot
4ba1ddde8f chore(release): 2.191.0-dev.32 [skip ci]
# [2.191.0-dev.32](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.31...v2.191.0-dev.32) (2023-10-03)

### Bug Fixes

* **Sync for Reddit:** Do not throw an error when not necessary ([cd54466](cd544669b2))

### Features

* **Sync for Reddit - Client spoof:** Restore upload functionality ([5b09ef7](5b09ef79a8))
* Use properties file for `Client spoof` patches ([7d50a7b](7d50a7b178))
2023-10-03 00:20:53 +00:00
oSumAtrIX
5b09ef79a8 feat(Sync for Reddit - Client spoof): Restore upload functionality 2023-10-03 02:14:42 +02:00
oSumAtrIX
cd544669b2 fix(Sync for Reddit): Do not throw an error when not necessary 2023-10-03 01:59:12 +02:00
oSumAtrIX
7d50a7b178 feat: Use properties file for Client spoof patches 2023-10-03 01:59:11 +02:00
semantic-release-bot
e153e97ed2 chore(release): 2.191.0-dev.31 [skip ci]
# [2.191.0-dev.31](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.30...v2.191.0-dev.31) (2023-10-02)

### Bug Fixes

* **YouTube - SponsorBlock:** Adjust import/export UI text ([#3063](https://github.com/ReVanced/revanced-patches/issues/3063)) ([224142b](224142ba19))
2023-10-02 21:30:48 +00:00
LisoUseInAIKyrios
224142ba19 fix(YouTube - SponsorBlock): Adjust import/export UI text (#3063) 2023-10-03 01:27:43 +04:00
oSumAtrIX
8c5239d6b5 build: Bump dependencies 2023-10-02 16:25:13 +02:00
semantic-release-bot
43533f6c09 chore(release): 2.191.0-dev.30 [skip ci]
# [2.191.0-dev.30](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.29...v2.191.0-dev.30) (2023-10-02)

### Bug Fixes

* Add hooks to existing hook set ([f77d743](f77d743a92))
* **Google Recorder - Remove device restrictions:** Clarify limitation ([5138197](5138197358))

### Features

* **YouTube - Hide layout components:** Hide search result shelf header ([2e7ab38](2e7ab38a3d))
2023-10-02 14:24:57 +00:00
oSumAtrIX
f77d743a92 fix: Add hooks to existing hook set
Previously, the hooks were just combined to a new set and returned, without adding them to original mutable set.
2023-10-02 16:21:03 +02:00
oSumAtrIX
27a346d74b refactor: Move classes to correct path 2023-10-02 16:21:03 +02:00
oSumAtrIX
5138197358 fix(Google Recorder - Remove device restrictions): Clarify limitation 2023-10-02 16:21:02 +02:00
oSumAtrIX
2e7ab38a3d feat(YouTube - Hide layout components): Hide search result shelf header 2023-10-02 16:21:02 +02:00
semantic-release-bot
47e1bcbafa chore(release): 2.191.0-dev.29 [skip ci]
# [2.191.0-dev.29](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.28...v2.191.0-dev.29) (2023-10-01)

### Features

* **TikTok - Hide ads:** Constrain to last working version ([d83ef1e](d83ef1ed59))
2023-10-01 22:57:25 +00:00
oSumAtrIX
d83ef1ed59 feat(TikTok - Hide ads): Constrain to last working version 2023-10-02 00:54:29 +02:00
semantic-release-bot
3f397dabf7 chore(release): 2.191.0-dev.28 [skip ci]
# [2.191.0-dev.28](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.27...v2.191.0-dev.28) (2023-10-01)

### Bug Fixes

* **YouTube - Hide "Load more" button:** Use correct names ([be335ad](be335adeb9))
* **YouTube - Hide shorts components:** Fix hiding navigation bar ([1d23dcb](1d23dcb3ea))
2023-10-01 22:45:12 +00:00
oSumAtrIX
1d23dcb3ea fix(YouTube - Hide shorts components): Fix hiding navigation bar 2023-10-02 00:41:51 +02:00
oSumAtrIX
be335adeb9 fix(YouTube - Hide "Load more" button): Use correct names 2023-10-02 00:41:51 +02:00
semantic-release-bot
7422617dc5 chore(release): 2.191.0-dev.27 [skip ci]
# [2.191.0-dev.27](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.26...v2.191.0-dev.27) (2023-10-01)

### Features

* **Tumblr:** Add `Disable in-app update` patch ([#3058](https://github.com/ReVanced/revanced-patches/issues/3058)) ([b078878](b07887800b))
2023-10-01 17:36:51 +00:00
Temm
b07887800b feat(Tumblr): Add Disable in-app update patch (#3058)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-10-01 19:34:03 +02:00
27 changed files with 210 additions and 72 deletions

View File

@@ -1,3 +1,65 @@
# [2.191.0-dev.33](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.32...v2.191.0-dev.33) (2023-10-04)
### Bug Fixes
* **TikTok - Hide ads:** Constrain to last working version ([56e45a6](https://github.com/ReVanced/revanced-patches/commit/56e45a60a405b5382e1ef6f7bcd5de570c7c52ef))
# [2.191.0-dev.32](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.31...v2.191.0-dev.32) (2023-10-03)
### Bug Fixes
* **Sync for Reddit:** Do not throw an error when not necessary ([ef644e4](https://github.com/ReVanced/revanced-patches/commit/ef644e48018a90429108779b7419299c4f43e4ff))
### Features
* **Sync for Reddit - Client spoof:** Restore upload functionality ([9344c8a](https://github.com/ReVanced/revanced-patches/commit/9344c8a067127b0fb4ee8599c5dcfcb206b4ee07))
* Use properties file for `Client spoof` patches ([e5d548c](https://github.com/ReVanced/revanced-patches/commit/e5d548c6427fb54968f26d706ff16274e72f700a))
# [2.191.0-dev.31](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.30...v2.191.0-dev.31) (2023-10-02)
### Bug Fixes
* **YouTube - SponsorBlock:** Adjust import/export UI text ([#3063](https://github.com/ReVanced/revanced-patches/issues/3063)) ([4e5513e](https://github.com/ReVanced/revanced-patches/commit/4e5513e973f5de7c9f6330dfe7a0744e91f305b4))
# [2.191.0-dev.30](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.29...v2.191.0-dev.30) (2023-10-02)
### Bug Fixes
* Add hooks to existing hook set ([5655067](https://github.com/ReVanced/revanced-patches/commit/5655067f28d010f3a7a6d91b09ac984eee162031))
* **Google Recorder - Remove device restrictions:** Clarify limitation ([094f57b](https://github.com/ReVanced/revanced-patches/commit/094f57b601d746079c43fd5c8834e3e6be07f946))
### Features
* **YouTube - Hide layout components:** Hide search result shelf header ([f4eda8c](https://github.com/ReVanced/revanced-patches/commit/f4eda8c8d111cc856d5878a32ddca3f7c2e0df31))
# [2.191.0-dev.29](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.28...v2.191.0-dev.29) (2023-10-01)
### Features
* **TikTok - Hide ads:** Constrain to last working version ([516e8a1](https://github.com/ReVanced/revanced-patches/commit/516e8a14c0e113f9f4c0dda9be223cf3e929eb3a))
# [2.191.0-dev.28](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.27...v2.191.0-dev.28) (2023-10-01)
### Bug Fixes
* **YouTube - Hide "Load more" button:** Use correct names ([569c3cd](https://github.com/ReVanced/revanced-patches/commit/569c3cde9875b807c9116322ca324f69b5fa0218))
* **YouTube - Hide shorts components:** Fix hiding navigation bar ([2de51e6](https://github.com/ReVanced/revanced-patches/commit/2de51e65f05be8a6364dfdfe9cd36e8fed5737f6))
# [2.191.0-dev.27](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.26...v2.191.0-dev.27) (2023-10-01)
### Features
* **Tumblr:** Add `Disable in-app update` patch ([#3058](https://github.com/ReVanced/revanced-patches/issues/3058)) ([5e8076b](https://github.com/ReVanced/revanced-patches/commit/5e8076b330cabe57130233adacdf84b56f010217))
# [2.191.0-dev.26](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.25...v2.191.0-dev.26) (2023-10-01)

View File

@@ -1,4 +1,4 @@
org.gradle.parallel = true
org.gradle.caching = true
kotlin.code.style = official
version = 2.191.0-dev.26
version = 2.191.0-dev.33

View File

@@ -1,6 +1,6 @@
[versions]
revanced-patcher = "15.0.1"
revanced-patch-annotation-processor = "15.0.1"
revanced-patcher = "16.0.0"
revanced-patch-annotation-processor = "16.0.0"
ksp = "1.9.0-1.0.11"
smali = "3.0.3"
guava = "32.1.2-jre"

File diff suppressed because one or more lines are too long

View File

@@ -13,7 +13,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
@Patch(
name = "Remove device restrictions",
description = "Removes restrictions from using the app on any device.",
description = "Removes restrictions from using the app on any device. Requires mounting patched app over original.",
compatiblePackages = [CompatiblePackage("com.google.android.apps.recorder")]
)
@Suppress("unused")

View File

@@ -7,8 +7,10 @@ import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprintResult
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.PatchException
import app.revanced.patcher.patch.options.PatchOptionException
import app.revanced.patcher.patch.options.types.StringPatchOption.Companion.stringPatchOption
import java.io.File
import java.util.*
abstract class AbstractSpoofClientPatch(
private val redirectUri: String,
@@ -24,32 +26,65 @@ abstract class AbstractSpoofClientPatch(
"client-id",
null,
"OAuth client ID",
"The Reddit OAuth client ID."
"The Reddit OAuth client ID. " +
"You can get your client ID from https://www.reddit.com/prefs/apps. " +
"The application type has to be \"Installed app\" " +
"and the redirect URI has to be set to \"$redirectUri\".",
true
)
override fun execute(context: BytecodeContext) {
if (clientId == null) {
// Ensure device runs Android.
try {
Class.forName("android.os.Environment")
} catch (e: ClassNotFoundException) {
throw PatchException("No client ID provided")
val requiredOptions = options.values.filter { it.required }
val isAndroidButRequiredOptionsUnset = try {
Class.forName("android.os.Environment")
requiredOptions.any { it.value == null }
} catch (_: ClassNotFoundException) {
false
}
if (isAndroidButRequiredOptionsUnset) {
val properties = Properties()
val propertiesFile = File(
Environment.getExternalStorageDirectory(),
"revanced_client_spoof_${redirectUri.hashCode()}.properties"
)
if (propertiesFile.exists()) {
properties.load(propertiesFile.inputStream())
// Set options from properties file.
properties.forEach { (name, value) ->
try {
options[name.toString()] = value.toString().trim()
} catch (_: PatchOptionException.PatchOptionNotFoundException) {
// Ignore unknown options.
}
}
} else {
options.keys.forEach { properties.setProperty(it, "") }
properties.store(
propertiesFile.outputStream(),
"Options for the ReVanced \"Client Spoof\" patch. Required options: " +
requiredOptions.joinToString { it.key }
)
}
File(Environment.getExternalStorageDirectory(), "reddit_client_id_revanced.txt").also {
if (it.exists()) return@also
requiredOptions.filter { it.value == null }.let { requiredUnsetOptions ->
if (requiredUnsetOptions.isEmpty()) return@let
val error = """
In order to use this patch, you need to provide a client ID.
You can do that by creating a file at ${it.absolutePath} with the client ID as its content.
Alternatively, you can provide the client ID using patch options.
You can get your client ID from https://www.reddit.com/prefs/apps.
The application type has to be "Installed app" and the redirect URI has to be set to "$redirectUri".
In order to use this patch, you need to provide the following options:
${requiredUnsetOptions.joinToString("\n") { "${it.key}: ${it.description}" }}
A properties file has been created at ${propertiesFile.absolutePath}.
Please fill in the required options before using this patch.
""".trimIndent()
throw PatchException(error)
}.let { clientId = it.readText().trim() }
}
}
fun List<MethodFingerprint>?.executePatch(
@@ -85,5 +120,6 @@ abstract class AbstractSpoofClientPatch(
*
* @param context The current [BytecodeContext].
*/
open fun List<MethodFingerprintResult>.patchMiscellaneous(context: BytecodeContext) { }
// Not every client needs to patch miscellaneous things.
open fun List<MethodFingerprintResult>.patchMiscellaneous(context: BytecodeContext) {}
}

View File

@@ -14,9 +14,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
@Patch(
name = "Spoof client",
description = "Spoofs the client in order to allow logging in. " +
"The OAuth application type has to be \"Installed app\" " +
"and the redirect URI has to be set to \"http://baconreader.com/auth\".",
description = "Restores functionality of the app by using custom client ID's.",
compatiblePackages = [
CompatiblePackage("com.onelouder.baconreader"),
CompatiblePackage("com.onelouder.baconreader.premium")

View File

@@ -10,9 +10,7 @@ import app.revanced.patches.reddit.customclients.boostforreddit.api.fingerprints
@Patch(
name = "Spoof client",
description = "Spoofs the client in order to allow logging in. " +
"The OAuth application type has to be \"Installed app\" " +
"and the redirect URI has to be set to \"http://rubenmayayo.com\".",
description = "Restores functionality of the app by using custom client ID's.",
compatiblePackages = [CompatiblePackage("com.rubenmayayo.reddit")]
)
@Suppress("unused")

View File

@@ -13,9 +13,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
@Patch(
name = "Spoof client",
description = "Spoofs the client in order to allow logging in. " +
"The OAuth application type has to be \"Installed app\" " +
"and the redirect URI has to be set to \"infinity://localhost\".",
description = "Restores functionality of the app by using custom client ID's.",
compatiblePackages = [
CompatiblePackage(
"ml.docilealligator.infinityforreddit", [

View File

@@ -12,9 +12,7 @@ import app.revanced.patches.reddit.customclients.joeyforreddit.detection.piracy.
@Patch(
name = "Spoof client",
description = "Spoofs the client in order to allow logging in. " +
"The OAuth application type has to be \"Installed app\" " +
"and the redirect URI has to be set to \"https://127.0.0.1:65023/authorize_callback\".",
description = "Restores functionality of the app by using custom client ID's.",
dependencies = [DisablePiracyDetectionPatch::class],
compatiblePackages = [
CompatiblePackage("o.o.joey"),

View File

@@ -16,9 +16,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
@Patch(
name = "Spoof client",
description = "Spoofs the client in order to allow logging in. " +
"The OAuth application type has to be \"Installed app\" " +
"and the redirect URI has to be set to \"redditisfun://auth\".",
description = "Restores functionality of the app by using custom client ID's.",
compatiblePackages = [
CompatiblePackage("com.andrewshu.android.reddit"),
CompatiblePackage("com.andrewshu.android.redditdonation")

View File

@@ -13,9 +13,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
@Patch(
name = "Spoof client",
description = "Spoofs the client in order to allow logging in. " +
"The OAuth application type has to be \"Installed app\" " +
"and the redirect URI has to be set to \"dbrady://relay\".",
description = "Restores functionality of the app by using custom client ID's.",
compatiblePackages = [
CompatiblePackage("free.reddit.news"),
CompatiblePackage("reddit.news")

View File

@@ -10,9 +10,7 @@ import app.revanced.patches.reddit.customclients.boostforreddit.api.fingerprints
@Patch(
name = "Spoof client",
description = "Spoofs the client in order to allow logging in. " +
"The OAuth application type has to be \"Installed app\" " +
"and the redirect URI has to be set to \"http://www.ccrama.me\".",
description = "Restores functionality of the app by using custom client ID's.",
compatiblePackages = [CompatiblePackage("me.ccrama.redditslide")]
)
@Suppress("unused")

View File

@@ -12,6 +12,7 @@ import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patches.reddit.customclients.AbstractSpoofClientPatch
import app.revanced.patches.reddit.customclients.syncforreddit.api.fingerprints.GetAuthorizationStringFingerprint
import app.revanced.patches.reddit.customclients.syncforreddit.api.fingerprints.GetBearerTokenFingerprint
import app.revanced.patches.reddit.customclients.syncforreddit.api.fingerprints.ImgurImageAPIFingerprint
import app.revanced.patches.reddit.customclients.syncforreddit.detection.piracy.DisablePiracyDetectionPatch
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
@@ -20,9 +21,7 @@ import java.util.*
@Patch(
name = "Spoof client",
description = "Spoofs the client in order to allow logging in. " +
"The OAuth application type has to be \"Installed app\" " +
"and the redirect URI has to be set to \"http://redditsync/auth\".",
description = "Restores functionality of the app by using custom client ID's.",
dependencies = [DisablePiracyDetectionPatch::class],
compatiblePackages = [
CompatiblePackage("com.laurencedawson.reddit_sync"),
@@ -32,7 +31,9 @@ import java.util.*
)
@Suppress("unused")
object SpoofClientPatch : AbstractSpoofClientPatch(
"http://redditsync/auth", listOf(GetAuthorizationStringFingerprint)
"http://redditsync/auth",
clientIdFingerprints = listOf(GetAuthorizationStringFingerprint),
miscellaneousFingerprints = listOf(ImgurImageAPIFingerprint)
) {
override fun List<MethodFingerprintResult>.patchClientId(context: BytecodeContext) {
forEach { fingerprintResult ->
@@ -68,4 +69,14 @@ object SpoofClientPatch : AbstractSpoofClientPatch(
}
}
}
// Use the non-commercial Imgur API endpoint.
override fun List<MethodFingerprintResult>.patchMiscellaneous(context: BytecodeContext) = first().let {
val apiUrlIndex = it.scanResult.stringsScanResult!!.matches.first().index
it.mutableMethod.replaceInstruction(
apiUrlIndex,
"const-string v1, \"https://api.imgur.com/3/image\""
)
}
}

View File

@@ -0,0 +1,9 @@
package app.revanced.patches.reddit.customclients.syncforreddit.api.fingerprints
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
object ImgurImageAPIFingerprint : MethodFingerprint(
strings = listOf(
"https://imgur-apiv3.p.rapidapi.com/3/image",
)
)

View File

@@ -1,6 +1,5 @@
package app.revanced.patches.reddit.customclients.syncforreddit.detection.piracy
import app.revanced.extensions.exception
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patcher.patch.BytecodePatch
@@ -10,7 +9,7 @@ import app.revanced.patches.reddit.customclients.syncforreddit.detection.piracy.
@Patch(description = "Disables detection of modified versions.",)
object DisablePiracyDetectionPatch : BytecodePatch(setOf(PiracyDetectionFingerprint)) {
override fun execute(context: BytecodeContext) {
// Do not return an error if the fingerprint is not resolved.
// Do not throw an error if the fingerprint is not resolved.
// This is fine because new versions of the target app do not need this patch.
PiracyDetectionFingerprint.result?.mutableMethod?.apply {
addInstruction(
@@ -19,6 +18,6 @@ object DisablePiracyDetectionPatch : BytecodePatch(setOf(PiracyDetectionFingerpr
return-void
"""
)
} ?: throw PiracyDetectionFingerprint.exception
}
}
}

View File

@@ -16,8 +16,8 @@ import com.android.tools.smali.dexlib2.iface.reference.FieldReference
@Patch(
name = "Hide ads",
compatiblePackages = [
CompatiblePackage("com.ss.android.ugc.trill"),
CompatiblePackage("com.zhiliaoapp.musically")
CompatiblePackage("com.ss.android.ugc.trill", ["30.8.4"]),
CompatiblePackage("com.zhiliaoapp.musically", ["30.8.4"])
]
)
@Suppress("unused")

View File

@@ -0,0 +1,22 @@
package app.revanced.patches.tumblr.annoyances.inappupdate
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patches.tumblr.featureflags.OverrideFeatureFlagsPatch
@Patch(
name = "Disable in-app update",
description = "Disables the in-app update check and update prompt.",
dependencies = [OverrideFeatureFlagsPatch::class],
compatiblePackages = [CompatiblePackage("com.tumblr")]
)
@Suppress("unused")
object DisableInAppUpdatePatch : BytecodePatch() {
override fun execute(context: BytecodeContext) {
// Before checking for updates using Google Play core AppUpdateManager, the value of this feature flag is checked.
// If this flag is false or the last update check was today and no update check is performed.
OverrideFeatureFlagsPatch.addOverride("inAppUpdate", "false")
}
}

View File

@@ -70,6 +70,21 @@ object HideLayoutComponentsPatch : BytecodePatch(
StringResource("revanced_hide_timed_reactions_summary_on", "Timed reactions are hidden"),
StringResource("revanced_hide_timed_reactions_summary_off", "Timed reactions are shown")
),
SwitchPreference(
"revanced_hide_search_result_shelf_header",
StringResource(
"revanced_hide_search_result_shelf_header_title",
"Hide search result shelf header"
),
StringResource(
"revanced_hide_search_result_shelf_header_summary_on",
"Shelf header is hidden"
),
StringResource(
"revanced_hide_search_result_shelf_header_summary_off",
"Shelf header is shown"
)
),
SwitchPreference(
"revanced_hide_channel_guidelines",
StringResource("revanced_hide_channel_guidelines_title", "Hide channel guidelines"),

View File

@@ -11,7 +11,7 @@ import app.revanced.patches.youtube.layout.hide.loadmorebutton.fingerprints.Hide
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
@Patch(
name = "Hide load more button",
name = "Hide \"Load more\" button",
description = "Hides the button under videos that loads similar videos.",
dependencies = [HideLoadMoreButtonResourcePatch::class],
compatiblePackages = [

View File

@@ -21,9 +21,9 @@ object HideLoadMoreButtonResourcePatch : ResourcePatch() {
SettingsPatch.PreferenceScreen.LAYOUT.addPreferences(
SwitchPreference(
"revanced_hide_load_more_button",
StringResource("revanced_hide_load_more_button_title", "Hide Load More button"),
StringResource("revanced_hide_load_more_button_summary_on", "Load More button is hidden"),
StringResource("revanced_hide_load_more_button_summary_off", "Load More button is shown")
StringResource("revanced_hide_load_more_button_title", "Hide \"Load More\" button"),
StringResource("revanced_hide_load_more_button_summary_on", "Button is hidden"),
StringResource("revanced_hide_load_more_button_summary_off", "Button is shown")
)
)

View File

@@ -98,10 +98,10 @@ object HideShortsComponentsPatch : BytecodePatch(
SetPivotBarVisibilityFingerprint.result!!.let { result ->
result.mutableMethod.apply {
val checkCastIndex = result.scanResult.patternScanResult!!.endIndex
val viewRegister = getInstruction<OneRegisterInstruction>(checkCastIndex).registerA
val insertIndex = result.scanResult.patternScanResult!!.endIndex
val viewRegister = getInstruction<OneRegisterInstruction>(insertIndex - 1).registerA
addInstruction(
checkCastIndex + 1,
insertIndex,
"sput-object v$viewRegister, $FILTER_CLASS_DESCRIPTOR->pivotBar:" +
"Lcom/google/android/libraries/youtube/rendering/ui/pivotbar/PivotBar;"
)

View File

@@ -1,19 +1,16 @@
package app.revanced.patches.youtube.layout.hide.shorts.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
object SetPivotBarVisibilityFingerprint : MethodFingerprint(
returnType = "V",
accessFlags = AccessFlags.PRIVATE or AccessFlags.FINAL,
parameters = listOf("Z"),
opcodes = listOf(
Opcode.IGET_OBJECT,
Opcode.INVOKE_VIRTUAL,
Opcode.MOVE_RESULT,
Opcode.IF_EQZ,
Opcode.RETURN_VOID,
Opcode.IGET_OBJECT,
Opcode.INVOKE_VIRTUAL,
Opcode.MOVE_RESULT_OBJECT,
Opcode.CHECK_CAST,
Opcode.IF_EQZ
)
)

View File

@@ -38,7 +38,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
object SpoofAppVersionPatch : BytecodePatch(
setOf(SpoofAppVersionFingerprint)
) {
private const val INTEGRATIONS_CLASS_DESCRIPTOR = "Lapp/revanced/integrations/patches/SpoofAppVersionPatch"
private const val INTEGRATIONS_CLASS_DESCRIPTOR = "Lapp/revanced/integrations/patches/spoof/SpoofAppVersionPatch;"
override fun execute(context: BytecodeContext) {
SettingsPatch.PreferenceScreen.LAYOUT.addPreferences(
@@ -87,7 +87,7 @@ object SpoofAppVersionPatch : BytecodePatch(
mutableMethod.addInstructions(
insertIndex,
"""
invoke-static {v$buildOverrideNameRegister}, $INTEGRATIONS_CLASS_DESCRIPTOR;->getYouTubeVersionOverride(Ljava/lang/String;)Ljava/lang/String;
invoke-static {v$buildOverrideNameRegister}, $INTEGRATIONS_CLASS_DESCRIPTOR->getYouTubeVersionOverride(Ljava/lang/String;)Ljava/lang/String;
move-result-object v$buildOverrideNameRegister
"""
)

View File

@@ -88,7 +88,7 @@ object SpoofSignaturePatch : BytecodePatch(
)
// Hook the player parameters.
PlayerResponseMethodHookPatch + PlayerResponseMethodHookPatch.Hook.ProtoBufferParameter(
PlayerResponseMethodHookPatch += PlayerResponseMethodHookPatch.Hook.ProtoBufferParameter(
"$INTEGRATIONS_CLASS_DESCRIPTOR->spoofParameter(Ljava/lang/String;)Ljava/lang/String;"
)

View File

@@ -120,7 +120,7 @@ object VideoIdPatch : BytecodePatch(
* @param methodDescriptor which method to call. Params have to be `Ljava/lang/String;`
*/
fun hookPlayerResponseVideoId(methodDescriptor: String) {
PlayerResponseMethodHookPatch + PlayerResponseMethodHookPatch.Hook.VideoId(
PlayerResponseMethodHookPatch += PlayerResponseMethodHookPatch.Hook.VideoId(
methodDescriptor
)
}

View File

@@ -53,7 +53,8 @@
<string name="sb_api_url_changed">API URL changed</string>
<string name="sb_settings_ie">Import/Export settings</string>
<string name="sb_settings_copy">Copy</string>
<string name="sb_settings_ie_sum">Your SponsorBlock JSON configuration that can be imported/exported to ReVanced and other SponsorBlock platforms. This includes your private user id. Be sure to share this wisely</string>
<string name="sb_settings_ie_sum">Your SponsorBlock JSON configuration that can be imported/exported to ReVanced and other SponsorBlock platforms. %s</string>
<string name="sb_settings_ie_sum_warning">This includes your private user id. Be sure to share this wisely</string>
<string name="sb_settings_import_successful">Settings imported successfully</string>
<string name="sb_settings_import_failed">Failed to import: %s</string>
<string name="sb_settings_export_failed">Failed to export: %s</string>