mirror of
https://github.com/rhunk/SnapEnhance.git
synced 2025-04-30 14:44:35 +02:00
feat(core): hide quick add suggestions
This commit is contained in:
parent
fffe441f68
commit
6fed85b4a6
@ -500,9 +500,9 @@
|
||||
"name": "Hide Streak Restore",
|
||||
"description": "Hides the Restore button in the friend feed"
|
||||
},
|
||||
"hide_quick_add_friend_feed": {
|
||||
"name": "Hide Quick Add in Friend Feed",
|
||||
"description": "Hides the Quick Add section in the friend feed"
|
||||
"hide_quick_add_suggestions": {
|
||||
"name": "Hide Quick Add Suggestions",
|
||||
"description": "Removes quick add friend suggestions"
|
||||
},
|
||||
"hide_story_suggestions": {
|
||||
"name": "Hide Story Suggestions",
|
||||
@ -1264,7 +1264,6 @@
|
||||
"hide_map_reactions": "Remove Map Reactions"
|
||||
},
|
||||
"hide_story_suggestions": {
|
||||
"hide_friend_suggestions": "Hide friend suggestions",
|
||||
"hide_suggested_friend_stories": "Hide suggested friend stories",
|
||||
"hide_my_stories": "Hide My Stories"
|
||||
},
|
||||
|
@ -40,8 +40,8 @@ class UserInterfaceTweaks : ConfigContainer() {
|
||||
val streakExpirationInfo = boolean("streak_expiration_info") { requireRestart() }
|
||||
val hideFriendFeedEntry = boolean("hide_friend_feed_entry") { requireRestart() }
|
||||
val hideStreakRestore = boolean("hide_streak_restore") { requireRestart() }
|
||||
val hideQuickAddFriendFeed = boolean("hide_quick_add_friend_feed") { requireRestart() }
|
||||
val hideStorySuggestions = multiple("hide_story_suggestions", "hide_friend_suggestions", "hide_suggested_friend_stories", "hide_my_stories") { requireRestart() }
|
||||
val hideQuickAddSuggestions = boolean("hide_quick_add_suggestions") { requireRestart() }
|
||||
val hideStorySuggestions = multiple("hide_story_suggestions", "hide_suggested_friend_stories", "hide_my_stories") { requireRestart() }
|
||||
val hideUiComponents = multiple("hide_ui_components",
|
||||
"hide_voice_record_button",
|
||||
"hide_stickers_button",
|
||||
|
@ -102,7 +102,7 @@ class FeatureManager(
|
||||
FriendFeedMessagePreview(),
|
||||
HideStreakRestore(),
|
||||
HideFriendFeedEntry(),
|
||||
HideQuickAddFriendFeed(),
|
||||
HideQuickAddSuggestions(),
|
||||
CallButtonsOverride(),
|
||||
SnapPreview(),
|
||||
BypassScreenshotDetection(),
|
||||
|
@ -1,24 +0,0 @@
|
||||
package me.rhunk.snapenhance.core.features.impl.ui
|
||||
|
||||
import me.rhunk.snapenhance.core.features.Feature
|
||||
import me.rhunk.snapenhance.core.util.hook.HookStage
|
||||
import me.rhunk.snapenhance.core.util.hook.hookConstructor
|
||||
import me.rhunk.snapenhance.core.util.ktx.setObjectField
|
||||
import me.rhunk.snapenhance.mapper.impl.FriendingDataSourcesMapper
|
||||
|
||||
class HideQuickAddFriendFeed : Feature("HideQuickAddFriendFeed") {
|
||||
override fun init() {
|
||||
if (!context.config.userInterface.hideQuickAddFriendFeed.get()) return
|
||||
|
||||
onNextActivityCreate {
|
||||
context.mappings.useMapper(FriendingDataSourcesMapper::class) {
|
||||
classReference.getAsClass()?.hookConstructor(HookStage.AFTER) { param ->
|
||||
param.thisObject<Any>().setObjectField(
|
||||
quickAddSourceListField.get()!!,
|
||||
arrayListOf<Any>()
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
package me.rhunk.snapenhance.core.features.impl.ui
|
||||
|
||||
import me.rhunk.snapenhance.core.features.Feature
|
||||
import me.rhunk.snapenhance.core.util.hook.HookStage
|
||||
import me.rhunk.snapenhance.core.util.hook.hook
|
||||
|
||||
class HideQuickAddSuggestions : Feature("Hide Quick Add Suggestions") {
|
||||
override fun init() {
|
||||
if (!context.config.userInterface.hideQuickAddSuggestions.get()) return
|
||||
|
||||
context.androidContext.classLoader.loadClass("io.requery.android.database.sqlite.SQLiteDatabase")
|
||||
.hook("rawQueryWithFactory", HookStage.BEFORE) { param ->
|
||||
var sqlRequest = param.arg<String>(1)
|
||||
|
||||
fun patchRequest() {
|
||||
sqlRequest.lastIndexOf("WHERE").takeIf { it != -1 }?.let {
|
||||
sqlRequest = sqlRequest.substring(0, it + 5) + " 0 = 1 AND " + sqlRequest.substring(it + 5)
|
||||
param.setArg(1, sqlRequest)
|
||||
}
|
||||
}
|
||||
|
||||
if (sqlRequest.contains("SuggestedFriendPlacement")) {
|
||||
patchRequest()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -98,13 +98,8 @@ class UITweaks : Feature("UITweaks") {
|
||||
}
|
||||
|
||||
val viewModelString = event.prevModel.toString()
|
||||
val isSuggestedFriend by lazy { viewModelString.startsWith("DFFriendSuggestionCardViewModel") }
|
||||
val isMyStory by lazy { viewModelString.let { it.startsWith("CircularItemViewModel") && it.contains("storyId=")} }
|
||||
|
||||
if (hideStorySuggestions.contains("hide_friend_suggestions") && isSuggestedFriend) {
|
||||
removeView()
|
||||
return@subscribe
|
||||
}
|
||||
if (hideStorySuggestions.contains("hide_my_stories") && isMyStory) {
|
||||
removeView()
|
||||
return@subscribe
|
||||
|
@ -33,7 +33,6 @@ class ClassMapper(
|
||||
ScoreUpdateMapper(),
|
||||
FriendRelationshipChangerMapper(),
|
||||
ViewBinderMapper(),
|
||||
FriendingDataSourcesMapper(),
|
||||
OperaViewerParamsMapper(),
|
||||
MemoriesPresenterMapper(),
|
||||
StreaksExpirationMapper(),
|
||||
|
@ -1,30 +0,0 @@
|
||||
package me.rhunk.snapenhance.mapper.impl
|
||||
|
||||
import me.rhunk.snapenhance.mapper.AbstractClassMapper
|
||||
import me.rhunk.snapenhance.mapper.ext.findConstString
|
||||
import me.rhunk.snapenhance.mapper.ext.getClassName
|
||||
import me.rhunk.snapenhance.mapper.ext.searchNextFieldReference
|
||||
|
||||
class FriendingDataSourcesMapper: AbstractClassMapper("FriendingDataSources") {
|
||||
val classReference = classReference("class")
|
||||
val quickAddSourceListField = string("quickAddSourceListField")
|
||||
|
||||
init {
|
||||
mapper {
|
||||
for (classDef in classes) {
|
||||
val constructor = classDef.methods.firstOrNull { it.name == "<init>" } ?: continue
|
||||
if (constructor.parameterTypes.size < 4 || (0..3).any { constructor.parameterTypes[it] != "Ljava/util/List;" }) continue
|
||||
|
||||
val toStringMethod = classDef.methods.firstOrNull { it.name == "toString" } ?: continue
|
||||
if (toStringMethod.implementation?.findConstString("quickaddSource", contains = true) != true) continue
|
||||
|
||||
val quickAddSourceListDexField = toStringMethod.implementation?.searchNextFieldReference("quickaddSource", contains = true)
|
||||
?: continue
|
||||
|
||||
classReference.set(classDef.getClassName())
|
||||
quickAddSourceListField.set(quickAddSourceListDexField.name)
|
||||
return@mapper
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
package me.rhunk.snapenhance.nativelib
|
||||
|
||||
data class NativeRequestData(
|
||||
class NativeRequestData(
|
||||
val uri: String,
|
||||
var buffer: ByteArray,
|
||||
var canceled: Boolean = false,
|
||||
|
Loading…
x
Reference in New Issue
Block a user