Skip to content

Commit

Permalink
GrindrPlus: Initial update for 25.0.0
Browse files Browse the repository at this point in the history
Change-Id: I0094e26a19b6afa72dcfb59b6efc8ca8210264e4
  • Loading branch information
R0rt1z2 committed Jan 23, 2025
1 parent a182d2d commit 0cffbfd
Show file tree
Hide file tree
Showing 19 changed files with 39 additions and 39 deletions.
2 changes: 1 addition & 1 deletion app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ plugins {
}

android {
val grindrVersions = listOf("24.19.0")
val grindrVersions = listOf("25.0.0")

namespace = "com.grindrplus"
compileSdk = 34
Expand Down
6 changes: 3 additions & 3 deletions app/src/main/java/com/grindrplus/GrindrPlus.kt
Original file line number Diff line number Diff line change
Expand Up @@ -63,9 +63,9 @@ object GrindrPlus {
var currentActivity: Activity? = null
private set

private val userAgent = "a5.t"
private val userSession = "com.grindrapp.android.storage.b"
private val deviceInfo = "j3.t"
private val userAgent = "l5.v"
private val userSession = "V8.T"
private val deviceInfo = "u3.t"
private val profileRepo = "com.grindrapp.android.persistence.repository.ProfileRepo"
private val ioScope = CoroutineScope(Dispatchers.IO)

Expand Down
6 changes: 3 additions & 3 deletions app/src/main/java/com/grindrplus/core/http/Interceptor.kt
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@ class Interceptor(
Interceptor {
private fun modifyRequest(originalRequest: Request): Request {
try {
val isLoggedIn = invokeMethodSafe(userSession, "p") as Boolean
val authTokenFlow = invokeMethodSafe(userSession, "t")
val isLoggedIn = invokeMethodSafe(userSession, "o") as Boolean
val authTokenFlow = invokeMethodSafe(userSession, "s")
val authToken = invokeMethodSafe(authTokenFlow, "getValue") as String
val roles = invokeMethodSafe(userSession, "y") as String
val roles = invokeMethodSafe(userSession, "x") as String
val userAgent = invokeMethodSafe(userAgent, "a") as String
val deviceInfoLazy = getFieldSafe(deviceInfo, "c") as Any
val lDeviceInfo = invokeMethodSafe(deviceInfoLazy, "getValue") as String
Expand Down
6 changes: 3 additions & 3 deletions app/src/main/java/com/grindrplus/hooks/AntiBlock.kt
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ class AntiBlock : Hook(
"Notifies you when someone blocks or unblocks you"
) {
private var myProfileId: Long = 0
private val inboxFragmentV2DeleteConversations = "na.b0\$a"
private val inboxFragmentV2DeleteConversations = "Ma.v0\$a"

override fun init() {
findClass(inboxFragmentV2DeleteConversations)
Expand All @@ -34,7 +34,7 @@ class AntiBlock : Hook(
GrindrPlus.blockCaller = ""
}

findClass("k4.c").hook("b", HookStage.BEFORE) { param ->
findClass("v4.c").hook("b", HookStage.BEFORE) { param ->
if (!GrindrPlus.shouldTriggerAntiblock) {
val whitelist = listOf(
"inboxFragmentV2DeleteConversations",
Expand All @@ -46,7 +46,7 @@ class AntiBlock : Hook(
} else {
if (myProfileId == 0L) {
myProfileId = (getObjectField(instanceManager
.getInstance("com.grindrapp.android.storage.b"),
.getInstance("V8.T"),
"p") as String).toLong()
}

Expand Down
2 changes: 1 addition & 1 deletion app/src/main/java/com/grindrplus/hooks/ChatTerminal.kt
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ class ChatTerminal : Hook(
"Chat terminal",
"Create a chat terminal to execute commands"
) {
private val chatMessageHandler = "r4.b"
private val chatMessageHandler = "C4.b"

override fun init() {
findClass(chatMessageHandler).hook("m", HookStage.BEFORE) { param ->
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/java/com/grindrplus/hooks/DisableAnalytics.kt
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ class DisableAnalytics : Hook(
"Disable analytics",
"Disable Grindr analytics (data collection)"
) {
private val analyticsRestService = "K4.a"
private val analyticsRestService = "V4.a"

override fun init() {
val analyticsRestServiceClass = findClass(analyticsRestService)
Expand Down
6 changes: 3 additions & 3 deletions app/src/main/java/com/grindrplus/hooks/DisableBoosting.kt
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ class DisableBoosting : Hook(
"Disable boosting",
"Get rid of all upsells related to boosting"
) {
private val drawerProfileUiState = "ca.e\$a"
private val radarUiModel = "X7.a\$a"
private val drawerProfileUiState = "Ba.e\$a"
private val radarUiModel = "n8.a\$a"
private val fabUiModel = "com.grindrapp.android.boost2.presentation.model.FabUIModel"
private val boostStateClass =
"com.grindrapp.android.ui.drawer.model.MicrosDrawerItemState\$Unavailable"
Expand Down Expand Up @@ -47,7 +47,7 @@ class DisableBoosting : Hook(

// the two anonymous functions that get called to invoke the annoying tooltip
// respectively: showRadarTooltip.<anonymous> and showTapsAndViewedMePopup
listOf("ma.o0", "ma.q0", "ma.r0", "ma.p0").forEach {
listOf("La.n0", "La.p0", "La.q0", "La.o0").forEach {
findClass(it).hook("invoke", HookStage.BEFORE) { param ->
param.setResult(null)
}
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/java/com/grindrplus/hooks/DisableUpdates.kt
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ class DisableUpdates : Hook(
"https://raw.githubusercontent.com/R0rt1z2/GrindrPlus/master/version.json"
private val appUpdateInfo = "com.google.android.play.core.appupdate.AppUpdateInfo"
private val appUpdateZzm = "com.google.android.play.core.appupdate.zzm"
private val appUpgradeManager = "e6.j"
private val appUpgradeManager = "s6.j"
private val appConfiguration = "com.grindrapp.android.base.config.AppConfiguration"
private var versionCode: Int = 0
private var versionName: String = ""
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/java/com/grindrplus/hooks/EmptyCalls.kt
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ class EmptyCalls : Hook(
"Video calls",
"Allow video calls on empty chats"
) {
private val individualChatNavViewModel = "D4.V"
private val individualChatNavViewModel = "O4.W"
private val createVideoCallResponse = "com.grindrapp.android.chat.api.model.CreateVideoCallResponse"
private val videoCallInfoResponse = "com.grindrapp.android.chat.api.model.VideoCallInfoResponse"

Expand Down
12 changes: 6 additions & 6 deletions app/src/main/java/com/grindrplus/hooks/EnableUnlimited.kt
Original file line number Diff line number Diff line change
Expand Up @@ -9,22 +9,22 @@ class EnableUnlimited : Hook(
"Enable unlimited",
"Enable Grindr Unlimited features"
) {
private val userSession = "com.grindrapp.android.storage.b"
private val userSession = "V8.T"
private val subscribeToInterstitialsList = listOf(
"x4.y\$a" // Chat ($1)
"I4.d0\$a" // Chat ($1)
)
override fun init() {
val userSessionClass = findClass(userSession)

userSessionClass.hook( // hasFeature()
"h", HookStage.BEFORE // done
"v", HookStage.BEFORE // done
) { param ->
val disallowedFeatures = setOf("DisableScreenshot")
param.setResult(param.arg(0, String::class.java) !in disallowedFeatures)
}

userSessionClass.hook( // isNoXtraUpsell()
"l", HookStage.BEFORE
"k", HookStage.BEFORE
) { param ->
param.setResult(true)
}
Expand All @@ -36,13 +36,13 @@ class EnableUnlimited : Hook(
}

userSessionClass.hook( // isFree()
"x", HookStage.BEFORE
"w", HookStage.BEFORE
) { param ->
param.setResult(false)
}

userSessionClass.hook( // isFreeXtra()
"u", HookStage.BEFORE
"t", HookStage.BEFORE
) { param ->
param.setResult(false)
}
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/java/com/grindrplus/hooks/FeatureGranting.kt
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ class FeatureGranting : Hook(
"Feature granting",
"Grant all Grindr features"
) {
private val featureFlags = "A5.g"
private val featureFlags = "M5.h"
private val upsellsV8Model = "com.grindrapp.android.model.UpsellsV8"
private val insertsModel = "com.grindrapp.android.model.Inserts"
private val settingDistanceVisibilityViewModel =
Expand Down
4 changes: 2 additions & 2 deletions app/src/main/java/com/grindrplus/hooks/LocalSavedPhrases.kt
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ class LocalSavedPhrases : Hook(
"Local saved phrases",
"Save unlimited phrases locally"
) {
private val phrasesRestService = "v3.k"
private val createSuccessResult = "L6.a\$b"
private val phrasesRestService = "G3.k"
private val createSuccessResult = "Z6.a\$b"
private val retrofit = "retrofit2.Retrofit"
private val chatRestService = "com.grindrapp.android.chat.data.datasource.api.service.ChatRestService"
private val addSavedPhraseResponse =
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/java/com/grindrplus/hooks/OnlineIndicator.kt
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ class OnlineIndicator : Hook(
"Online indicator",
"Customize online indicator duration"
) {
val utils = "Za.c0"
val utils = "zb.b0"

override fun init() {
findClass(utils) // shouldShowOnlineIndicator()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ class PersistentIncognito : Hook(
"Persistent incognito",
"Makes incognito mode persistent"
) {
private val meRestService = "v3.q"
private val meRestService = "G3.q"
private val grindrSettings = "com.grindrapp.android.model.GrindrSettings"
private val drawerProfileFragment = "com.grindrapp.android.ui.drawer.DrawerProfileFragment"

Expand Down
4 changes: 2 additions & 2 deletions app/src/main/java/com/grindrplus/hooks/QuickBlock.kt
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ class QuickBlock : Hook(
"Quick block",
"Ability to block users quickly"
) {
private val blockViewModel = "S9.b"
private val blockViewModel = "qa.b"
private val profileViewHolder = "com.grindrapp.android.ui.profileV2.g"
override fun init() {
findClass(profileViewHolder).hook("F", HookStage.AFTER) { param ->
findClass(profileViewHolder).hook("G", HookStage.AFTER) { param ->
val arg0 = param.arg(0) as Any
val profileViewState = param.args().getOrNull(1) ?: return@hook
val profileId = getObjectField(profileViewState, "profileId") as String
Expand Down
8 changes: 4 additions & 4 deletions app/src/main/java/com/grindrplus/hooks/ReverseRadarTabs.kt
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ class ReverseRadarTabs : Hook(

private inline fun <reified T : Any> getJavaClass() = T::class.java

private val radarTabs = "W7.c"
private val radarTabs = "m8.b"
private val radarFragment = "com.grindrapp.android.radar.presentation.ui.RadarFragment"

override fun init() {
Expand Down Expand Up @@ -73,7 +73,7 @@ class ReverseRadarTabs : Hook(
//This LiveData observer consumes the integer values from a flow and makes the ViewPager scroll to that position
//This is used to make the ViewPager scroll to the taps page upon clicking such notification.
//However, this is based on the ordinal values again, so we have to reverse the values, too.
findClass("K9.H0")
findClass("Ma.B")
.hook("onChanged", HookStage.BEFORE) { param ->
//Check whether this observer is responsible for handling the ViewPager position
if (getIntField(param.thisObject(), "b") != 1) return@hook
Expand All @@ -84,9 +84,9 @@ class ReverseRadarTabs : Hook(
//The modified LiveData observer will no longer scroll to the first position when receiving a value 0.
//In order to still show the new first tab (TapsFragment) by default, we need to set the initial value to the last index,
//so that the LiveData observer reverts it back to 0.
findClass("ma.t0")
findClass("La.s0")
.hookConstructor(HookStage.AFTER) { param ->
val stateFlow = getObjectField(param.thisObject(), "I0")
val stateFlow = getObjectField(param.thisObject(), "J0")
//Set initial position to the last page, so that the onChanged hook of the LiveData observer reverts it to the new first page
callMethod(stateFlow, "setValue", Integer.valueOf(radarTabs.size - 1))
}
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/java/com/grindrplus/hooks/UnlimitedAlbums.kt
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ class UnlimitedAlbums : Hook(
"Unlimited albums",
"Allow to be able to view unlimited albums"
) {
private val albumsService = "w3.a"
private val albumsService = "H3.a"

override fun init() {
val albumsService = findClass(albumsService)
Expand Down
4 changes: 2 additions & 2 deletions app/src/main/java/com/grindrplus/utils/RetrofitUtils.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ import java.lang.reflect.Method
import java.lang.reflect.Proxy

object RetrofitUtils {
const val FAIL_CLASS_NAME = "L6.a\$a"
const val SUCCESS_CLASS_NAME = "L6.a\$b"
const val FAIL_CLASS_NAME = "Z6.a\$a"
const val SUCCESS_CLASS_NAME = "Z6.a\$b"
const val SUCCESS_VALUE_NAME = "a"

fun findPOSTMethod(clazz: Class<*>, value: String): Method? {
Expand Down
4 changes: 2 additions & 2 deletions version.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"versionName": "24.19.0",
"versionCode": 132462
"versionName": "25.0.0",
"versionCode": 133286
}

0 comments on commit 0cffbfd

Please sign in to comment.