Skip to content

Commit

Permalink
Merge branch 'crimera:dev' into dev
Browse files Browse the repository at this point in the history
  • Loading branch information
riolove1 authored Oct 9, 2024
2 parents 9f58616 + 12f20c6 commit 2dd3eb8
Show file tree
Hide file tree
Showing 18 changed files with 482 additions and 164 deletions.
77 changes: 77 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,80 @@
## [1.41.0](https://github.com/crimera/piko/compare/v1.40.0...v1.41.0) (2024-10-03)

### Bug Fixes

* **Twitter:** Fix `Hide nudge button` patch ([d7572fe](https://github.com/crimera/piko/commit/d7572feac66d44f0fe669073ee09bc09637adb9a))

### Features

* **Twitter:** Added `Hide followed by context` patch ([261e1d0](https://github.com/crimera/piko/commit/261e1d0156702a4a72105b430d50e59e88795198))

## [1.41.0-dev.1](https://github.com/crimera/piko/compare/v1.40.0...v1.41.0-dev.1) (2024-09-27)

### Bug Fixes

* **Twitter:** Fix `Hide nudge button` patch ([d7572fe](https://github.com/crimera/piko/commit/d7572feac66d44f0fe669073ee09bc09637adb9a))

### Features

* **Twitter:** Added `Hide followed by context` patch ([261e1d0](https://github.com/crimera/piko/commit/261e1d0156702a4a72105b430d50e59e88795198))

## [1.40.0](https://github.com/crimera/piko/compare/v1.39.3...v1.40.0) (2024-09-25)

### Features

* **Twitter:** Added `Hide nudge button` patch ([ad27484](https://github.com/crimera/piko/commit/ad27484f4cc0d727cf07cb4f202c8ddd6b582d67))

## [1.40.0-dev.1](https://github.com/crimera/piko/compare/v1.39.3...v1.40.0-dev.1) (2024-09-25)

### Features

* **Twitter:** Added `Hide nudge button` patch ([ad27484](https://github.com/crimera/piko/commit/ad27484f4cc0d727cf07cb4f202c8ddd6b582d67))

## [1.39.3](https://github.com/crimera/piko/compare/v1.39.2...v1.39.3) (2024-09-11)

### Updates

* **Translations:** Update translations ([9686863](https://github.com/crimera/piko/commit/968686390263fa700488deb5d87085470267c7cf))

## [1.39.2](https://github.com/crimera/piko/compare/v1.39.1...v1.39.2) (2024-09-09)

### Bug Fixes

* **Twitter:** fix `Control video auto scroll` in 10.57 ([b7ae78c](https://github.com/crimera/piko/commit/b7ae78cd61b2f75d266e3fe3d57c5c21cd798e79))
* **Twitter:** fix `Enable app icon settings` patch ([c2b6f79](https://github.com/crimera/piko/commit/c2b6f79b5c833c2441432b2511374361318e5507))
* **Twitter:** fix video entity hook in `10.58` ([e8a833d](https://github.com/crimera/piko/commit/e8a833d2123b92a40caf68b4f6798e822a6d1737))

## [1.39.2-dev.2](https://github.com/crimera/piko/compare/v1.39.2-dev.1...v1.39.2-dev.2) (2024-09-09)

### Bug Fixes

* **Twitter:** fix `Enable app icon settings` patch ([c2b6f79](https://github.com/crimera/piko/commit/c2b6f79b5c833c2441432b2511374361318e5507))
* **Twitter:** fix video entity hook in `10.58` ([e8a833d](https://github.com/crimera/piko/commit/e8a833d2123b92a40caf68b4f6798e822a6d1737))

## [1.39.2-dev.1](https://github.com/crimera/piko/compare/v1.39.1...v1.39.2-dev.1) (2024-09-05)

### Bug Fixes

* **Twitter:** fix `Control video auto scroll` in 10.57 ([b7ae78c](https://github.com/crimera/piko/commit/b7ae78cd61b2f75d266e3fe3d57c5c21cd798e79))

## [1.39.1](https://github.com/crimera/piko/compare/v1.39.0...v1.39.1) (2024-08-30)

### Bug Fixes

* Remove duplicate strings ([94c6642](https://github.com/crimera/piko/commit/94c66422e0ced2cbdfd820dfee60cedd2c68e636))

## [1.39.0](https://github.com/crimera/piko/compare/v1.38.0...v1.39.0) (2024-08-30)

### Features

* **Twitter:** Custom deeplinks ([325a281](https://github.com/crimera/piko/commit/325a281225b1379b310d8ba14629bdbae0b314e5))

### Updates

* **Twitter:** Added strings ([fad9b1a](https://github.com/crimera/piko/commit/fad9b1a9fd79b164c713fe35b61bad8ed3d9373b))
* **Twitter:** Change Quick Btn path ([7febdf6](https://github.com/crimera/piko/commit/7febdf612212ba61638fd818121c8cc4b9db8ed8))
* **Twitter:** Updated strings ([3cb159e](https://github.com/crimera/piko/commit/3cb159e57d66e22b7c2f638e5d0b7422a4ef2a10))

## [1.39.0-dev.1](https://github.com/crimera/piko/compare/v1.38.0...v1.39.0-dev.1) (2024-08-25)

### Features
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
org.gradle.parallel = true
org.gradle.caching = true
kotlin.code.style = official
version = 1.39.0-dev.1
version = 1.41.0
2 changes: 1 addition & 1 deletion patches.json

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
package crimera.patches.twitter.premium.customAppIcon

import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.extensions.InstructionExtensions.getInstructions
import app.revanced.patcher.extensions.InstructionExtensions.removeInstruction
import app.revanced.patcher.fingerprint.MethodFingerprint
Expand All @@ -9,6 +12,7 @@ import app.revanced.patcher.patch.PatchException
import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch
import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
import crimera.patches.twitter.misc.settings.SettingsPatch
import crimera.patches.twitter.misc.settings.fingerprints.SettingsStatusLoadFingerprint

Expand All @@ -33,13 +37,14 @@ object CustomiseAppIcon:BytecodePatch(
val result = CustomiseAppIconFingerprint.result
?:throw PatchException("CustomiseAppIconFingerprint not found")

val methods = result.mutableClass.methods.last()
val loc = methods.getInstructions().last { it.opcode == Opcode.CONST }.location.index
val method = result.mutableClass.methods.last()
val loc = method.getInstructions().last { it.opcode == Opcode.MOVE_RESULT }.location.index

//removes toast condition
methods.removeInstruction(loc)
methods.removeInstruction(loc-1)
val reg = method.getInstruction<OneRegisterInstruction>(loc).registerA

method.addInstruction(loc+1,"""
const v$reg, 0x0
""".trimIndent())

SettingsStatusLoadFingerprint.enableSettings("customAppIcon")
//end
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,51 +9,55 @@ import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.PatchException
import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch
import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
import crimera.patches.twitter.misc.settings.SettingsPatch
import crimera.patches.twitter.misc.settings.fingerprints.SettingsStatusLoadFingerprint

object EnableVidAutoAdvancePatchFingerprint: MethodFingerprint(
strings = listOf("immersive_video_auto_advance_duration_threshold")
object EnableVidAutoAdvancePatchFingerprint : MethodFingerprint(
strings = listOf("immersive_video_auto_advance_duration_threshold"),
)


@Patch(
name = "Control video auto scroll",
description = "Control video auto scroll in immersive view",
compatiblePackages = [CompatiblePackage("com.twitter.android")],
dependencies = [SettingsPatch::class],
use = true
use = true,
)
@Suppress("unused")
class EnableVidAutoAdvancePatch : BytecodePatch(
setOf(EnableVidAutoAdvancePatchFingerprint,SettingsStatusLoadFingerprint)
) {
class EnableVidAutoAdvancePatch :
BytecodePatch(
setOf(EnableVidAutoAdvancePatchFingerprint, SettingsStatusLoadFingerprint),
) {
override fun execute(context: BytecodeContext) {
val result = EnableVidAutoAdvancePatchFingerprint.result
?: throw PatchException("EnableVidAutoAdvancePatchFingerprint not found")
val result =
EnableVidAutoAdvancePatchFingerprint.result
?: throw PatchException("EnableVidAutoAdvancePatchFingerprint not found")

var strLoc: Int = 0
result.scanResult.stringsScanResult!!.matches.forEach{ match ->
result.scanResult.stringsScanResult!!.matches.forEach { match ->
val str = match.string
if(str.contains("immersive_video_auto_advance_duration_threshold")){
if (str.contains("immersive_video_auto_advance_duration_threshold")) {
strLoc = match.index
return@forEach
}
}
if(strLoc==0){
if (strLoc == 0) {
throw PatchException("hook not found")
}

val method = result.mutableMethod
val instructions = method.getInstructions()
val loc = strLoc+2

val loc = instructions.first { it.opcode == Opcode.MOVE_RESULT && it.location.index > strLoc }.location.index
val reg = method.getInstruction<OneRegisterInstruction>(loc).registerA
method.addInstruction(loc,"""
method.addInstruction(
loc,
"""
invoke-static {}, ${SettingsPatch.PREF_DESCRIPTOR};->enableVidAutoAdvance()I
""".trimIndent())
""".trimIndent(),
)

SettingsStatusLoadFingerprint.enableSettings("enableVidAutoAdvance")
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
package crimera.patches.twitter.timeline.hideNudgeButtons

import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.extensions.InstructionExtensions.getInstructions
import app.revanced.patcher.fingerprint.MethodFingerprint
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.PatchException
import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patcher.util.smali.ExternalLabel
import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction23x
import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction35c
import crimera.patches.twitter.misc.settings.SettingsPatch
import crimera.patches.twitter.misc.settings.fingerprints.SettingsStatusLoadFingerprint

object HideNudgeButtonPatchFingerprint : MethodFingerprint(
strings = listOf("viewDelegate", "viewModel"),
customFingerprint = {_, classDef ->
classDef.type.endsWith("FollowNudgeButtonViewDelegateBinder;")
}
)

@Patch(
name = "Hide nudge button",
description = "Hides follow/subscribe/follow back buttons on posts",
compatiblePackages = [CompatiblePackage("com.twitter.android")],
dependencies = [SettingsPatch::class],
use = true,
)
@Suppress("unused")
object HideNudgeButtonPatch:BytecodePatch(
setOf(HideNudgeButtonPatchFingerprint,SettingsStatusLoadFingerprint)
) {
const val HOOK_DESCRIPTOR =
"invoke-static {}, ${SettingsPatch.PREF_DESCRIPTOR};->hideNudgeButton()Z"

override fun execute(context: BytecodeContext) {
val result = HideNudgeButtonPatchFingerprint.result
?: throw PatchException("HideNudgeButtonPatchFingerprint not found")

val method = result.mutableMethod
val instructions = method.getInstructions()

val dummyRegIndex = instructions.first { it.opcode == Opcode.APUT_OBJECT}.location.index
val dummyReg = method.getInstruction<Instruction23x>(dummyRegIndex).registerC

method.addInstructionsWithLabels(dummyRegIndex+2,"""
$HOOK_DESCRIPTOR
move-result v$dummyReg
if-eqz v$dummyReg, :piko
const/16 v$dummyReg, 0x8
invoke-virtual {p1, v$dummyReg}, Landroidx/appcompat/widget/AppCompatButton;->setVisibility(I)V
""".trimIndent(), ExternalLabel("piko",instructions.first { it.opcode == Opcode.INVOKE_STATIC && it.location.index > dummyRegIndex })
)

SettingsStatusLoadFingerprint.enableSettings("hideNudgeButton")

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package crimera.patches.twitter.timeline.hideSocialProof

import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.extensions.InstructionExtensions.getInstructions
import app.revanced.patcher.fingerprint.MethodFingerprint
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.PatchException
import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patcher.util.smali.ExternalLabel
import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction23x
import crimera.patches.twitter.misc.settings.SettingsPatch
import crimera.patches.twitter.misc.settings.fingerprints.SettingsStatusLoadFingerprint

object HideSocialProofPatchFingerprint : MethodFingerprint(

customFingerprint = {methodDef, classDef ->
classDef.type.endsWith("SocialProofView;") && methodDef.name == "setSocialProofData"
}
)

@Patch(
name = "Hide followed by context",
description = "Hides followed by context under profile",
compatiblePackages = [CompatiblePackage("com.twitter.android")],
dependencies = [SettingsPatch::class],
use = true,
)
@Suppress("unused")
object HideSocialProofPatch:BytecodePatch(
setOf(HideSocialProofPatchFingerprint,SettingsStatusLoadFingerprint)
) {
const val HOOK_DESCRIPTOR =
"invoke-static {}, ${SettingsPatch.PREF_DESCRIPTOR};->hideSocialProof()Z"

override fun execute(context: BytecodeContext) {
val result = HideSocialProofPatchFingerprint.result
?: throw PatchException("HideSocialProofPatchFingerprint not found")

val method = result.mutableMethod
val instructions = method.getInstructions()



method.addInstructionsWithLabels(0,"""
$HOOK_DESCRIPTOR
move-result v0
if-eqz v0, :piko
return-void
""".trimIndent(), ExternalLabel("piko",instructions.first { it.opcode == Opcode.CONST_4})
)

SettingsStatusLoadFingerprint.enableSettings("hideSocialProof")

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,8 @@ import app.revanced.patcher.fingerprint.MethodFingerprint
object JsonCardInstanceDataFingerprint: MethodFingerprint(
strings = listOf(
"binding_values"
)
),
customFingerprint = {methodDef, classDef ->
methodDef.name == "parseField" && classDef.type.endsWith("JsonCardInstanceData\$\$JsonObjectMapper;")
}
)
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ object VideoEntityPatch:BytecodePatch(
val clsName = fr.definingClass
val mName = fr.name

val cls = context.findClass(clsName)!!.mutableClass
val cls = context.findClass { it.type == clsName }!!.mutableClass
val m2 = cls.methods.find { it.name == mName }
val i2 = m2!!.getInstructions()

Expand Down
2 changes: 2 additions & 0 deletions src/main/resources/twitter/settings/values-ar/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,8 @@
<string name="piko_pref_hide_hidden_replies">الردود المخفية</string>
<string name="piko_pref_force_hd">فرض جودة HD</string>
<string name="piko_pref_force_hd_desc">سيتم تشغيل الفيديوهات بأعلى جودة دائمًا</string>
<string name="piko_pref_hide_nudge_button">إخفاء زر الدفع</string>
<string name="piko_pref_hide_nudge_button_desc">يخفي أزرار المتابعة/الاشتراك/المتابعة مرة أخرى على المنشورات</string>

<string name="piko_title_customisation">التخصيص</string>
<string name="piko_pref_customisation_profiletabs">إخفاء علامات تبويب الملف الشخصي</string>
Expand Down
12 changes: 8 additions & 4 deletions src/main/resources/twitter/settings/values-es/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -60,10 +60,6 @@
<string name="piko_pref_custom_share_domain_desc">El dominio a utilizar al compartir tweets</string>
<string name="piko_pref_browser_chooser">Usar selector de navegador</string>
<string name="piko_pref_browser_chooser_desc">Abrir enlaces con el selector de navegador en lugar de usar el navegador de la aplicación</string>
<string name="piko_pref_feature_flags">Flags de características</string>
<string name="piko_pref_edit_flag_title">Editar flag</string>
<string name="piko_pref_add_flag_title">Añadir flag</string>
<string name="piko_pref_search_flags">Buscar flags</string>
<string name="piko_pref_show_sensitive_media">Mostrar material delicado</string>
<string name="piko_pref_selectable_text">Texto seleccionable</string>
<string name="piko_pref_clear_tracking_params">Limpiar parámetros de seguimiento</string>
Expand All @@ -75,6 +71,12 @@
<string name="piko_pref_quick_settings">Habilitar ajustes rápidos</string>
<string name="piko_pref_quick_settings_summary">Añade un botón de ajustes rápidos en la barra lateral</string>

<string name="piko_title_feature_flags">Flags de características</string>
<string name="piko_pref_feature_flags">Añadir Flags de características</string>
<string name="piko_pref_edit_flag_title">Editar flag</string>
<string name="piko_pref_add_flag_title">Añadir flag</string>
<string name="piko_pref_search_flags">Buscar flags</string>

<string name="piko_title_timeline">Cronología</string>
<string name="piko_pref_disable_auto_timeline_scroll">Deshabilitar desplazamiento automático en la cronología al iniciar</string>
<string name="piko_pref_hide_live_threads">Hilos en vivo</string>
Expand All @@ -95,6 +97,8 @@
<string name="piko_pref_hide_hidden_replies">Respuestas ocultas</string>
<string name="piko_pref_force_hd">forzar videos en HD</string>
<string name="piko_pref_force_hd_desc">Los videos se reproducirán siempre en la máxima calidad</string>
<string name="piko_pref_hide_nudge_button">Ocultar botón de recordatorio</string>
<string name="piko_pref_hide_nudge_button_desc">Oculta los botones de seguir/suscribirse/seguir de vuelta en las publicaciones</string>

<string name="piko_title_customisation">Personalización</string>
<string name="piko_pref_customisation_profiletabs">Pestañas del perfil a ocultar</string>
Expand Down
Loading

0 comments on commit 2dd3eb8

Please sign in to comment.