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",
|
"name": "Hide Streak Restore",
|
||||||
"description": "Hides the Restore button in the friend feed"
|
"description": "Hides the Restore button in the friend feed"
|
||||||
},
|
},
|
||||||
"hide_quick_add_friend_feed": {
|
"hide_quick_add_suggestions": {
|
||||||
"name": "Hide Quick Add in Friend Feed",
|
"name": "Hide Quick Add Suggestions",
|
||||||
"description": "Hides the Quick Add section in the friend feed"
|
"description": "Removes quick add friend suggestions"
|
||||||
},
|
},
|
||||||
"hide_story_suggestions": {
|
"hide_story_suggestions": {
|
||||||
"name": "Hide Story Suggestions",
|
"name": "Hide Story Suggestions",
|
||||||
@ -1264,7 +1264,6 @@
|
|||||||
"hide_map_reactions": "Remove Map Reactions"
|
"hide_map_reactions": "Remove Map Reactions"
|
||||||
},
|
},
|
||||||
"hide_story_suggestions": {
|
"hide_story_suggestions": {
|
||||||
"hide_friend_suggestions": "Hide friend suggestions",
|
|
||||||
"hide_suggested_friend_stories": "Hide suggested friend stories",
|
"hide_suggested_friend_stories": "Hide suggested friend stories",
|
||||||
"hide_my_stories": "Hide My Stories"
|
"hide_my_stories": "Hide My Stories"
|
||||||
},
|
},
|
||||||
|
@ -40,8 +40,8 @@ class UserInterfaceTweaks : ConfigContainer() {
|
|||||||
val streakExpirationInfo = boolean("streak_expiration_info") { requireRestart() }
|
val streakExpirationInfo = boolean("streak_expiration_info") { requireRestart() }
|
||||||
val hideFriendFeedEntry = boolean("hide_friend_feed_entry") { requireRestart() }
|
val hideFriendFeedEntry = boolean("hide_friend_feed_entry") { requireRestart() }
|
||||||
val hideStreakRestore = boolean("hide_streak_restore") { requireRestart() }
|
val hideStreakRestore = boolean("hide_streak_restore") { requireRestart() }
|
||||||
val hideQuickAddFriendFeed = boolean("hide_quick_add_friend_feed") { requireRestart() }
|
val hideQuickAddSuggestions = boolean("hide_quick_add_suggestions") { requireRestart() }
|
||||||
val hideStorySuggestions = multiple("hide_story_suggestions", "hide_friend_suggestions", "hide_suggested_friend_stories", "hide_my_stories") { requireRestart() }
|
val hideStorySuggestions = multiple("hide_story_suggestions", "hide_suggested_friend_stories", "hide_my_stories") { requireRestart() }
|
||||||
val hideUiComponents = multiple("hide_ui_components",
|
val hideUiComponents = multiple("hide_ui_components",
|
||||||
"hide_voice_record_button",
|
"hide_voice_record_button",
|
||||||
"hide_stickers_button",
|
"hide_stickers_button",
|
||||||
|
@ -102,7 +102,7 @@ class FeatureManager(
|
|||||||
FriendFeedMessagePreview(),
|
FriendFeedMessagePreview(),
|
||||||
HideStreakRestore(),
|
HideStreakRestore(),
|
||||||
HideFriendFeedEntry(),
|
HideFriendFeedEntry(),
|
||||||
HideQuickAddFriendFeed(),
|
HideQuickAddSuggestions(),
|
||||||
CallButtonsOverride(),
|
CallButtonsOverride(),
|
||||||
SnapPreview(),
|
SnapPreview(),
|
||||||
BypassScreenshotDetection(),
|
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 viewModelString = event.prevModel.toString()
|
||||||
val isSuggestedFriend by lazy { viewModelString.startsWith("DFFriendSuggestionCardViewModel") }
|
|
||||||
val isMyStory by lazy { viewModelString.let { it.startsWith("CircularItemViewModel") && it.contains("storyId=")} }
|
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) {
|
if (hideStorySuggestions.contains("hide_my_stories") && isMyStory) {
|
||||||
removeView()
|
removeView()
|
||||||
return@subscribe
|
return@subscribe
|
||||||
|
@ -33,7 +33,6 @@ class ClassMapper(
|
|||||||
ScoreUpdateMapper(),
|
ScoreUpdateMapper(),
|
||||||
FriendRelationshipChangerMapper(),
|
FriendRelationshipChangerMapper(),
|
||||||
ViewBinderMapper(),
|
ViewBinderMapper(),
|
||||||
FriendingDataSourcesMapper(),
|
|
||||||
OperaViewerParamsMapper(),
|
OperaViewerParamsMapper(),
|
||||||
MemoriesPresenterMapper(),
|
MemoriesPresenterMapper(),
|
||||||
StreaksExpirationMapper(),
|
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
|
package me.rhunk.snapenhance.nativelib
|
||||||
|
|
||||||
data class NativeRequestData(
|
class NativeRequestData(
|
||||||
val uri: String,
|
val uri: String,
|
||||||
var buffer: ByteArray,
|
var buffer: ByteArray,
|
||||||
var canceled: Boolean = false,
|
var canceled: Boolean = false,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user